ApiframeApiframe Docs

FAQ

Frequently asked questions about the Apiframe API.

General

What is Apiframe?

Apiframe provides a unified API to generate images, videos, and music using best-in-class AI models. You send one request, we handle provider routing, queuing, and delivery.

How do I get started?

  1. Sign up at console.apiframe.ai
  2. Create an API key from the dashboard
  3. Follow the Quickstart guide

Which models are available?

See the individual model pages under Images, Videos, and Music. We regularly add new models.

Authentication

How do I authenticate?

All requests require an X-API-Key header with your API key. See Authentication for details.

Can I have multiple API keys?

Yes. You can create and revoke API keys from the Apiframe console. This is useful for separating environments (development, staging, production) or tracking usage per integration.

Credits & billing

How much does each generation cost?

See the full breakdown on the Credit Costs page.

What happens if I run out of credits?

The API returns a 402 Insufficient credits error with your current balance and the cost of the requested generation. You can top up credits from the Apiframe console.

Do I get refunded if a job fails?

Yes. If a job fails for any reason (provider error, content policy violation, etc.), the full credit cost is automatically refunded to your team balance.

Jobs & results

How long do generations take?

It depends on the model and parameters:

  • Images — typically 10–60 seconds
  • Videos — typically 1–5 minutes depending on duration
  • Music — typically 30 seconds to 2 minutes

How do I get the result?

Two options:

  1. Polling — call GET /v2/jobs/:id until the status is COMPLETED
  2. Webhooks — provide a webhookUrl in your request and we'll notify you when the job is done. See Webhooks.

How long are results stored?

Generated files are stored on our CDN for 3 months. After that, they are automatically deleted. Download and store the files on your own infrastructure if you need them long-term.

Can I cancel a running job?

Not currently. Once a job is submitted and accepted, it will run to completion or fail.

Webhooks

What events can I subscribe to?

Three events: progress, completed, and failed. See Webhooks for payload formats.

Does Apiframe retry failed webhook deliveries?

No. If your endpoint returns a non-2xx status, the delivery is marked as failed. You can always fall back to polling GET /v2/jobs/:id.

Can I use HTTP (not HTTPS) for webhooks?

Yes, but we strongly recommend HTTPS in production. Webhook payloads are sent in plaintext over HTTP.

Rate limits & errors

Are there rate limits?

There are two separate limits to be aware of: how many requests you can send per minute, and how many generations can run at the same time.

1. Request rate limit (requests per minute)

This limits how frequently you can call the API, regardless of whether a request starts a generation.

Endpoint groupLimit
Generation endpoints (/v2/images, /v2/videos, /v2/music, plus edits, upscales, and actions)500 requests / minute per API key
Polling job status (GET /v2/jobs, GET /v2/jobs/:id)600 requests / minute per API key
Billing checkout5 requests / minute
Team invites20 requests / minute
LoRA training submissions30 requests / minute

If you exceed a request rate limit, the API returns 429 Too Many Requests. Check the Retry-After header for when you can retry.

2. Concurrency limit (generations running at once)

This is the limit that actually governs throughput. It caps how many of your jobs can be in the PROCESSING state simultaneously, based on your plan:

Plan tierConcurrent generations
Free2
Entry paid5
Mid10
Higher50
Top100
Enterprise200–500

Your exact limit is returned as maxConcurrentJobs from GET /v2/me — check there for the value tied to your specific plan.

When you submit more jobs than your concurrency limit allows, the extra jobs are not rejected — they are accepted, queued, and start automatically as your in-flight jobs complete. So you can safely submit a large batch at once; they will simply process maxConcurrentJobs at a time.

3. Overall volume

There is no separate daily or monthly cap on the number of generations. Total volume is bounded by your credit balance — see Credits & billing.

What does a 503 error mean?

It means the job queue is temporarily unavailable. This is rare and usually resolves within seconds. Retry with exponential backoff.

What does idempotency do?

Including an Idempotency-Key header ensures the same request isn't processed twice. If you send the same key again, the API returns the original job instead of creating a duplicate. This is useful for retrying after network failures.

On this page