Error and reason codes

Last updated 10 October 2026.

Every refusal carries a category, a stable reason code, one safe message that never contains record values, and a next action. Match on the reason code, not on the message wording. A queued run is never an error and never success: check completed. Quote the correlation Id that comes with an answer when you ask support for help.

Where a message includes a value, it is shown in angle brackets.

Categories and HTTP status

Over REST the category sets the HTTP status. In Flow and Apex the category is a field of the answer.

Category HTTP status Meaning What to do
InvalidInput 400 The request is incomplete or malformed Fix the request and send it again
Forbidden 403 The person, template or mode is not allowed Ask an admin for the permission set the message names
CapabilityUnavailable 403 A permission or feature the action needs is missing Ask an admin to assign it
NotFound 404 The record, template or run does not exist, or you cannot see it Check the Id and your access
Conflict 409 The state does not allow it now: not active, retired, still running, expired Change the state, then send it again
DependencyChanged 409 Something the template relies on changed Refresh the template, then prove it again
ProviderOutcomeUnknown 409 Docable cannot tell whether a value provider already acted Check the provider, then reconcile
ValidationFailed 422 The template cannot make what was asked Choose an output the template makes, or change the template
LimitExceeded 429 A limit was reached Wait and send again, or ask for less
InternalFailure 500 Docable could not accept the request Try again; if it repeats, send the correlation Id to support

Making a request

Reason code Category Message
GENERATION_TEMPLATE_REQUIRED InvalidInput Choose one template, by its Id or an exact version Id.
GENERATION_TEMPLATE_NOT_FOUND NotFound Docable can’t find that template for you.
GENERATION_TEMPLATE_NOT_ACTIVE Conflict This template has no active version yet.
GENERATION_TEMPLATE_RETIRED Conflict This template is retired, so it makes no documents.
GENERATION_VERSION_NOT_ACTIVE Conflict Only the active version, or a version that was active before, makes documents.
GENERATION_RECORDS_REQUIRED InvalidInput Choose at least one record to make a document for.
GENERATION_RECORD_OBJECT_MISMATCH InvalidInput This template makes documents for <object> records; one of the Ids is a different kind.
GENERATION_ID_INVALID InvalidInput One of the Ids isn’t a Salesforce Id.
GENERATION_OUTPUT_INVALID InvalidInput Docable makes PDF and DOCX (Word) documents.
GENERATION_OUTPUT_DISABLED ValidationFailed This template doesn’t make <Word or PDF> documents.
GENERATION_BRAND_KIT_NOT_ALLOWED ValidationFailed This template can use only these Brand Kits: <kits>. Choose one of those, or leave the Brand Kit blank for the template’s own choice.
GENERATION_BRAND_KIT_RETIRED ValidationFailed <Kit> is retired, so a run can’t choose it. Choose another kit, or leave the Brand Kit blank.
GENERATION_BRAND_KIT_NOT_PROVED ValidationFailed That kit isn’t proved with the template’s active version. Ask the template’s author to make a proof with it and activate that version.
GENERATION_COMBINE_NEEDS_PDF InvalidInput Documents are combined into one PDF, so the request has to make PDFs.
GENERATION_DUPLEX_NEEDS_COMBINE InvalidInput Blank pages for two-sided printing go into a combined PDF.
GENERATION_TEMPORARY_HOURS_INVALID InvalidInput Temporary Files last from 1 to 168 hours.
GENERATION_RUN_MODE_INVALID InvalidInput The run mode is User or System.
GENERATION_SYSTEM_MODE_NOT_ALLOWED Forbidden This template doesn’t allow system mode.
GENERATION_SYSTEM_MODE_PERMISSION_REQUIRED Forbidden You need the Docable Generate in System Mode permission set to generate in system mode.
GENERATION_REQUEST_KEY_INVALID InvalidInput The requestKey has to be a lowercase UUID.
GENERATION_REQUEST_KEY_REUSED Conflict That requestKey was already used for a different request.
GENERATION_QUEUE_BUSY LimitExceeded Docable already has as many document jobs waiting as it allows. Send the request again in a few minutes.
GENERATION_REQUEST_FAILED InternalFailure Docable couldn’t accept this request.

A run in progress or finished

Reason code Category Message
GENERATION_RUN_NOT_FOUND NotFound Docable can’t find that generation for you.
GENERATION_RUN_IN_PROGRESS Conflict This generation is still running.
GENERATION_SNAPSHOT_EXPIRED Conflict The saved data for this document has expired, so it can’t be made again exactly. Generate it again to use the current data.
GENERATION_WORKER_INTERRUPTED (document state) This document needed more processing or memory than Salesforce allows for one document. Try again; if it fails again, show fewer rows or pictures.
GENERATION_OUTCOME_UNKNOWN ProviderOutcomeUnknown Docable can’t tell whether a value provider already acted for this generation.
GENERATION_RECONCILE_PERMISSION_REQUIRED CapabilityUnavailable Reconciling a provider attempt needs Docable Execute Providers.

Data and pictures

Reason code Category Message
DATA_COLLECTION_TRUNCATED LimitExceeded This record has more related rows than the template’s list allows. Ask the template’s author to raise the list’s limit.
MODEL_ROOT_UNAVAILABLE NotFound Docable can’t read this record, or this kind of record, for you. Ask your admin for access.
RECORD_IMAGE_NOT_AVAILABLE NotFound A picture the template prints from this record isn’t available: the record needs one image File that you can open.

