Stay up to date with the latest changes in our product
API keys, credit deduction with automatic refund, and per-key rate limiting land.
2026/05/29
The Better Auth apiKey plugin is now wired to /v1/* routes. Every request must arrive with Authorization: Bearer ak_…. Keys are scoped to a workspace and can be revoked from the dashboard.
The credits module now bills generation jobs at submit time and refunds on terminal failure.
USAGE row equal to the model's listed price, debit the user balance.REFUND_FAILED_JOB; balance restored.settleJob() helper so the bookkeeping is identical regardless of which path completes the job.Per-API-key sliding window limits enforced via Postgres (request_log) — no Redis dependency for the MVP. Defaults:
Week 4 starts on the public API surface: OpenAPI spec, SSE for /v1/jobs/:id/stream, and the first cut of the @genace/agent-video Claude Code skill.
Async job worker, retry/backoff, and signed webhook ingestion from fal.ai.
2026/05/28
Generation requests no longer block the HTTP request. The worker picks up queued jobs from Postgres, calls the relevant provider, and parks the job in running until the upstream finishes.
The webhook handler under /api/webhooks/fal verifies the x-fal-signature HMAC against the project secret, then writes the result to the job row and the asset table in a single transaction.
/v1/jobs/:id now returns the same shape whether the job is in queued, running, succeeded, or failed.provider_meta JSONB so we can debug upstream IDs without an extra round trip.Week 3 turns on real auth: API keys, credit deduction with refund-on-failure, and per-key rate limits.
First milestone of Genace: unified provider adapter, model registry, and the v1 generation contract.
2026/05/27
The first internal cut of Genace. Nothing user-facing yet — this release lays the plumbing every model integration relies on for the rest of the MVP.
Provider interface (submit, pollJob, parseWebhook) sits in front of every upstream. Day-one implementation targets fal.ai.registry/models.ts declares each supported model with capabilities, default params, and price-per-call. Currently registered: Seedance 2.0 fast, Kling 2.0, Veo 3 (video) and Flux Pro, Nano Banana, Ideogram v3 (image).GenerationRequest, GenerationJob, and provider-agnostic asset shapes live in src/ai/types.ts so the API, worker, and Claude Code skill all speak the same language.JobStatus enum — queued | running | succeeded | failed | cancelled.generation_job / generation_asset lands in this release via Drizzle migrations.Week 2 brings the async worker, fal.ai webhook signature verification, and the first /v1/generations endpoint behind an API key.