API Task Limit
Generation APIs use asynchronous task processing. When a task is created successfully, the API returns a taskId. Use the result endpoint to check task status, progress, queue position, and final output.
This document explains the public task limits for API integrations, including requests per minute, unfinished jobs, and how credits are charged when multiple tasks are submitted.
Rate Limit Summary
The generation APIs do not use a fixed public requests-per-minute limit for task creation. The practical limit is based on how many unfinished jobs an account has at the same time.
| Workflow | Requests per minute | Concurrent / unfinished jobs | Credit charging |
|---|---|---|---|
| AI 3D | No fixed public RPM limit | 1 running job at a time. Additional submitted jobs wait in queue. | Charged per accepted task |
| Other generation APIs | No fixed public RPM limit | Up to 30 unfinished jobs per account and workflow | Charged per accepted task |
Unfinished jobs include both queued jobs and running jobs.
The 30-job limit is a task-count limit, not a credit package or a free quota. Each accepted generation task is charged according to that API's credit rules.
Task Status
| Status | Meaning | Counts as unfinished |
|---|---|---|
Unprocessed | The task has been accepted and is waiting to run | Yes |
Processing | The task is currently running | Yes |
Success | The task completed successfully | No |
Failed | The task failed | No |
The result endpoint may also return waitNumber, which indicates the queue position for a waiting task. When a task is running or finished, waitNumber is usually 0.
AI 3D Tasks
AI 3D tasks are processed one at a time.
You can submit multiple AI 3D tasks and each successful submission returns a taskId. However, only one AI 3D task runs at once. Additional AI 3D tasks wait until the current task finishes.
Recommended integration behavior:
- Save the returned
taskId. - Poll the result endpoint every 3-5 seconds.
- Treat
Unprocessedas waiting. - Treat
Processingas actively running. - Use
waitNumberandpercentageto show progress to your users.
Other Generation Tasks
For generation workflows other than AI 3D, each account can have up to 30 unfinished jobs for the same workflow.
This is an account-level limit. If multiple API keys are created under the same account, they share the same limit.
This does not always mean all 30 jobs are running at the exact same moment. Some jobs may be waiting and some may be running. The limit counts both.
When the account already has 30 unfinished jobs for a workflow, new task submissions for that workflow may be temporarily rejected until existing jobs finish.
| Code | Name | Meaning |
|---|---|---|
9015 | TASK_NOT_COMPLETED | The account has reached the unfinished-job limit for this workflow. Retry after existing jobs complete. |
Credits and Unfinished Jobs
Credits are deducted when a generation task is successfully created. If the task ultimately fails, the deducted credits are automatically refunded.
The unfinished-job limit does not change the credit cost of each task. If you submit multiple tasks, each accepted task is charged separately.
Examples:
| Example | Active unfinished jobs | Credits deducted at task creation |
|---|---|---|
| Submit 30 Change Furniture tasks | 30 | 30 x 1 credit = 30 credits |
Submit 30 Home Decor tasks with modelType: "Base" | 30 | 30 x 3 credits = 90 credits |
Submit 30 Home Decor tasks with modelType: "Pro" | 30 | 30 x 10 credits = 300 credits |
Submit 10 Landscaping Flash, 10 Base, and 10 Pro tasks | 30 | 10 x 1 + 10 x 3 + 10 x 10 = 140 credits |
For the full credit table, see Credits Deduction Reference.
Polling the result endpoint does not create a new generation task and does not count as an unfinished job.
Temporary Service Busy Responses
In some cases, new task submissions may be temporarily rejected because the service is busy. This can happen even if your account has fewer than 30 unfinished jobs.
| Code | Name | Meaning |
|---|---|---|
5020 | QUEUE_TASK_OVERFLOW | The service is currently busy. Retry later. |
This is temporary. Do not treat it as a permanent failure.
Recommended Client Behavior
- Save every returned
taskId. - Poll task status regularly.
- Keep a local list of unfinished jobs per account and workflow.
- Remove jobs from the unfinished list when status becomes
SuccessorFailed. - For non-AI-3D workflows, keep unfinished jobs at or below 30 before submitting more.
- If you receive
9015or5020, retry after a delay.
Suggested retry behavior:
| Situation | Recommended Action |
|---|---|
9015 TASK_NOT_COMPLETED | Wait for existing jobs from the same account and workflow to complete, then retry. |
5020 QUEUE_TASK_OVERFLOW | Wait and retry with backoff. |
Task is Unprocessed | Continue polling; the task is waiting. |
Task is Processing | Continue polling; the task is running. |
Need Higher Throughput?
If the standard 30 unfinished jobs per account and workflow limit does not meet your integration needs, please contact us at [email protected]. We can review your use case and discuss options for higher throughput or a dedicated arrangement.