Template state

Reason code Category Message
SNAPSHOT_TEMPLATE_RETIRED Conflict This template is retired. Restore it on the Templates page, or choose another template.
SNAPSHOT_SCHEMA_CHANGED Conflict Next step: Refresh the template and current source schema.
SNAPSHOT_DEPENDENCY_CHANGED Conflict Next step: Refresh the exact optional Brand Kit version.
LIFECYCLE_TEMPLATE_RETIRED Conflict Restore the template on the Templates page before making a version active.
PERSISTENCE_TEMPLATE_EDIT_REQUIRED Forbidden You can view this template but not save it. Ask its owner for edit access.

Approval and access

Reason code Category Message
LIFECYCLE_SEPARATE_APPROVER_REQUIRED Forbidden Someone else has to approve this template. Ask another approver, or an admin can switch off ‘Approver must differ from author’.
LIFECYCLE_HUMAN_REVIEW_REQUIRED Forbidden Complete this action in the interactive Docable Studio as a permitted human.
ACCESS_LICENCE_REQUIRED Forbidden Ask your Salesforce admin to assign you a Docable licence.
ACCESS_LICENCE_UNAVAILABLE Forbidden Docable couldn’t check your licence. Try again, or ask your Salesforce admin to check the Docable licence.

REST

Reason code Category Message
REST_REQUEST_INVALID InvalidInput The request body isn’t a valid Docable request envelope. Send {apiVersion: “1”, operation, requestId, arguments}.
REST_RESOURCE_UNKNOWN NotFound Unknown resource. Use GET /docable/v1/generations/{runId}, or POST the request envelope.

Proofs that are refused in the editor

When Make PDF and Word proofs cannot make a proof, the editor says Proofs were not created, gives the reason, and ends with the code in brackets.

Reason code What it says and what to do
WORD_FURNITURE_COLLISION_RISK The header or footer is taller than the page margin leaves room for. Make that margin bigger under Page › Paper and margins, or the header or footer shorter.
PDF_TEXT_GLYPH_UNSUPPORTED Some text uses letters the PDF fonts cannot print. Upload a font that has them under Page › Fonts.
WORD_FONT_UNSUPPORTED Some text uses a font that is not uploaded to this template. Upload it again or choose another font.
PDF_FONT_EMBEDDING_RESTRICTED An uploaded font’s licence does not allow embedding. Choose another font.
PDF_ARCHIVE_FORM_UNSUPPORTED PDF/A files cannot contain fillable form fields. Turn off PDF/A or remove the form fields.
WORD_PLACEHOLDER_UNCONNECTED A placeholder is not connected to a field yet. Connect it first.
WORD_MEDIA_PLACEHOLDER A picture placeholder has no picture yet. Choose one in its settings first.
RUNTIME_REQUEST_REQUIRED The request time is only known when documents are generated from a request. Remove it to make a proof.
RUNTIME_OUTPUT_KIND_UNAVAILABLE The output type cannot be shown: the PDF and Word files come from one snapshot. Remove it to make a proof.
TEMPLATE_RESOURCE_LIMIT This template is too large to check in one go. Split very long sections or remove unused fields, then try again.
PROOF_JOB_CPU_LIMIT, PDF_CPU_RESERVE Even in the background this template needs more processing than Salesforce allows for one document. Show fewer rows in large tables, or split the template.
PROOF_JOB_HEAP_LIMIT, PDF_HEAP_RESERVE Even in the background this template needs more memory than Salesforce allows for one document. Show fewer rows or images, or split the template.
PROOF_QUERY_RESERVE This template reads too many pictures or records to prove in one request. Try again; the proofs are made in the background.
PROOF_JOB_STALLED The background proofs stopped without finishing. Try again; if it happens again, show fewer rows or images.
PROOF_JOB_QUEUE_FULL You already have proofs being made. Wait for them to finish, then try again.
PROOF_JOB_TIMEOUT The proofs are still being made in the background. Choose Make PDF and Word proofs again in a minute to see them.
STUDIO_PROOF_RESPONSE_INVALID The PDF and Word files did not come back from one saved snapshot, so neither was kept. Try again.
EXPRESSION_NULLABILITY_VIOLATION A value the document needs is blank for this record. Fill in the answers under Answers, or choose a record that has the value.
RUNTIME_ANSWER_REQUIRED A required question has no answer. Answer it under Answers.
RUNTIME_ANSWER_NOT_A_CHOICE An answer isn’t one of its question’s choices. Choose one under Answers.

Brand Kit warnings

A Brand Kit lists these warnings. Each is a warning, not a refusal, except where the kit cannot be approved until it is fixed.

Code What it says
BRAND_CONTRAST_LOW A colour has low contrast
BRAND_UK_DISCLOSURE_MISSING A UK company detail is missing
BRAND_COMPANY_NUMBER_FORMAT The company number looks wrong
BRAND_VAT_NUMBER_FORMAT The VAT number looks wrong
BRAND_WORDING_UNTRANSLATED Some wording is not translated
BRAND_NUMBER_PREFIX_SHARED Another kit uses the same number prefix
BRAND_NUMBER_START_BELOW_NEXT A series starts below its next number
BRAND_FONT_SUBSTITUTED A font is substituted in PDF

A Brand Kit cannot be deleted while templates use it, while template proofs were made with it, or after document numbers were taken from its series.

Something unclear or wrong? Tell support.