Reference

Fix an error

Use with your agent

Give this prompt to your AI agent. The agent does the task for you.

Read https://thirds.ai/docs/errors and help me resolve a thirds.ai error using its code and job status without exposing private content or retrying a billed action twice.

Find the code in the tables below, then follow its next step. Request errors use error.code and error.request_id. A failed render uses error.category and error.code. Use these fields in your app; message text can change.

A 200 job response can still contain a failed job. Check status before you read download. A 202 response means the job is still active. See retry requests and download files.

Request and access errors

CodeCause and next step
invalid_requestA field, value, or JSON body is invalid. Correct the fields in error.details.
invalid_uploadThe source image is unsupported, corrupt, or too large. Use a still PNG, JPEG, or WebP within the source-image limits. Send compact standard base64; a data URL prefix is accepted. This fails before the model. A create-time failure has no repair_code.
request_too_largeThe request body exceeds its limit. Reduce the body before you send it again.
unsupported_media_typeThe content type is wrong. Send the media type required by the route.
request_headers_too_largeThe request headers exceed their size limit. Send fewer or smaller headers.
unauthorizedThe API key is absent or invalid. Check the Bearer header and use an active key.
account_suspendedThe account cannot submit work. Contact support.
not_foundThe route or account-owned item is unavailable. Check the path, ID, and account.
method_not_allowedThe route does not accept this HTTP method. Check the API reference.
invalid_cursorThe history cursor is invalid. Start a new list request without a cursor.
idempotency_conflictA retry key already belongs to different input. Restore the original input, or use a new key for a new output.
job_not_finishedThe job is queued or running. Wait until it ends before deleting it.
download_expiredThe signed download link expires. Read the job again for a new link while its file remains available.
key_limit_reachedThe account has too many API keys. Revoke an unused key before creating one.
batch_row_limitThe batch holds more rows than the account plan allows. Read error.plan_limit for the limit and the plan, then send fewer rows or move up a plan.
internal_errorAn internal service step fails. Check an existing job first, then retry with the same retry key. Contact support if it continues.

Rate and credit errors

CodeCause and next step
rate_limitedRequests arrive too fast. Wait for Retry-After and reduce the request rate.
account_concurrency_limitedThe account has too many live jobs. Wait for a job to finish.
key_concurrency_limitedThe API key has too many live jobs. Send fewer renders at once.
abuse_limitedToo many renders fail today. Fix the input and wait for the daily allowance to reset.
overloadedThe service has no room for this request. Wait for Retry-After, then retry with the same key.
insufficient_creditsAvailable credits cannot cover the work. Add credits in billing.
ai_needs_paid_creditsFree monthly credits cannot pay for AI work. Buy a credit pack or start a plan.
overage_limit_reachedThe account reaches its monthly overage limit. Buy a pack or wait for the next calendar month.
spend_cap_reachedThe API key reaches its monthly overage cap. Raise that cap or use an approved key with room.
overage_unavailablePending overage reporting pauses further overage. Buy a pack or try later.
billing_unavailableThe billing service is unavailable. Try again later.
already_subscribedA subscription or completed checkout already exists. Refresh billing and manage the existing plan.
checkout_supersededA newer checkout replaces this one. Open checkout again from billing.
no_billing_customerThe account has no billing customer record. Start a purchase before opening the billing portal.
invalid_eventA billing webhook is invalid. Check the sender and signature; do not send it as a render request.

See rate limits for limits and retry headers. A refused render request creates no job or credit charge.

Template errors

