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.