REST API
Responses and errors
Find HTTP status codes, error codes, and Job statuses for every API in one place.
Success responses · HTTP responses and errors · Job statuses · Job errors · Cancellation results
The HTTP status describes the request result; status in the response body describes the Job execution. A Job can be failed or canceled even when the HTTP status is 200.
Success responses
202 Accepted means the Job was accepted, not completed. 200 OK means the lookup or cancellation request was processed. Check the Job's status or the cancellation's results[].status as well. Success responses have no common top-level code field.
| HTTP status | API |
|---|---|
202 Accepted | Create a Job |
200 OK | List Jobs |
200 OK | Get Job status and results |
200 OK | Cancel Jobs |
200 OK | Cancel all Jobs |
200 OK | Get all ComfyUI node info |
200 OK | Get one ComfyUI node info |
HTTP responses and errors
Nordy request errors contain top-level code, message, and requestId fields. Include requestId when contacting support. The same code can have different meanings depending on the HTTP status and API.
{
"statusCode": 400,
"code": "INVALID_INPUT",
"message": "The request is invalid.",
"requestId": "request-id",
"details": {
"field": "prompt"
}
}This table collects the response definitions from each API reference. — means no common error code is defined for that response. 304 is not an error and has no response body. Other node info responses may use status codes and bodies returned by ComfyUI.
| HTTP status | code | Meaning / what to check | API |
|---|---|---|---|
304 | — | ETag matches; no response body. | Get all ComfyUI node info |
304 | — | When conditional requests are supported and the ETag matches, no response body is returned. | Get one ComfyUI node info |
400 | INVALID_JSON, INVALID_INPUT | Invalid JSON, prompt, or metadata. | Create a Job |
400 | MULTIPLE_AUTH_CREDENTIALS | Send only the api-key header, without login cookies. | Create a Job, List Jobs, Get Job status and results, Get all ComfyUI node info, Get one ComfyUI node info |
400 | INVALID_INPUT | limit or cursor is invalid. | List Jobs |
400 | INVALID_INPUT | id is not a 24-character hexadecimal string. | Get Job status and results |
400 | INVALID_JSON, INVALID_INPUT | Provide a valid job_ids array. | Cancel Jobs |
400 | MULTIPLE_AUTH_CREDENTIALS | Send the API key without login cookies. | Cancel Jobs, Cancel all Jobs |
400 | INVALID_INPUT | className is not a valid single path segment. | Get one ComfyUI node info |
401 | AUTHENTICATION_REQUIRED | Missing or invalid API key. | Create a Job, List Jobs, Get Job status and results, Cancel Jobs, Cancel all Jobs, Get all ComfyUI node info, Get one ComfyUI node info |
402 | INSUFFICIENT_CREDIT | Not enough credit to create the Job. | Create a Job |
403 | USER_SUSPENDED, PRO_SUBSCRIPTION_REQUIRED, INVALID_INPUT | Your account is suspended, does not have an active Pro subscription, or is not permitted to use the API. | Create a Job, List Jobs, Get Job status and results, Get all ComfyUI node info, Get one ComfyUI node info |
403 | USER_SUSPENDED, PRO_SUBSCRIPTION_REQUIRED, INVALID_INPUT | The account is suspended, lacks an active Pro subscription, or cannot access the API. | Cancel Jobs, Cancel all Jobs |
404 | JOB_NOT_FOUND | Missing, another user’s, or not created through the Comfy prompt API. | Get Job status and results |
413 | REQUEST_BODY_TOO_LARGE | The JSON body exceeds the 50 MiB limit. | Create a Job |
413 | REQUEST_BODY_TOO_LARGE | The JSON body exceeds 50 MiB. | Cancel Jobs |
415 | UNSUPPORTED_MEDIA_TYPE | Content-Type is not application/json. | Create a Job |
415 | UNSUPPORTED_MEDIA_TYPE | Send Content-Type: application/json. | Cancel Jobs |
429 | DAILY_JOB_LIMIT_EXCEEDED | Creation limit reached. Try again after it resets. | Create a Job |
500 | INTERNAL_ERROR | Internal server error. | Create a Job, List Jobs, Get Job status and results |
500 | INTERNAL_ERROR | An error occurred while processing the request. Check Job status before retrying. | Cancel Jobs |
500 | INTERNAL_ERROR | An error occurred while processing the request. | Cancel all Jobs, Get all ComfyUI node info, Get one ComfyUI node info |
502 / 504 | INTERNAL_ERROR | The service could not be reached or the request timed out. | Get all ComfyUI node info, Get one ComfyUI node info |
Other | — | ComfyUI may return other status codes and response bodies. | Get all ComfyUI node info, Get one ComfyUI node info |
Job statuses
Used in status for create and get responses, and jobs[].status for list responses.
| status | Meaning | Next step |
|---|---|---|
queued | Waiting or preparing to execute. | Poll again according to Retry-After. Jobs cannot be canceled once execution preparation begins. |
processing | Execution is in progress. | Poll again according to Retry-After. |
succeeded | Execution succeeded. | Download files in outputs before they expire. Once all expire, outputs: [] is returned. |
failed | Execution failed. | Check error.code and error.message. |
canceled | The Job was canceled. | error.code is JOB_CANCELED. |
Job errors
Returned in the Job's error.code, separately from request error codes. For list responses, check jobs[].error.code. The error field is null unless the Job is failed or canceled.
| status | error.code | Meaning / what to check |
|---|---|---|
failed | INVALID_INPUT | Check node inputs and model names. error.details.node_errors may contain validation results for each node. |
failed | INSUFFICIENT_CREDIT | Check your credit balance before creating a new Job. |
failed | EXECUTION_TIMEOUT | Execution exceeded its time limit. Check the error message. |
failed | WORKER_UNAVAILABLE | The Job could not be executed. Check the error message and contact support if the issue persists. |
failed | EXECUTION_FAILED | An error occurred during execution. Check the error message. |
canceled | JOB_CANCELED | The Job was canceled. |
Cancellation results
Cancel Jobs can return different results per ID with HTTP 200. Check results[].status. Cancel all Jobs returns only canceled_count.
| results[].status | Meaning |
|---|---|
canceled | Canceled by this request. |
already_canceled | The Job was already canceled. |
not_cancelable | Execution preparation has begun or the Job has already finished. |
not_found | The Job is missing, belongs to another account, or was not created with this API. |
Preserve unknown error codes too. If a create request times out or loses its response, read Retries and timeouts before submitting again.