CodeCause and next step
template_not_found, gallery_template_not_foundThe selected template or version is unavailable. Check its ID and your account.
template_version_changedThe selected version changes before admission. Read the template and send an exact version.
template_data_invalidData does not match the schema. Correct the fields in error.details.
template_source_limitTemplate source is too large. Reduce its size.
template_data_limitTemplate data is too large. Send less data.
template_data_depth_limitData has too many nested levels. Use a flatter structure.
template_data_collection_limitData has too many items or values. Split it into smaller outputs.
template_syntax_errorTemplate syntax is invalid. Fix the reported line and column when present.
template_missing_dataA required variable is missing. Supply that value or change the template.
template_invalid_filter_inputA filter receives an unsupported value. Correct its input type or format.
template_depth_limitTemplate evaluation nests too deeply. Reduce nested blocks or calls.
template_work_limit, template_timeoutEvaluation needs too much work or time. Reduce loops and data.
template_output_limitEvaluated HTML is too large. Reduce the content.
template_evaluation_errorEvaluation cannot finish. Check expressions and values.
template_schema_too_large, template_schema_complexityThe data schema is too large or complex. Simplify its rules.
template_schema_draft_unsupportedThe schema declares an unsupported draft. Use the supported schema form in the template guide.
template_schema_invalidA schema rule is invalid. Correct the schema before saving.
template_sizes_too_manyA saved template or an adapt request names too many sizes. Send fewer sizes.
template_sizes_too_largeThe saved template bundle exceeds its total size limit. Reduce its sizes or their content.
template_size_invalid_id, template_size_duplicate_idA size id is invalid or repeats another size. Use a unique id in the allowed characters and length.
template_size_invalid_nameA size name is empty, too long, or has a control character. Use a short plain name.
template_size_invalid_dimensionsA size's width or height is outside the supported range. Use dimensions within the supported range.
template_size_canvas_mismatchA size's declared canvas does not match its width and height. Match the size's HTML canvas to its declared dimensions.
template_size_data_overrides_too_largeA size's data overrides exceed the data size limit. Reduce that size's overrides.
resize_timeoutSmart resize takes too long to adapt the source. Simplify the source template and try again.

Brand and image errors

CodeCause and next step
brand_kit_not_foundThe kit or asset is unavailable. Check the ID and account.
brand_kit_unavailableThe kit cannot be loaded. Try again later.
brand_data_conflictRender data conflicts with brand values. Remove the conflicting brand fields from your data.
brand_kit_patch_emptyNo kit changes are supplied. Send at least one supported field.
brand_kit_colours_invalidThe colour list is invalid. Use the supported colour values and count.
brand_kit_limitThe account keeps every kit its plan allows, archived kits too. Read error.plan_limit for the limit and the plan, then move up a plan to add one.
brand_asset_too_largeThe file is too large. Upload a smaller file.
brand_asset_type_unsupportedThe media type is unsupported. Use a still PNG, JPEG, or WebP logo, or a WOFF2 font. SVG is not accepted.
brand_image_dimensions_invalid, brand_image_pixels_exceededThe logo dimensions exceed the limits. Resize it.
brand_image_animatedThe logo is animated. Upload a still image.
brand_font_tables_invalid, brand_font_glyphs_exceededThe font exceeds validation limits. Use a valid smaller font.
brand_asset_invalidThe file bytes are invalid or do not match media_type. Export a fresh still PNG, JPEG, or WebP. SVG is not accepted.
brand_asset_kind_invalid, brand_asset_kind_mismatchThe asset kind is invalid or differs from the replaced file. Use the correct logo or font kind.
brand_asset_limit_reached, brand_asset_account_limit_reachedThe kit or account reaches its file allowance. Remove unused files or reduce their size.
image_asset_too_large, image_asset_invalidAn uploaded image is too large or invalid. Use a still PNG, JPEG, or WebP within the image limits.
image_asset_not_foundThe image is missing or belongs to another account. Upload it to this account.
image_asset_unavailableImage storage or reading fails. Try later.
image_asset_reference_invalidThe private image reference is invalid. Use the exact reference from the upload response.
image_asset_header_unsupportedA private reference appears in a PDF header or footer. Move the image into the body.
image_asset_limitThe render contains too many image bytes. Reduce the images.
image_url_invalidThe image URL is invalid or too long. Use a public HTTP or HTTPS address.
image_url_unavailableThe image URL could not load. Check that it serves a still PNG, JPEG, or WebP and does not redirect too many times.

AI and editor errors

CodeCause and next step
provider_unavailableThe AI provider cannot complete the call. Try later.
ai_failure_limit_reachedToo many AI operations fail. Stop repeated attempts and try later.
operation_limit_exceededThe account has too many pending AI operations, or an active operation reaches its budget. Wait for pending work, or reduce the request.
template_build_not_found, template_draft_not_foundThe chat or draft is unavailable. Check the account and reopen the saved work.
operation_conflictAnother operation conflicts with this change. Refresh the chat before retrying.
operation_pendingAn operation is still active. Wait for it to finish.
generated_template_invalidGenerated content fails validation. Adjust the request and try again.
render_probe_requiredA required render check is missing. Run the check in the editor.
render_probe_busyA render check is active. Wait for it to finish.
render_probe_not_configured, render_probe_failed, render_probe_timeoutThe editor check is unavailable or fails. Try again; contact support if it continues.

