Genace

How to get an AI video API key: two paths and what each costs you

There are two ways to get programmatic access to a video generation model, and the choice is usually decided by something other than price.

Path 1: direct from each vendor

Sign up with Google for Veo, Kuaishou for Kling, ByteDance for Seedance, and so on. Each gives you a key scoped to that vendor.

What this gets you: the vendor’s full parameter surface, their pricing with no intermediary, and a direct support relationship.

What it costs you, in order of how often it actually bites:

  1. N integrations, not one. Each vendor has its own auth scheme, request shape, polling model and error taxonomy. Adding a second model is a second integration, not a config change.
  2. N sets of credentials to rotate and scope. Multiply by however many environments you run.
  3. No shared ceiling. Each key has its own limits and its own bill. Nothing caps the total.

We deliberately do not reproduce each vendor’s signup steps here — they change, and a stale walkthrough is worse than no walkthrough. Go to the vendor.

Path 2: one key across models

One key, one request shape, six models behind it. What that actually changes:

Adding a model is a string. Switching from Seedance to Veo 3 is changing "model": "seedance-2.0-fast" to "model": "veo3". Same endpoint, same auth, same job semantics, same error codes.

The key has a ceiling. Access is backed by a prepaid credit balance rather than a payment method. When it hits zero, requests get 402 NOT_ENOUGH_CREDITS and stop. This matters more than it sounds if an autonomous agent is holding the key — see capping spend on a generation API key.

Failures refund. Jobs that end failed or canceled return their credits in full, so a flaky upstream does not quietly drain the balance.

Getting one

# Dashboard → API Keys → New Key. Shown once; copy it then.
export GENACE_API_KEY=sk_xxx

Verify it works without spending anything:

curl https://genace.ai/api/v1/models \
  -H "Authorization: Bearer $GENACE_API_KEY"

/v1/models requires authentication but costs no credits and touches no quota, which makes it the cheapest possible smoke test. A 200 means the key is good. Anything else is covered in MISSING_API_KEY and INVALID_API_KEY.

What the key is limited to

Ceilings apply per key, which is the point of issuing more than one:

TierRequests per minuteConcurrent jobs
Free51
Pro605

A free-tier key given to an experimental agent can hold at most one job in flight, however enthusiastically it loops.

Which path to pick

Direct is right when you are committed to one model and want its full parameter surface. Aggregated is right when you expect to change models, run several, or hand a key to something autonomous.

Neither is right because of price. The per-call difference is small compared with the cost of maintaining a second integration you did not need.

Models covered on this page

Where these facts come from

  • codebase: src/ai/api/auth.ts — key verification and the 401 paths
  • codebase: src/ai/api/quota.ts — per-tier rate and concurrency ceilings
  • codebase: src/ai/providers/registry.ts — the six live models