Browser, playground, and webhook errors

CodeCause and next step
signed_outThe browser session ends. Sign in again.
cross_origin_rejected, csrf_rejectedThe browser request fails an origin or session safety check. Reload thirds.ai and try from its page.
invalid_email, invalid_profileAccount details are invalid. Correct the fields.
email_already_setThe account already has an email. Refresh your account details.
invalid_linkThe sign-in link is invalid or expired. Request a new link.
auth_unavailableSign-in is unavailable. Try again later.
policy_version_staleThe policy changes before acceptance. Reload and read the current policy.
captcha_rejectedThe playground safety check fails. Complete a fresh check.
playground_request_invalid, playground_selection_invalidPlayground input or template selection is invalid. Choose a current template and correct its fields.
playground_session_limitedThis browser reaches its playground allowance. Sign in to use account credits.
playground_busy, playground_unavailablePlayground capacity or service is unavailable. Try later.
testimonial_invalidThe submitted testimonial is invalid. Correct its fields.
testimonial_busy, testimonial_rate_limited, testimonial_unavailableTestimonial submission is busy, limited, or unavailable. Wait before trying again.
webhook_limit_reachedThe account reaches its webhook limit. Remove an unused endpoint.

Failed render categories

These six categories match the messages in render history. Failed renders are not billed. Fix input, safety, size, and timeout failures before making a new job. Internal recovery runs before a job reaches a final failure.

CategoryMeaning and next step
invalid_inputThe template, HTML, or script cannot render. Fix the input.
unsafe_assetAn asset address is not allowed. Use an allowed public address or uploaded file.
resource_limitThe render exceeds a safety limit. Make it smaller.
timeoutThe render takes too long. Simplify it or fix script readiness.
renderer_failureThe browser or worker fails. Try a new render with a limit on retries.
internal_failureAn internal step fails. Try a new render; contact support if it continues.

Render error codes

CodeCause and next step
conflicting_header_footerHeader and footer options conflict. Correct the options.
conflicting_page_size, missing_page_sizePage size settings conflict or are incomplete. Use one named format, or both width and height.
duplicate_templateThe render contract repeats a template. Send one template.
empty_html, invalid_html, invalid_encodingHTML is empty, invalid, or not valid UTF-8. Correct the source.
invalid_identifier, invalid_request_idAn internal identifier is invalid. Contact support with the public request ID.
invalid_measurement, invalid_page_formatA page length or format is invalid. Use the supported options.
invalid_type, missing_field, unknown_field, value_out_of_range, value_too_largeA field has an invalid type, name, size, or value. Correct the request fields.
unsupported_contract_versionRenderer contract versions do not agree. Contact support.
unsupported_javascript_modeThe JavaScript mode is unsupported. Use the documented mode.
javascript_action_deniedA script attempts a blocked browser action. Remove navigation, popups, frames, or workers.
javascript_exceptionA script throws an error. Fix the script before rendering.
template_font_unavailable, template_image_unavailableA required layout font or image cannot load. Check or replace the asset.
template_layout_invalidThe marked layout is invalid. Correct the template layout.
template_layout_overflow, template_text_overflowLayout or text exceeds its bounds. Enlarge the block or reduce the content.
asset_destination_denied, external_asset_blockedAn asset violates the fetch policy. Replace private, local, or blocked destinations with allowed assets.
asset_count_exceededToo many assets are fetched. Reduce the asset count.
asset_too_large, fetched_assets_too_largeOne asset or all fetched assets exceed the byte limit. Compress or remove assets.
input_too_large, output_too_large, too_many_pagesInput, output, or page count exceeds its limit. Split the document or reduce content.
cpu_limit_exceeded, memory_limit_exceeded, process_limit_exceeded, temp_limit_exceededThe render uses too many system resources. Simplify its HTML, scripts, and assets.
dom_limit_exceeded, template_layout_limitThe document or marked layout has too many elements. Reduce its size.
javascript_readiness_timeoutThe ready marker is missing after two seconds. Set it after script work finishes.
render_timeoutRendering exceeds the time limit. Reduce the work.
queue_timeoutThe renderer's internal queue wait expires. Try later.
browser_crashed, cleanup_failed, image_capture_failed, pdf_protocol_failed, render_failedThe renderer cannot finish its attempt. After final failure, try a new render with bounded retries.
worker_busy, worker_not_readyA worker is busy or unavailable. After final failure, try later.
artifact_write_failed, worker_internal_failureThe worker cannot store output or complete an internal step. After final failure, retry or contact support.

More worker and asset codes

CodeCause and next step
brand_kit_name_invalid, brand_kit_tone_invalidKit text is invalid. Use non-empty text within the field limit.
image_asset_type_unsupportedThe upload type is unsupported. Use PNG, JPEG, or WebP.
renderer_contract, renderer_artifactThe renderer response or output fails verification. Retry after final failure; contact support if it continues.
renderer_no_answer, renderer_unavailableThe renderer gives no usable response or cannot start. Retry after final failure.
renderer_output_stale, renderer_output_unread, artifact_not_storedOutput cleanup, reading, or storage fails. Retry after final failure.
renderer_deadlineThe worker deadline ends before the renderer returns. Simplify the render; contact support if it continues.
artifact_too_largeOutput exceeds the storage size limit. Reduce the document or image.
input_not_envelope, input_unavailableStored input is invalid or unavailable. Submit a new render; contact support if it continues.
input_unreadable, worker_stopping, lease_expiredInput reading fails or the worker stops or loses its job lease. After final failure, try a new render.

Renderer diagnostic codes

These internal asset diagnostics are distinct from job error codes. The public job response does not include the renderer report.

CodeCause and next step
blocked_by_policyAsset access is blocked. Use an allowed destination.
http_error, dns_error, connection_errorThe asset host fails to serve or resolve. Check the asset URL and host.
timeoutAn asset request times out. Use a faster or smaller asset.
response_too_large, resource_limitAsset loading exceeds a limit. Reduce the file size or count.
unsupported_type, font_parse_failedThe asset format or font is invalid. Replace it with a supported file.
unknownNo more specific diagnostic is available. Check the job code or contact support.

AI operation failure codes

An AI operation can also return failure_category and failure_code after it ends. These are separate from HTTP request errors. A repairing or failed message can also include repair_code. That field names the last safe generation or render code. It never holds provider or customer text. MCP results can add a short repair_hint for the same code. The same idempotency key replays a terminal result. Use a new key for a new attempt.

CodeCause and next step
provider_timeoutThe AI call takes too long. Try later.
provider_refusalThe provider declines the request. Change the request.
provider_invalid_outputThe provider JSON or template is invalid. Read repair_code for the last validation step. The same idempotency key replays this failure. Use a new key for a new attempt.
invalid_upload, unsupported_inputThe source file is unsupported or invalid. Use a supported still image or valid HTML. An invalid upload at create time fails before the model.
invalid_output_dimensionsThe requested output size is invalid. Use supported dimensions.
brand_kit_conflictThe draft and selected brand kit conflict. Refresh the draft and kit selection.
review_limit_reachedAutomatic review used every slot. Read repair_code and any remaining draft, then send a new edit. An image import has five slots; prompt and HTML have one.
candidate_render_failed, final_render_failedThe AI preview or final render fails. Check the design and its assets, then send a new edit with a new idempotency key.
operation_cancelledThe operation is no longer active. Start a new operation if you still need it.
invalid_operation_phase, content_invalid, draft_invalid, request_invalidStored operation content or state is invalid. Retry; contact support if it continues.
database_failed, content_unavailable, draft_unavailable, brand_asset_unavailable, preview_unavailable, preview_storage_failed, preview_queue_failed, worker_crashedAn internal AI step cannot read, save, or finish its work. Retry after final failure; contact support if it continues.

MCP protocol errors

MCP uses numeric JSON-RPC errors for protocol failures. Tool errors can also carry the named API codes above. See connect with MCP.

CodeCause and next step
-32700JSON cannot be parsed. Send valid JSON.
-32600The request or transport headers are invalid. Check your MCP client's request format.
-32601The method is unknown. Use a supported MCP method.
-32602Tool arguments or the tool name are invalid. Read the current tool schema.
-32603Transport capacity is exhausted. Follow the retry delay in the error data.
-32020Protocol headers do not match the request. Update the client headers.
-32022The protocol version is unsupported. Use a version listed in the error's supported versions.

Get help safely

Send support the request ID, job ID, error category, and code. Do not send API keys, signed download links, private HTML, or customer data. For an unknown code, keep the code and stop automatic retries until you know whether a job exists.

Ready to make your first file?

Start in the playground with a gallery template, or get an API key and send your first request from your own terminal.