DoConure

Esiti e codici di errore

Ogni fallimento risponde con la stessa struttura, così un solo parser gestisce tutti i casi:

{
  "code": "TEMPLATE_VERSION_NOT_ACTIVE",
  "number": 1204,
  "message": "version 2 of template 'x' is not active; active versions are [1, 3]",
  "details": { "requestedVersion": 2, "activeVersions": [1, 3] },
  "retryable": false
}

Ogni esito ha anche un numero. 1204 e TEMPLATE_VERSION_NOT_ACTIVE sono la stessa cosa detta due volte: nel software si ramifica sul codice, il numero si cita quando ci scrivi dalla pagina dei contatti (/contatti) o ovunque una stringa lunga sia scomoda da conservare. Entrambi sono permanenti — un numero non viene mai riusato, rinumerato o spostato su un altro esito.

Iniziano da 1000 così uno non può mai essere confuso con uno stato HTTP, e le prime due cifre indicano la famiglia: accesso, la richiesta, modello e versione, il file del modello, i dati rispetto al modello, documenti, firme, flussi, limiti, un nostro problema e non tuo. I warning iniziano con 2, così la prima cifra da sola dice se la chiamata è riuscita.

Ramificati sul codice, mai sul messaggio. Il codice è un contratto stabile; il messaggio è un suggerimento per una persona e può cambiare formulazione in qualsiasi momento. details è presente quando c'è qualcosa su cui agire, e retryable: true appare solo quando ripetere la stessa richiesta potrebbe davvero avere successo.

In the console, API errors (under Build) counts what your keys were refused over the last day, week or month, by code, key and operation; each code links to its row below.

The full table

Each row explains the outcome and how to fix it in English and, under it, in Italian (in italiano). The API itself always answers in English: the code, the message and details never change language.

CodeHTTPWhenRetry?
Success
(no code)200PDF generated; body is the file. Version used is in X-Template-Version.—
Authentication
MISSING_CREDENTIALS
1001
401No Authorization: Bearer header.

Manca l'header Authorization: Bearer.

no
INVALID_API_KEY
1002
401Key unknown, revoked or expired. Same answer for all three, so the API cannot confirm a key once existed.

Chiave sconosciuta, revocata o scaduta. Stessa risposta per tutti e tre i casi, così l'API non può confermare che una chiave sia mai esistita.

no
TENANT_INACTIVE
1004
403The key is valid but its organisation cannot act: it is suspended, its registration is not approved yet (details.registration), it was archived after a long period without use (details.lifecycle is archived; ask to have it reactivated, nothing was deleted) or it was anonymised (details.lifecycle is anonymised).

La chiave è valida ma la sua organizzazione non può operare: è sospesa, la sua registrazione non è ancora approvata (details.registration), è stata archiviata dopo un lungo periodo di inutilizzo (details.lifecycle è archived; chiedi di riattivarla, non è stato eliminato nulla) oppure è stata anonimizzata (details.lifecycle è anonymised).

no
SUITE_NOT_ENABLED
1005
403The key is valid and the organisation is active; the product you called is not switched on for it. The three are sold separately: composition (/api/v1/compose/documents/*, /api/v1/compose/templates/*), signature (/api/v1/sign/*) and the one-call flow (/api/v1/flow/*). details.suite names the one you called and details.enabled lists the ones you may. Nothing is charged. Your organisation’s administrator can see the same list under Settings, and only we can change it.

La chiave è valida e l’organizzazione è attiva; il prodotto che hai chiamato non è attivo per lei. I tre sono venduti separatamente: composizione (/api/v1/compose/documents/*, /api/v1/compose/templates/*), firma (/api/v1/sign/*) e il flusso in una chiamata (/api/v1/flow/*). details.suite nomina quello che hai chiamato e details.enabled elenca quelli che puoi usare. Non viene addebitato nulla. L’amministratore della tua organizzazione vede lo stesso elenco in Impostazioni, e solo noi possiamo cambiarlo.

no
FEATURE_NOT_ENABLED
1007
403You asked for something your organisation has not bought: a trust service (settings.qeSeal or settings.qualifiedTimestamp set to true), an SMS one-time code (validationMode: "sms"), a bulk operation (/bulk/compose, /bulk/sign, /bulk/flow) or a signature level. Refused on every API (composition, signature and the flow alike) and never produced without it: unlike your organisation’s own settings, which hand back the ordinary document and say so in a warning, this one is invisible from your side, so a silent downgrade would be undetectable. details.feature names which one (qeSeal, qualifiedTimestamp, smsValidation, bulkCompose, bulkSign, bulkFlow, signatureSes, signatureAes, signatureQes) and details.enabled lists what you do hold; GET /api/v1/usage shows the same list. Nothing is charged. Ask your DoConure contact to activate it; only we can.

Hai chiesto qualcosa che la tua organizzazione non ha acquistato: un servizio fiduciario (settings.qeSeal o settings.qualifiedTimestamp impostato a true), un codice monouso via SMS (validationMode: "sms"), un'operazione massiva (/bulk/compose, /bulk/sign, /bulk/flow) o un livello di firma. Rifiutato su ogni API (composizione, firma e flusso allo stesso modo) e mai prodotto senza: a differenza delle impostazioni della tua organizzazione, che restituiscono il documento ordinario e lo segnalano con un avviso, questa non è visibile dal tuo lato, quindi un declassamento silenzioso non sarebbe rilevabile. details.feature indica quale (qeSeal, qualifiedTimestamp, smsValidation, bulkCompose, bulkSign, bulkFlow, signatureSes, signatureAes, signatureQes) e details.enabled elenca quelle che hai; GET /api/v1/usage mostra lo stesso elenco. Non viene addebitato nulla. Chiedi al tuo referente DoConure di attivarla; solo noi possiamo farlo.

no
IP_NOT_ALLOWED
1003
403The key is valid; the address it arrived from is not on your organisation's allowlist. Distinct from INVALID_API_KEY on purpose — moving to a new server needs to be told apart from a bad key, and details.address echoes the address back, because it is not a secret from its own owner.

La chiave è valida; l'indirizzo da cui è arrivata non è nella lista degli indirizzi consentiti della tua organizzazione. È distinto da INVALID_API_KEY di proposito — il passaggio a un nuovo server deve poter essere distinto da una chiave errata, e details.address riporta l'indirizzo, perché non è un segreto per il suo stesso proprietario.

no
ADMIN_LOGIN_REQUIRED
1006
401A console page reached without a session. Not returned to API callers.

Una pagina della console raggiunta senza sessione. Non viene restituito a chi chiama l'API.

no
TOKEN_SCOPE_NOT_ALLOWED
1008
403Your organisation may call this; the token you sent was not granted the scope it needs. Distinct from SUITE_NOT_ENABLED, which is your organisation's own purchase — this is the token's own restriction, from the scopes you chose when you created it. details.missingScopes names what is missing. Create a token with the scope you need; an existing token's scopes only ever shrink, never grow, so re-issuing rather than editing is the fix.

La tua organizzazione può fare questa chiamata; al token che hai inviato non è stato concesso l’ambito che serve. Diverso da SUITE_NOT_ENABLED, che riguarda ciò che ha acquistato la tua organizzazione — questa è una restrizione del token stesso, dagli ambiti che hai scelto quando l’hai creato. details.missingScopes nomina cosa manca. Crea un token con l’ambito che ti serve; gli ambiti di un token esistente possono solo ridursi, mai crescere, quindi la soluzione è emetterne uno nuovo, non modificarlo.

no
FEATURE_NOT_AVAILABLE_IN_TEST_MODE
1009
422You sent isTest: true together with a feature that is paid for at an external provider: qeSeal, qualifiedTimestamp, an SMS one-time code (validationMode: "sms") or an AES/QES level. Refused before anything is reserved, sent or charged — a test call never spends money and is never silently downgraded. details.features names each. Send the call without isTest, or without the feature.

Hai inviato isTest: true insieme a una funzione pagata presso un fornitore esterno: qeSeal, qualifiedTimestamp, un codice monouso via SMS (validationMode: "sms") o un livello AES/QES. Rifiutato prima che venga riservato, inviato o addebitato qualcosa — una chiamata di test non spende mai denaro e non viene mai declassata in silenzio. details.features le indica una per una. Invia la chiamata senza isTest, oppure senza la funzione.

no
FEATURE_NOT_AVAILABLE_IN_BULK
1010
422The batch asked for something a bulk job cannot do yet: a seal or a qualified timestamp (charged after the fact, so a batch of them could overdraw what was reserved), a document password, a responseFormat (an item has no response of its own) or a filename (one name for many files). details.fields names each. Nothing was reserved; send the same batch without them, or send those documents one at a time.

Il lotto ha chiesto qualcosa che un'elaborazione massiva non può ancora fare: un sigillo o una marca temporale qualificata (addebitati a posteriori, quindi un lotto di questi potrebbe superare quanto riservato), una password del documento, un responseFormat (un elemento non ha una risposta propria) o un filename (un solo nome per molti file). details.fields li indica uno per uno. Non è stato riservato nulla; invia lo stesso lotto senza di essi, oppure invia quei documenti uno alla volta.

no
REQUIRED_FEATURE_NOT_AVAILABLE_IN_TEST_MODE
1011
422You sent isTest: true to an organisation whose own settings require a seal or a qualified timestamp on every document (seal_mode / timestamp_mode = always). A test call never buys one, and a document the policy says must be sealed is never returned unsealed, so the call is refused before anything is reserved, sent or charged. details.features names each. Send the call without isTest, or change the setting. Where the setting is only optional, isTest skips the seal with PAID_EXTRA_SKIPPED_ON_TEST instead.

Hai inviato isTest: true a un'organizzazione le cui impostazioni richiedono un sigillo o una marca temporale qualificata su ogni documento (seal_mode / timestamp_mode = always). Una chiamata di test non ne compra mai uno, e un documento che la policy dice debba essere sigillato non viene mai restituito senza sigillo, quindi la chiamata viene rifiutata prima che qualcosa venga riservato, inviato o addebitato. details.features indica ciascuna. Invia la chiamata senza isTest, oppure cambia l'impostazione. Dove l'impostazione è solo facoltativa, isTest salta invece il sigillo con PAID_EXTRA_SKIPPED_ON_TEST.

no
TIMESTAMP_REQUIRES_SEAL
1012
422You asked for a qualifiedTimestamp without a qeSeal (or your organisation's timestamp_mode is always and the document is not sealed). The qualified timestamp is an option of the qualified seal and is never applied on its own, so the call is refused before anything is rendered, reserved, sent or charged. Send qeSeal: true as well, or drop qualifiedTimestamp; a sealed document without a timestamp is fine. details.source says whether the request or the organisation's setting asked for it.

Hai chiesto un qualifiedTimestamp senza un qeSeal (oppure il timestamp_mode della tua organizzazione è always e il documento non è sigillato). La marca temporale qualificata è un’opzione del sigillo qualificato e non viene mai applicata da sola, quindi la chiamata viene rifiutata prima che venga reso, riservato, inviato o addebitato qualsiasi cosa. Invia anche qeSeal: true, oppure togli qualifiedTimestamp; un documento sigillato senza marca temporale va bene. details.source dice se l’ha chiesta la richiesta o l’impostazione dell’organizzazione.

no
Template and version
TEMPLATE_NOT_FOUND
1201
404No such id, or it belongs to another tenant — deliberately indistinguishable.

Nessun id di questo tipo, oppure appartiene a un altro tenant — volutamente indistinguibili.

no
TEMPLATE_DEACTIVATED
1202
409The template is switched off entirely. Activate a version in the admin.

Il modello è completamente disattivato. Attiva una versione nell’amministrazione.

no
TEMPLATE_VERSION_NOT_FOUND
1203
404You pinned a number that was never created. details.activeVersions lists what exists.

Hai fissato un numero che non è mai stato creato. details.activeVersions elenca quelli esistenti.

no
TEMPLATE_VERSION_NOT_ACTIVE
1204
409You pinned a version that exists but is off. details.activeVersions tells you what to use instead.

Hai fissato una versione che esiste ma è disattivata. details.activeVersions ti dice cosa usare al suo posto.

no
NO_ACTIVE_VERSION
1205
409The template exists and is on, but no version is active.

Il modello esiste ed è attivo, ma nessuna sua versione è attiva.

no
Signatures — Signer Fly
SIGNATURE_LEVEL_UNAVAILABLE
1601
501You asked for AES or QES. They are coming soon, in the next wave; only SES is produced today, and the request is refused, never downgraded — under eIDAS those are different legal objects, so being handed a weaker one silently would be worse than being told no. details.available lists what can be issued. See Signature levels: SES, AES, QES.

Hai chiesto AES o QES. Sono in arrivo, nella prossima fase; oggi viene prodotta solo SES, e la richiesta viene rifiutata, mai declassata — secondo eIDAS sono oggetti giuridici diversi, quindi ricevere in silenzio una firma più debole sarebbe peggio che sentirsi dire di no. details.available elenca cosa può essere emesso. Vedi Livelli di firma: SES, AES, QES.

no
SMS_VALIDATION_UNAVAILABLE
1624
422A signer was set to validate by sms and the code cannot be delivered: the platform has no SMS provider configured (details.reason: provider_not_configured) or the number is outside the countries the sender is registered for (country_not_registered); details.signer names the signer. Refused when the envelope is created, before anything is sent, rather than an envelope nobody can sign or a code that quietly goes by email. Use validationMode: "email" for that signer.

Un firmatario è stato impostato per la validazione via sms e il codice non può essere consegnato: la piattaforma non ha un fornitore SMS configurato (details.reason: provider_not_configured) oppure il numero è fuori dai paesi per cui il mittente è registrato (country_not_registered); details.signer nomina il firmatario. Viene rifiutato alla creazione della busta, prima che venga inviato qualsiasi cosa, invece di produrre una busta che nessuno può firmare o un codice che passa in silenzio all’email. Usa validationMode: "email" per quel firmatario.

no
ENVELOPE_NOT_FOUND
1602
404No such envelope, or it belongs to another tenant — deliberately indistinguishable, as with templates.

Nessuna busta di questo tipo, oppure appartiene a un altro tenant — indistinguibili di proposito, come per i modelli.

no
ENVELOPE_NOT_EDITABLE
1603
409It has already been sent. An envelope is composed once and sent once.

È già stata inviata. Una busta si compone una volta e si invia una volta.

no
ENVELOPE_CLOSED
1604
409Completed, cancelled, declined or expired. details.status says which.

Completata, annullata, rifiutata o scaduta. details.status indica quale.

no
ENVELOPE_NOT_CLOSED
1605
409The evidence bundle was requested before the envelope reached a terminal status. details.status says what it is now.

Il pacchetto delle prove è stato richiesto prima che la busta raggiungesse uno stato finale. details.status indica lo stato attuale.

no
DOCUMENT_NOT_SIGNABLE
1606
422The document exists but is not a PDF.

Il documento esiste ma non è un PDF.

no
DOCUMENT_SOURCE_UNAVAILABLE
1607
501Retired 2026-10-04 and kept so the number is never reused. An uploaded PDF (fileId, or the inline fileBase64) is now a supported envelope source, so nothing raises this any more. If you meet it in old logs, it meant an upload was refused before uploads existed.

Ritirato il 2026-10-04 e mantenuto perché il numero non venga mai riutilizzato. Un PDF caricato (fileId, o il fileBase64 inline) è ora un'origine supportata per una busta, quindi nulla lo genera più. Se lo trovi in vecchi log, significava che un caricamento era stato rifiutato prima che i caricamenti esistessero.

no
STORED_FILE_IN_USE
1620
409You tried to delete a stored file (a PDF you uploaded to be signed, or any file by fileId) while an open envelope — a draft, a sent or an in-progress one — still uses it. details.envelopeIds names them. Cancel or finish those first; a file that only finished envelopes use can be deleted, and its bytes are kept for their evidence until their retention ends.

Hai provato a eliminare un file archiviato (un PDF che hai caricato per farlo firmare, o qualsiasi file per fileId) mentre una busta aperta — una bozza, una inviata o una in corso — lo usa ancora. details.envelopeIds le nomina. Prima annullale o completale; un file usato solo da buste completate può essere eliminato, e i suoi byte vengono conservati come loro prova fino alla fine della loro conservazione.

no
SOURCE_FILE_CHANGED
1621
409You pinned a sha256 beside a fileId and it is not that file's. A stored file never changes — a new version is a new upload with a new fileId — so this means the id names a different file from the one you meant.

Hai fissato uno sha256 accanto a un fileId e non è quello del file. Un file archiviato non cambia mai — una nuova versione è un nuovo caricamento con un nuovo fileId — quindi significa che l’id indica un file diverso da quello che intendevi.

no
SIGNER_FIELD_INVALID
1622
422Signer-facing. A field the sender required (a text, a ticked checkbox, a dropdown choice) was left empty, or answered with something that is not allowed. The signature was not taken: the signer corrects the answer and signs again. details.fields names each.

Rivolto al firmatario. Un campo che il mittente ha reso obbligatorio (un testo, una casella da spuntare, una scelta da un elenco) è stato lasciato vuoto, oppure compilato con qualcosa che non è consentito. La firma non è stata acquisita: il firmatario corregge la risposta e firma di nuovo. details.fields li nomina uno per uno.

no
CALLBACK_DELIVERY_NOT_FOUND
1623
404The webhook delivery you asked the console to send again does not exist, or belongs to another organisation — deliberately indistinguishable.

La consegna webhook che hai chiesto alla console di inviare di nuovo non esiste, oppure appartiene a un'altra organizzazione — indistinguibili di proposito.

no
CALLBACK_ENVIRONMENT_UNKNOWN
1625
422callbackUrl.env names no callback environment of your organisation, or you sent a path without env and no environment is the default. Refused at the call, before anything is created or charged. details.known lists your environments.

callbackUrl.env non indica nessun ambiente di callback della tua organizzazione, oppure hai inviato un percorso senza env e nessun ambiente è quello predefinito. Rifiutato alla chiamata, prima che venga creato o addebitato qualcosa. details.known elenca i tuoi ambienti.

no
CALLBACK_PATH_INVALID
1626
422A callback path that could change the host (a scheme, //, @, .., a backslash or a fragment), a full URL sent together with env, or a path mixed with a full URL. Send only the end of the URL; the environment holds the host. details.reason says which.

Un percorso di callback che potrebbe cambiare l'host (uno schema, //, @, .., una barra rovesciata o un frammento), un URL completo inviato insieme a env, oppure un percorso mescolato a un URL completo. Invia solo la parte finale dell'URL; l'host è nell'ambiente. details.reason indica quale.

no
CALLBACK_ENVIRONMENT_IN_USE
1627
409The console was asked to delete a callback environment that open envelopes, running batches or queued callbacks still name. Wait for them to close; details counts them.

È stato chiesto alla console di eliminare un ambiente di callback ancora indicato da buste aperte, lotti in corso o callback in coda. Attendi che si chiudano; details li conta.

no
CALLBACK_ENVIRONMENT_INVALID
1628
422Console only, never an API answer. A callback environment could not be saved: the sigla, the base URL, the type of authentication or its credentials. details.field names which.

Solo console, mai una risposta API. Non è stato possibile salvare un ambiente di callback: la sigla, l'URL di base, il tipo di autenticazione o le sue credenziali. details.field indica quale.

no
SIGNATURE_TAG_UNKNOWN_SIGNER
1629
422A signature tag in the document, such as {{ signature.C }}, names a signer your request does not have. Add the signer, or remove the tag from the template. A flow is refused before anything is composed or charged when the tag is in the template; a tag typed in an uploaded annex is read after composing. details.tags and details.signers say which.

Un tag di firma nel documento, come {{ '{{ signature.C }}' }}, nomina un firmatario che la tua richiesta non contiene. Aggiungi il firmatario, oppure togli il tag dal modello. Un flusso viene rifiutato prima che venga composto o addebitato qualsiasi cosa quando il tag è nel modello; un tag scritto in un allegato caricato viene letto dopo la composizione. details.tags e details.signers indicano quali.

no
SIGNER_NOT_PLACED
1630
422The document places its signers with signature tags, and a signer has neither a tag nor fields, or its tag was not in the finished document (for example inside a condition that was false). Add a tag or fields for them. details.signers names them.

Il documento posiziona i firmatari con i tag di firma, e un firmatario non ha né un tag né fields, oppure il suo tag non era nel documento finito (per esempio dentro una condizione risultata falsa). Aggiungi un tag o fields per lui. details.signers li nomina.

no
SIGNATURE_TYPE_NOT_ALLOWED
1611
422The signer chose a way of making a mark that the organisation does not permit. Never substituted for an allowed one — somebody who drew their name and found a typed one on the document would have signed something they did not do. The signing page offers only the ways the organisation accepts, so a signer meets this only by sending another way anyway, and is then shown the form again with the reason.

Il firmatario ha scelto un modo di apporre il segno che l’organizzazione non consente. Non viene mai sostituito con uno consentito — chi ha disegnato il proprio nome e trovasse sul documento un nome digitato avrebbe firmato qualcosa che non ha fatto. La pagina di firma offre solo i modi che l’organizzazione accetta, quindi un firmatario incontra questo errore solo se invia comunque un altro modo, e allora gli viene mostrato di nuovo il modulo con il motivo.

no
DELEGATION_NOT_ALLOWED
1613
403Signer-facing. They tried to pass the request to somebody else and may not: the organisation forbids it for this envelope, or it has already changed hands as often as it may.

Rivolto al firmatario. Ha provato a passare la richiesta a qualcun altro e non può farlo: l'organizzazione lo vieta per questa busta, oppure la richiesta è già passata di mano tutte le volte consentite.

no
SIGNING_OUT_OF_TURN
1610
409Signer-facing. A sequential envelope, and it is somebody else's turn.

Rivolto al firmatario. È una busta sequenziale, ed è il turno di qualcun altro.

no
RECIPIENT_ALREADY_SIGNED
1612
409Signer-facing. That person has already signed; links are single-use.

Rivolto al firmatario. Quella persona ha già firmato; i link si usano una volta sola.

no
OTP_REQUIRED
1614
403Signer-facing. No live code — ask for one first.

Rivolto al firmatario. Nessun codice valido: richiedine prima uno.

no
OTP_INVALID
1615
403Signer-facing. Wrong code. The attempt is counted.

Rivolto al firmatario. Codice sbagliato. Il tentativo viene contato.

no
OTP_TOO_MANY_ATTEMPTS
1616
429Signer-facing. Too many wrong guesses on one code, or too many codes requested. A fresh code resets the guesses.

Riguarda il firmatario. Troppi tentativi errati su un codice, o troppi codici richiesti. Un nuovo codice azzera i tentativi.

no
RECIPIENT_NOT_FOUND
1617
404No such recipient on that envelope — including one that belongs to another tenant, which answers the same as absent.

Il destinatario non esiste in quella busta — compreso uno che appartiene a un altro tenant, che risponde come se fosse assente.

no
VALIDATION_MODE_UNAVAILABLE
1618
501Reserved for a validationMode this service does not yet support. Not raised for "sms" any more — that mode works, with a real SMS gateway (refused with SMS_VALIDATION_UNAVAILABLE where a code cannot be delivered) — but kept for whatever validation mode comes after it.

Riservato a un validationMode che questo servizio non supporta ancora. Non viene più sollevato per "sms" — quella modalità funziona, con un vero gateway SMS (rifiutata con SMS_VALIDATION_UNAVAILABLE dove un codice non può essere consegnato) — ma resta disponibile per la prossima modalità di validazione che verrà.

no
RECIPIENT_NOT_REQUIRED
1619
409Signer-facing. This recipient's group signs "OR" and somebody else in it already signed — their own signature was never required, and there is nothing left to act on for that link.

Riguarda il firmatario. Il gruppo di questo destinatario firma in modalità "OR" e qualcun altro del gruppo ha già firmato — la sua firma non è mai stata richiesta, e per quel link non resta nulla da fare.

no
Flows — Document Fly
FLOW_NOT_FOUND
1701
404No such flow, or it belongs to another tenant — deliberately indistinguishable.

Il flusso non esiste, oppure appartiene a un altro tenant — i due casi sono volutamente indistinguibili.

no
FLOW_CLOSED
1702
409The flow has already finished, been cancelled, or expired.

Il flusso è già terminato, è stato annullato oppure è scaduto.

no
Request payload
INVALID_REQUEST_BODY
1101
422Body does not match the expected shape. details.fields names each offending field.

Il corpo non corrisponde alla struttura attesa. details.fields indica ogni campo errato.

no
IDEMPOTENCY_KEY_REUSED
1104
422The same Idempotency-Key arrived with a different request. Answering it with the first call’s result would look to you exactly like success, so it is refused instead. Use a new key, or send the same request.

Lo stesso Idempotency-Key è arrivato con una richiesta diversa. Rispondere con l’esito della prima chiamata ti sembrerebbe in tutto e per tutto un successo, quindi la richiesta viene invece rifiutata. Usa una nuova chiave, oppure invia la stessa richiesta.

no
IDEMPOTENCY_IN_PROGRESS
1105
409A request with this key is still running. Retryable, with a Retry-After: you are doing the right thing, just early.

Una richiesta con questa chiave è ancora in corso. Da ritentare, con un Retry-After: stai facendo la cosa giusta, solo troppo presto.

yes
IDEMPOTENT_RESULT_GONE
1106
410The key is known and its result cannot be served again — the generation was dataless and kept nothing, or the document reached its retention date. details.jobId names the work: you were charged once, not twice, which is what you were retrying to find out.

La chiave è nota ma il suo risultato non può essere restituito di nuovo — la generazione era dataless e non ha conservato nulla, oppure il documento ha raggiunto la data di fine conservazione. details.jobId indica il lavoro: ti è stato addebitato una volta, non due, che è proprio ciò che volevi sapere ritentando.

no
BULK_INPUT_INVALID
1107
422The batch (or the uploaded file) is malformed as a whole: a line that is not JSON, an item without data, a duplicate externalId, an empty batch, both or neither of items and fileId. details.problems lists up to twenty, each with its line (a file) or index (inline). Nothing was reserved or created; fix the input and send it again.

Il lotto (o il file caricato) è malformato nel suo insieme: una riga che non è JSON, un elemento senza data, un externalId duplicato, un lotto vuoto, sia items sia fileId oppure nessuno dei due. details.problems ne elenca fino a venti, ciascuno con la sua line (un file) o il suo index (inline). Non è stato riservato né creato nulla; correggi l'input e invialo di nuovo.

no
IDEMPOTENCY_KEY_REQUIRED
1109
422You asked for a qeSeal on a compose or flow call that carries no Idempotency-Key. A retry after a timeout could not be told from a new request and would buy a second seal at the provider, which cannot be reversed. Send the header (any unique string, reused only when you retry the same call). Nothing was reserved, sent or charged.

Hai chiesto un qeSeal in una chiamata di composizione o di flusso che non porta alcun Idempotency-Key. Un nuovo tentativo dopo un timeout non potrebbe essere distinto da una nuova richiesta e comprerebbe un secondo sigillo presso il fornitore, cosa che non si può annullare. Invia l'header (una qualsiasi stringa univoca, riusata solo quando ritenti la stessa chiamata). Niente è stato riservato, inviato o addebitato.

no
FILE_REJECTED
1121
422An uploaded file was refused: empty, not a PNG, JPEG, WebP or PDF by its bytes (SVG is refused), unreadable, encrypted, a PDF with scripts, launch actions, embedded files or forms that submit, or a PDF with more than 500 pages (200 for a PDF uploaded to be signed). details.reason says which; nothing was stored.

Un file caricato è stato rifiutato: vuoto, non un PNG, JPEG, WebP o PDF in base ai suoi byte (gli SVG sono rifiutati), illeggibile, cifrato, un PDF con script, azioni di avvio, file incorporati o moduli che inviano dati, oppure un PDF con più di 500 pagine (200 per un PDF caricato per essere firmato). details.reason indica quale; non è stato conservato nulla.

no
INVALID_JSON
1102
400The body is not parseable JSON.

Il corpo non è JSON leggibile.

no
ENDPOINT_NOT_FOUND
1110
404No endpoint at this path: usually a typo, or a path guessed by an AI agent. details.reference points to /openapi.json, where every path is. A resource that does not exist has its own ..._NOT_FOUND code.

Nessun endpoint a questo percorso: di solito un errore di battitura, o un percorso indovinato da un agente AI. details.reference rimanda a /openapi.json, dove ci sono tutti i percorsi. Una risorsa che non esiste ha il suo codice ..._NOT_FOUND.

no
METHOD_NOT_ALLOWED
1111
405The path exists, not with this method (a POST where only GET is served). details.allowed and the Allow header list the methods it takes.

Il percorso esiste, ma non con questo metodo (un POST dove è servito solo GET). details.allowed e l'header Allow elencano i metodi che accetta.

no
JSON_STRUCTURE_LIMIT_EXCEEDED
1108
422The JSON body is nested deeper, or holds more values, than the platform reads, and was refused before it was parsed. details.limit is depth or nodes, with the figure in force. A long list belongs in a bulk job or a stored file.

Il corpo JSON è annidato più in profondità, o contiene più valori, di quanto la piattaforma legga, ed è stato rifiutato prima di essere analizzato. details.limit è depth o nodes, con il valore in vigore. Un elenco lungo va in un'elaborazione massiva o in un file archiviato.

no
MISSING_TEMPLATE_FIELD
1401
422An absent field renders empty by default — see Missing and extra fields — so this is raised only when the template is set to reject incomplete data, or when a field is absent from an object the template does reach. details.fields / details.field names them.

Un campo assente viene reso vuoto per impostazione predefinita — vedi Campi mancanti e in più — quindi questo errore si verifica solo quando il modello è impostato per rifiutare i dati incompleti, oppure quando un campo manca da un oggetto che il modello effettivamente raggiunge. details.fields / details.field li indica.

no
TEMPLATE_DATA_MISMATCH
1402
422The template and the payload do not fit together: a field that is present and of the wrong kind. {{ importo + 1 }} against "quarantadue" cannot render, and leniency does not cover it — leniency is about fields that are absent. details.problem names the kind of failure. Never retryable: the identical request fails identically. (Before 2026-09-19 these answered INTERNAL_ERROR, which is marked retryable — so a caller obeying that flag retried forever.)

Il modello e il payload non si accordano: un campo presente e del tipo sbagliato. {% raw %}{{ importo + 1 }}{% endraw %} con "quarantadue" non può essere reso, e la tolleranza non lo copre — la tolleranza riguarda i campi assenti. details.problem indica il tipo di errore. Mai da ritentare: la stessa identica richiesta fallisce nello stesso identico modo. (Prima del 2026-09-19 questi casi rispondevano INTERNAL_ERROR, che è marcato da ritentare — così un chiamante che rispettava quel flag ritentava per sempre.)

no
PAYLOAD_SCHEMA_VIOLATION
1403
422The payload does not satisfy the template's JSON Schema and the template is set to payloadValidation: "reject". Refused before any credit is reserved or any slot taken, so it costs nothing. details.violations lists the first ones as {path, keyword, message} (JSON pointer into your data), details.count how many there were. The offending value is never in it. Never retryable: fix the data, or set the template to warn.

Il payload non rispetta il JSON Schema del modello e quest'ultimo è impostato su payloadValidation: "reject". Viene rifiutato prima che venga riservato credito o occupato uno slot, quindi non costa nulla. details.violations elenca le prime violazioni come {path, keyword, message} (puntatore JSON nei tuoi data), details.count quante erano. Il valore errato non vi compare mai. Mai da ritentare: correggi i dati, oppure imposta il modello su warn.

no
DATALESS_NOT_AVAILABLE
1103
422You sent settings.dataless: true to /api/v1/flow. A document that is being signed has to be kept — a signature with nothing to show is not a signature, and its evidence is kept for ten years — so the request is refused rather than half-honoured. Compose it at /api/v1/compose/documents/generate if nothing may be stored. Refused before anything is generated or charged.

Hai inviato settings.dataless: true a /api/v1/flow. Un documento in firma deve essere conservato — una firma senza nulla da mostrare non è una firma, e le sue prove sono conservate per dieci anni — quindi la richiesta viene rifiutata invece di essere soddisfatta a metà. Componilo su /api/v1/compose/documents/generate se non può essere conservato nulla. Rifiutato prima che venga generato o addebitato qualcosa.

no
PAYLOAD_TOO_LARGE
1803
413The request body is over 25 MB, the largest this service accepts, so nothing was received or processed. On /api/* and /verify.json the answer is the usual JSON error body (output.error included), like every other refusal; smaller limits of your own (a template, an uploaded file) are refused with this code too and say the limit in the message.

Il corpo della richiesta supera i 25 MB, il massimo accettato da questo servizio, quindi niente è stato ricevuto o elaborato. Su /api/* e /verify.json la risposta è il consueto corpo di errore JSON (output.error incluso), come per ogni altro rifiuto; anche i tuoi limiti più bassi (un modello, un file caricato) vengono rifiutati con questo codice e indicano il limite nel messaggio.

no
Template file
TEMPLATE_FILE_INVALID
1301
422The stored template file could not be read or merged.

Il file del modello salvato non si è potuto leggere o unire ai dati.

no
TEMPLATE_FILE_REJECTED
1302
422Refused at upload: macros present, or a suspicious archive.

Rifiutato al caricamento: contiene macro, oppure è un archivio sospetto.

no
JSON_SCHEMA_INVALID
1303
422The jsonSchema sent with a template or a version cannot be enforced: not valid JSON Schema, a keyword outside the supported subset, a $ref that is not local to the schema, or past the size, depth or pattern caps. Refused at upload so that no compose call ever meets it. details.problems names each, with its path inside the schema.

Il jsonSchema inviato con un modello o una versione non può essere applicato: non è un JSON Schema valido, usa una parola chiave fuori dal sottoinsieme supportato, contiene un $ref non locale allo schema, oppure supera i limiti di dimensione, profondità o pattern. Viene rifiutato al caricamento, così nessuna chiamata di composizione lo incontra mai. details.problems indica ciascun problema, con il suo percorso all'interno dello schema.

no
Documents
DOCUMENT_NOT_FOUND
1501
404No such document id, or it belongs to another tenant.

Nessun documento con quell'id, oppure appartiene a un'altra organizzazione.

no
BULK_JOB_NOT_FOUND
1502
404No bulk job with that id, or it belongs to another organisation — the two are indistinguishable on purpose.

Nessuna elaborazione massiva con quell'id, oppure appartiene a un'altra organizzazione — i due casi sono indistinguibili di proposito.

no
BULK_FILE_NOT_FOUND
1503
404No uploaded bulk file with that id for your organisation, or a job already used it, or it expired (an upload not used within its lifetime is deleted). Upload it again.

Nessun file massivo caricato con quell'id per la tua organizzazione, oppure un'elaborazione lo ha già usato, oppure è scaduto (un caricamento non usato entro la sua durata viene eliminato). Caricalo di nuovo.

no
BULK_RESULTS_UNAVAILABLE
1504
409The result bundle of a bulk job cannot be built: the job has not finished, or its per-item results were deleted by retention. details.reason says which (job_not_finished, results_expired). The documents themselves follow their own retention.

Il pacchetto dei risultati di un'elaborazione massiva non può essere creato: l'elaborazione non è finita, oppure i risultati dei singoli elementi sono stati eliminati dalla conservazione. details.reason indica quale (job_not_finished, results_expired). I documenti seguono la propria conservazione.

no
BULK_RETRY_NOT_POSSIBLE
1505
409The failed items of a bulk job cannot be put back: it has not finished, nothing in it is retryable, the payloads were not kept (an organisation that composes without keeping data), or its results expired. details.reason says which; details.skipped lists items refused one by one. An item whose outcome is unknown is never repeated.

Gli elementi falliti di un'elaborazione massiva non possono essere rimessi in coda: non è finita, nulla al suo interno è da ritentare, i dati non sono stati conservati (un'organizzazione che compone senza conservare i dati), oppure i suoi risultati sono scaduti. details.reason indica quale; details.skipped elenca gli elementi rifiutati uno per uno. Un elemento con esito sconosciuto non viene mai ripetuto.

no
STORED_FILE_NOT_FOUND
1520
404No stored file with that id for your organisation: it never existed, was deleted, expired, or belongs to another organisation — the same answer for all. Upload it again.

Nessun file archiviato con quell’id per la tua organizzazione: non è mai esistito, è stato eliminato, è scaduto, oppure appartiene a un’altra organizzazione — la stessa risposta per tutti i casi. Caricalo di nuovo.

no
Service side
RENDERING_FAILED
1901
500The merge step failed for a reason that is not the payload's fault.

Il passaggio di unione non è riuscito per un motivo che non dipende dai dati.

no
CONVERSION_FAILED
1902
500PDF conversion failed, or a settings-driven post-processing step did (PDF/A export, colour conversion).

La conversione in PDF non è riuscita, oppure non è riuscito un passaggio di post-elaborazione guidato da settings (esportazione PDF/A, conversione del colore).

no
CONVERSION_TIMEOUT
1903
504Conversion or post-processing exceeded its time limit.

La conversione o la post-elaborazione ha superato il tempo massimo.

yes
STORAGE_UNAVAILABLE
1904
503Template or document storage could not be reached.

Non è stato possibile raggiungere l'archivio dei modelli o dei documenti.

yes
INTERNAL_ERROR
1905
500Anything unclassified.

Qualsiasi errore non classificato.

yes
TRUST_PROVIDER_NOT_CONFIGURED
1906
503This deployment cannot perform what you asked for — the platform does not offer the qualified seal and timestamp (details.comingSoon: true, whatever your organisation holds; they are on sale now, so this is a switch we turned off), or no sealing certificate or timestamp authority is configured, or a provider does not offer the one you asked for. Ours to fix, not yours, and distinct from FEATURE_NOT_ENABLED for that reason. The document is refused, before anything is reserved or charged, rather than returned without what it was asked to carry.

Questa installazione non può eseguire ciò che hai chiesto — la piattaforma non offre il sigillo qualificato e la marca temporale (details.comingSoon: true, qualunque cosa abbia la tua organizzazione; sono in vendita ora, quindi è un interruttore che abbiamo spento noi), oppure non è configurato nessun certificato di sigillo o autorità di marcatura temporale, oppure un fornitore non offre quello che hai chiesto. Tocca a noi risolverlo, non a te, e per questo è distinto da FEATURE_NOT_ENABLED. Il documento viene rifiutato, prima che venga riservato o addebitato qualsiasi cosa, invece di essere restituito senza ciò che doveva contenere.

no
TRUST_PROVIDER_UNAVAILABLE
1907
503The seal or timestamp provider was asked and could not be reached, or refused us — a connection that never got through, a rate limit, an upstream failure. details.category carries the normalised reason. Retryable: the identical request works once they answer, and nothing about it has to change.

Il fornitore del sigillo o della marca temporale è stato interpellato e non è stato raggiungibile, oppure ci ha rifiutati — una connessione mai riuscita, un limite di frequenza, un guasto a monte. details.category contiene il motivo normalizzato. Da ritentare: la stessa identica richiesta funziona appena rispondono, e non deve cambiare nulla.

yes
SEAL_FAILED
1908
502A qualified seal was asked for, everything allowed it, and it could not be applied — so no document is returned. Deliberate: a composition can be run again, and handing back an unsealed PDF where a seal was asked for would be claiming a property the file does not have. Nothing was charged for the seal. Not marked retryable, because the provider may have performed the operation before the failure and a blind retry could buy a second one. details.category: "OUTCOME_UNKNOWN" is that case exactly: the provider received the request and its answer was lost. An envelope behaves differently on purpose — see SEAL_NOT_APPLIED.

È stato chiesto un sigillo qualificato, tutto lo consentiva, e non è stato possibile applicarlo — quindi non viene restituito alcun documento. È voluto: una composizione si può rieseguire, e restituire un PDF non sigillato dove era stato chiesto un sigillo significherebbe attribuire al file una proprietà che non ha. Non è stato addebitato nulla per il sigillo. Non è indicato come da ritentare, perché il fornitore potrebbe aver eseguito l'operazione prima del guasto e un nuovo tentativo alla cieca potrebbe comprarne un secondo. details.category: "OUTCOME_UNKNOWN" è esattamente questo caso: il fornitore ha ricevuto la richiesta e la sua risposta è andata persa. Una busta si comporta diversamente di proposito — vedi SEAL_NOT_APPLIED.

no
TIMESTAMP_FAILED
1909
502The same, for the qualified timestamp.

Lo stesso, per la marca temporale qualificata.

no
BULK_JOB_TIMED_OUT
1910
504Seen only as the error of a bulk item: the item was still waiting when its job passed its deadline, so it was not run. Its credit was released. Put it in a new batch.

Compare solo come error di un elemento massivo: l'elemento era ancora in attesa quando la sua elaborazione ha superato la scadenza, quindi non è stato eseguito. Il suo credito è stato liberato. Inseriscilo in un nuovo lotto.

yes
PROVIDER_BILLING_PROFILE_INCOMPLETE
1911
503The seal provider refused because our own account with it is not complete. This is ours to fix and nothing in your request can change it: you are told the service is temporarily unavailable, nothing is charged for the seal (anything already paid for it at the send is returned), and the identical request works once we have fixed it.

Il fornitore del sigillo ha rifiutato perché il nostro account presso di lui non è completo. Tocca a noi sistemarlo e niente nella tua richiesta può cambiarlo: ti viene detto che il servizio è temporaneamente non disponibile, non viene addebitato nulla per il sigillo (quanto già pagato per esso all'invio viene restituito), e la stessa identica richiesta funziona appena lo abbiamo sistemato.

yes
Limits
QUOTA_EXCEEDED
1801
429The prepaid balance does not cover the operation: no credit left. details carries requestedCredits, currentBalance, reservedCredits, availableCredits and missingCredits, and a flow names its breakdown. The whole request is refused before any work, and nothing was reserved.

Il saldo prepagato non copre l'operazione: il credito è esaurito. details porta requestedCredits, currentBalance, reservedCredits, availableCredits e missingCredits, e un flusso indica il suo breakdown. L'intera richiesta viene rifiutata prima di qualsiasi lavoro, e niente è stato riservato.

no
RATE_LIMIT_EXCEEDED
1802
429More than max_requests_per_minute calls in the last 60 seconds. Carries Retry-After, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

Più di max_requests_per_minute chiamate negli ultimi 60 secondi. Porta Retry-After, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

yes
SERVER_BUSY
1804
503Every conversion slot on this instance is in use (measured ceiling, not a per-tenant limit). Carries Retry-After; a well-behaved caller waits that long before retrying rather than immediately.

Tutti gli slot di conversione di questa istanza sono occupati (limite misurato, non un limite per tenant). Contiene Retry-After; un chiamante corretto aspetta quel tempo prima di ritentare, invece di ritentare subito.

yes
SERVICE_PAUSED
1805
503An operator has paused generation across the whole platform — the emergency switch that exists so an incident can be stopped without a deploy. Nothing is wrong with your request and nothing about it needs to change; the identical call succeeds once the pause is lifted. Carries Retry-After.

Un operatore ha messo in pausa la generazione su tutta la piattaforma — l’interruttore di emergenza che esiste per poter fermare un incidente senza un deploy. Nella tua richiesta non c’è niente di sbagliato e non devi cambiare nulla; la stessa identica chiamata riesce appena la pausa viene tolta. Contiene Retry-After.

yes
RECIPIENT_VOLUME_EXCEEDED
1806
429Sending this envelope would take your organisation past the number of distinct addresses it may write to in a rolling 24 hours — signers, cc and bcc together, across every envelope. Outbound mail leaves under a shared sender, so this protects the deliverability of everybody’s signature requests rather than any one account. Nothing was charged and the envelope is untouched: it is still a draft and the same call works tomorrow. The ceiling is higher once your organisation has completed a purchase, and an operator can raise it further for a customer that genuinely sends at volume.

Inviare questa busta porterebbe la tua organizzazione oltre il numero di indirizzi distinti a cui può scrivere nell’arco di 24 ore mobili — firmatari, cc e bcc insieme, su tutte le buste. La posta in uscita parte da un mittente condiviso, quindi questo limite protegge il recapito delle richieste di firma di tutti, non quello di un singolo account. Niente è stato addebitato e la busta non è stata toccata: è ancora una bozza e la stessa chiamata funziona domani. Il limite è più alto una volta che la tua organizzazione ha completato un acquisto, e un operatore può alzarlo ulteriormente per un cliente che invia davvero grandi volumi.

yes
TEST_QUOTA_EXCEEDED
1807
429Your organisation has spent its shared daily pool of isTest items (20 a day unless an operator set another number); a whole call is refused, never trimmed to what is left. details carries requestedItems, remainingTestItems and dailyLimit. Nothing was charged — a test call never touches credit. The pool resets at UTC midnight. A test item is spent on the attempt, so a retried failing call still uses one.

La tua organizzazione ha esaurito il suo pool giornaliero condiviso di elementi isTest (20 al giorno, salvo un numero diverso impostato da un operatore); viene rifiutata un’intera chiamata, mai ridotta a ciò che resta. details contiene requestedItems, remainingTestItems e dailyLimit. Non è stato addebitato nulla — una chiamata di test non tocca mai il credito. Il pool si azzera a mezzanotte UTC. Un elemento di test si consuma al tentativo, quindi anche una chiamata fallita e ritentata ne usa uno.

no
TEST_CAPACITY_TEMPORARILY_LIMITED
1808
503A test (isTest) call was turned away to protect production: a production request was waiting, the test share of the render slots was in use, or the test queue was full. Nothing was reserved, charged or taken from the test pool. Carries Retry-After; sandbox traffic is throttled first by design, so back off and try again.

Una chiamata di test (isTest) è stata respinta per proteggere la produzione: c’era una richiesta di produzione in attesa, la quota di test degli slot di rendering era in uso, oppure la coda di test era piena. Non è stato riservato, addebitato né prelevato nulla dal pool di test. Contiene Retry-After; il traffico sandbox viene limitato per primo per scelta, quindi rallenta e riprova.

yes
QUEUE_CAPACITY_EXCEEDED
1809
503The line for a render slot in this request's class is full, so waiting would only have ended in SERVER_BUSY. Refused before any work; nothing was charged. Carries Retry-After.

La coda per uno slot di rendering nella classe di questa richiesta è piena, quindi attendere sarebbe finito solo con SERVER_BUSY. Rifiutata prima di qualsiasi lavoro; niente è stato addebitato. Porta Retry-After.

yes
TENANT_CONCURRENCY_LIMIT_REACHED
1810
429Your organisation already has as many documents rendering (or waiting to) as one organisation may hold at once. Other organisations are not affected. Nothing was charged. Carries Retry-After; sending fewer calls at the same moment avoids it.

La tua organizzazione ha già tanti documenti in elaborazione (o in attesa) quanti una singola organizzazione può averne contemporaneamente. Le altre organizzazioni non sono coinvolte. Non è stato addebitato nulla. Contiene Retry-After; inviare meno chiamate nello stesso momento lo evita.

yes
BULK_ITEM_LIMIT_EXCEEDED
1811
422The batch has more items than allowed — the lowest of your own options.maxItems, your organisation’s limit and the platform’s, or, for an isTest batch, the test cap. Refused whole and never trimmed. details.requestedItems and details.allowedItems say by how much. Nothing was reserved.

Il lotto ha più elementi di quanti consentiti — il minore tra il tuo options.maxItems, il limite della tua organizzazione e quello della piattaforma, oppure, per un lotto isTest, il limite di test. Rifiutato per intero e mai ridotto. details.requestedItems e details.allowedItems indicano di quanto. Non è stato riservato nulla.

no
JOB_TOO_LARGE
1812
413The bulk body or the uploaded file is over its byte limit (details.limit). For a large batch upload a file instead of sending the items inline.

Il corpo dell'elaborazione massiva o il file caricato supera il suo limite di byte (details.limit). Per un lotto grande carica un file invece di inviare gli elementi nel corpo.

no
BULK_CONCURRENCY_LIMIT_REACHED
1813
429Your organisation already has as many bulk jobs running, items queued, unused uploads or submissions in the last minute as the platform allows; details.what says which. Nothing was reserved. Retry when a job finishes.

La tua organizzazione ha già tante elaborazioni massive in corso, elementi in coda, caricamenti non usati o invii nell'ultimo minuto quanti la piattaforma ne consente; details.what indica quale. Non è stato riservato nulla. Ritenta quando un'elaborazione finisce.

yes
MAINTENANCE_MODE
1814
503The platform is in planned maintenance: every call is answered with this until it ends, and nothing is done or charged. details.state is on. While maintenance is about to start it is pending: the bulk jobs already running are finished, and a new bulk job (or a retry of one) is refused with this code; single calls still work, and every answer carries X-Maintenance-Pending with the seconds left. Carries Retry-After; the identical call works afterwards.

La piattaforma è in manutenzione programmata: ogni chiamata riceve questa risposta finché la manutenzione non termina, e niente viene eseguito o addebitato. details.state è on. Quando la manutenzione sta per iniziare è pending: le elaborazioni massive già in corso vengono completate, e una nuova elaborazione massiva (o un nuovo tentativo di una) viene rifiutata con questo codice; le chiamate singole funzionano ancora, e ogni risposta porta X-Maintenance-Pending con i secondi rimanenti. Porta Retry-After; la stessa identica chiamata funziona dopo.

yes
PURCHASE_AMOUNT_TOO_LARGE
1815
422One credit purchase is more than EUR 1,000.00, VAT excluded — the most a single purchase may be (EUR 1,220.00 with Italian VAT). Refused before any order is opened or any payment provider is called: nothing is reserved or charged. Make several purchases, or contact us (the contact form, or Report a problem in the console) for a larger amount. details.netCents and details.maximumNetCents say by how much.

Un singolo acquisto di credito supera EUR 1,000.00, IVA esclusa — il massimo consentito per un singolo acquisto (EUR 1,220.00 con l'IVA italiana). Viene rifiutato prima che venga aperto un ordine o chiamato un fornitore di pagamento: niente viene riservato o addebitato. Fai più acquisti, oppure contattaci (il modulo di contatto, o Segnala un problema nella console) per un importo maggiore. details.netCents e details.maximumNetCents dicono di quanto.

no
SUBSCRIPTION_ALLOWANCE_EXHAUSTED
1816
429A counter of your plan (signatures, documents or calls) has nothing left for this request, and paying with credit after it is off (the default). Refused whole before anything is reserved or charged: a batch is never half-admitted, and a flow is not half-paid. Turn on Pay with credit when a counter of the plan is used up on the Billing page, renew, or wait for the next period. details.remaining and details.requested (by counter), details.missing (what is short) and details.endsAt say where you stand. An SMS code to a signer is never refused this way.

Un contatore del tuo piano (firme, documenti o chiamate) non ha più nulla per questa richiesta, e il pagamento con il credito dopo l’esaurimento è disattivato (l’impostazione predefinita). Rifiutata per intero prima che venga riservato o addebitato qualsiasi cosa: un batch non viene mai ammesso a metà, e un flusso non viene pagato a metà. Attiva Paga con il credito quando un contatore del piano è esaurito nella pagina Fatturazione, rinnova, oppure aspetta il periodo successivo. details.remaining e details.requested (per contatore), details.missing (cosa manca) e details.endsAt dicono a che punto sei. Un codice SMS a un firmatario non viene mai rifiutato in questo modo.

no
FILE_LIMIT_REACHED
1830
429Your organisation already keeps as many stored files as the platform allows. Delete some, or wait for them to expire.

La tua organizzazione conserva già tanti file quanti la piattaforma ne consente. Eliminane alcuni, oppure attendi che scadano.

no

Warnings: a call that succeeded, having done less

Some settings are not yours alone to decide. An organisation can require its signed documents to be sealed, or forbid it, from its own Settings page — and that setting is a ceiling, not a default: your request may go under it, never over. When it overrules something you asked for explicitly, the call still succeeds and the answer carries a warnings array.

{
  "id": "…",
  "seal": false,
  "timestamp": false,
  "padesProfile": null,
  "warnings": [
    {
      "code": "SEAL_NOT_ENABLED",
      "number": 2001,
      "message": "this organisation does not seal signed documents, so 'settings.seal' was ignored; the document was produced unsealed",
      "details": { "setting": "seal_mode" }
    }
  ]
}

A warning is not a softer error. It arrives on a 2xx and the operation went ahead. The rule for which you get: a request that would hand you something different from what you asked for is refused (that is why level: "AES" is a 501); a request that hands you less — the ordinary document, without an attestation — succeeds and warns.

Read seal, timestamp and, once the envelope completes, padesProfile from the response rather than assuming what you sent was used. They are echoed on every read of the envelope, and the warnings are stored with it, so a later GET /api/v1/sign/envelopes/{id} still tells you.

CodeWhen
SEAL_NOT_ENABLED
2001
You asked for a seal; the organisation has sealing switched off. The document is produced unsealed.

Hai chiesto un sigillo; l'organizzazione ha il sigillo disattivato. Il documento viene prodotto senza sigillo.

TIMESTAMP_NOT_ENABLED
2002
The same for a timestamp.

Lo stesso, per una marca temporale.

SEAL_REQUIRED_BY_ORGANISATION
2003
You asked not to seal; the organisation seals everything. It is sealed, and charged for.

Hai chiesto di non sigillare; l’organizzazione sigilla tutto. Il documento viene sigillato, e addebitato.

TIMESTAMP_REQUIRED_BY_ORGANISATION
2004
The same for a timestamp.

Lo stesso, per una marca temporale.

SEAL_NOT_CONFIGURED
2005
Wanted by everybody, and this platform has no sealing certificate installed. Ours, not yours — nothing in your request can fix it.

Voluto da tutti, e questa piattaforma non ha alcun certificato di sigillo installato. Il problema è nostro, non tuo — niente nella tua richiesta può risolverlo.

TIMESTAMP_NOT_CONFIGURED
2006
The same, for the timestamp authority.

Lo stesso, per l'autorità di marcatura temporale.

SEAL_NOT_APPLIED
2007
Configured, wanted, attempted at completion, and it did not work. The envelope still completed: a third party being unreachable never costs a signature that has been given.

Configurato, voluto, tentato al completamento, e non ha funzionato. La busta è stata comunque completata: una terza parte irraggiungibile non fa mai perdere una firma già apposta.

TIMESTAMP_NOT_APPLIED
2008
The same. Appears on the envelope after it completes, not on the create call.

Lo stesso. Compare sulla busta dopo che è stata completata, non sulla chiamata di creazione.

SEAL_NOT_ENTITLED
2009
Your organisation’s own setting seals every document, and the qualified seal is not active on the account. The document is produced without it and nothing is charged. You see this only when you asked for nothing: a request that asks explicitly is refused with FEATURE_NOT_ENABLED instead, because then somebody would be believing something untrue.

L’impostazione della tua organizzazione sigilla ogni documento, e il sigillo qualificato non è attivo sull’account. Il documento viene prodotto senza sigillo e non viene addebitato nulla. Lo vedi solo quando non hai chiesto nulla: una richiesta che lo chiede esplicitamente viene invece rifiutata con FEATURE_NOT_ENABLED, perché altrimenti qualcuno crederebbe a qualcosa di non vero.

TIMESTAMP_NOT_ENTITLED
2010
The same, for the qualified timestamp.

Lo stesso, per la marca temporale qualificata.

DELEGATION_NOT_ENABLED
2102
You asked to let signers pass the request on; the organisation does not allow it. The envelope is created and the option is off.

Hai chiesto di consentire ai firmatari di passare la richiesta ad altri; l'organizzazione non lo permette. La busta viene creata e l'opzione è disattivata.

DELEGATION_REQUIRED_BY_ORGANISATION
2103
You asked not to allow it; the organisation always does.

Hai chiesto di non consentirla; l'organizzazione la consente sempre.

TEST_DOCUMENT
2133
A test call ("isTest": true, or a test organisation). The document is free and carries TEST — NOT VALID on every page: it has no legal value and cannot pass for the real one. Validate says so before you call. Send the same call without isTest to get the real document, which is charged.

Una chiamata di test ("isTest": true, oppure un’organizzazione di test). Il documento è gratuito e riporta TEST — NOT VALID su ogni pagina: non ha valore legale e non può essere scambiato per quello vero. Validate lo segnala prima che tu chiami. Invia la stessa chiamata senza isTest per ottenere il documento vero, che viene addebitato.

SIGNER_NOT_ON_ENVELOPE
2134
Every signature tag of a signer was inside a condition that came out false, so that signer is not on the envelope: no mail, no link, nothing to sign. details.signers names them. If it happens to every signer, the request is refused with SIGNER_NOT_PLACED and the signature is not charged.

Tutti i tag di firma di un firmatario stavano dentro una condizione risultata falsa: quel firmatario non è sulla busta, non riceve email e non gli si chiede di firmare. details.signers li nomina. Se succede a tutti i firmatari, la richiesta è rifiutata con SIGNER_NOT_PLACED.

TEMPLATE_FIELDS_MISSING
2104
The template reads fields your payload did not carry. They rendered empty and the document was produced, because this template is not set to refuse incomplete data (errorOnMissingFields). details.fields names every one of them — this is the warning to read when a PDF comes back with blanks in it.

Il modello legge campi che il tuo payload non conteneva. Sono stati resi vuoti e il documento è stato prodotto, perché questo modello non è impostato per rifiutare dati incompleti (errorOnMissingFields). details.fields li nomina tutti — è l’avviso da leggere quando un PDF torna con dei vuoti.

RENDER_NOTES
2105
The renderer had something to say while producing this document: a value it shortened, a section that did not appear, a comparison it could not make. details.notes carries the texts and details.count how many — except on a dataless generation, which gets the count alone, because a note quotes your own values.

Il renderer aveva qualcosa da segnalare durante la produzione di questo documento: un valore che ha accorciato, una sezione che non è comparsa, un confronto che non ha potuto fare. details.notes porta i testi e details.count quanti sono — tranne in una generazione senza dati, che riceve solo il conteggio, perché una nota cita i tuoi stessi valori.

PAYLOAD_SCHEMA_VIOLATIONS
2106
The payload does not satisfy the template's JSON Schema and the template is set to warn (the default), so the document was produced anyway. details.violations lists the first ones as {path, keyword, message} and details.count how many there were. A value from your payload is never in it, so it is the same on a dataless generation.

Il payload non rispetta il JSON Schema del modello e quest'ultimo è impostato su warn (il valore predefinito), quindi il documento è stato prodotto comunque. details.violations elenca le prime violazioni come {path, keyword, message} e details.count quante erano. Un valore del tuo payload non vi compare mai, quindi è uguale anche in una generazione senza dati.

TRUST_NOT_QUALIFIED
2107
The seal or timestamp on this document was applied by a provider that is simulated or not declared qualified (details.feature, details.simulated). The structure is genuine and verifies, but it carries no eIDAS presumption of origin or time. The call did what it said; treat the document accordingly. The same facts are in output.compose.trust as qualified and simulated.

Il sigillo o la marca temporale su questo documento sono stati applicati da un fornitore simulato o non dichiarato qualificato (details.feature, details.simulated). La struttura è autentica e si verifica, ma non porta alcuna presunzione eIDAS di origine o di data e ora. La chiamata ha fatto ciò che dichiarava; tratta il documento di conseguenza. Gli stessi dati sono in output.compose.trust come qualified e simulated.

COMPRESSION_SKIPPED
2120
compressionLevel was asked for and not applied: the document is converted to PDF/A, is black-and-white, or compressing would not have made it smaller (details.reason: pdfa, blackwhite, not_smaller). The document is exactly what the request without the setting would produce.

compressionLevel è stato richiesto e non applicato: il documento è convertito in PDF/A, è in bianco e nero, oppure la compressione non lo avrebbe reso più piccolo (details.reason: pdfa, blackwhite, not_smaller). Il documento è esattamente quello che produrrebbe la richiesta senza l'impostazione.

PDFA_NOT_VERIFIED
2121
A PDF/A conversion was made and the result was not validated against a PDF/A checker, so no conformance is claimed. output.compose.pdfa.verified is false. Validate the file yourself if you rely on it.

È stata eseguita una conversione PDF/A e il risultato non è stato validato con un validatore PDF/A, quindi non si dichiara alcuna conformità. output.compose.pdfa.verified è false. Valida tu il file se ci fai affidamento.

ATTESTATION_REFUNDED_ENVELOPE_CLOSED
2130
An envelope was cancelled, expired or declined after it was sent, so the seal and the timestamp it had paid for were returned to the credit they came from. The signature is not returned: the work of sending was done. details.units and details.credits say what came back.

Una busta è stata annullata, è scaduta o è stata rifiutata dopo l'invio, quindi il sigillo e la marca temporale che aveva pagato sono stati restituiti al credito da cui provenivano. La firma non viene restituita: il lavoro di invio è stato fatto. details.units e details.credits indicano cosa è stato restituito.

ATTESTATION_REFUNDED_NOT_APPLIED
2131
The seal or timestamp paid at the send could not be applied when the last signer finished (the provider or the authority was down or refused), so it was returned at once. The envelope completed without it, as SEAL_NOT_APPLIED says.

Il sigillo o la marca temporale pagati all'invio non hanno potuto essere applicati quando l'ultimo firmatario ha finito (il fornitore o l'autorità non era disponibile o ha rifiutato), quindi sono stati restituiti subito. La busta si è completata senza, come indica SEAL_NOT_APPLIED.

ATTESTATION_REFUNDED_OUTCOME_UNKNOWN
2132
The seal's request reached the provider and the answer was lost. We cannot say whether it was performed, so it was returned at once and the request is not repeated: the risk is ours, not yours. The envelope completed without the seal.

La richiesta del sigillo ha raggiunto il fornitore e la risposta è andata persa. Non possiamo dire se sia stata eseguita, quindi è stato restituito subito e la richiesta non viene ripetuta: il rischio è nostro, non tuo. La busta si è completata senza il sigillo.

DOCUMENT_NOT_STORED
2201
This generation was dataless: the PDF in your hands is the only copy there will ever be, and nothing about the request was written down. Arrives as a header (X-Warning-Code) rather than in a body, because the body of that call is the PDF. X-Document-Id is empty for the same reason. See Generating a document.

Questa generazione era dataless: il PDF che hai in mano è l'unica copia che esisterà mai, e nulla della richiesta è stato registrato. Arriva come header (X-Warning-Code) invece che nel corpo, perché il corpo di quella chiamata è il PDF. X-Document-Id è vuoto per lo stesso motivo. Vedi Generare un documento.

DOCUMENT_STORED_FOR_SIGNATURE
2202
Your organisation composes dataless and this call was a flow, so the document was kept — it is being signed. What you sent was still not recorded. The half that could be honoured, was, and this says which half.

La tua organizzazione compone in modalità dataless e questa chiamata era un flusso, quindi il documento è stato conservato — è in firma. Quello che hai inviato non è stato comunque registrato. La metà che poteva essere rispettata lo è stata, e questo indica quale metà.

DOCUMENT_STORED_FOR_BULK
2203
Your organisation composes dataless and this was a bulk batch, so its documents were kept — a batch answers with no bytes, and they are fetched afterwards. What you sent was not recorded, and each item’s payload is wiped when the item finishes.

La tua organizzazione compone in modalità dataless e questo era un lotto massivo, quindi i suoi documenti sono stati conservati — un lotto risponde senza byte, e i documenti si scaricano dopo. Quello che hai inviato non è stato registrato, e i dati di ogni elemento vengono cancellati quando l'elemento finisce.

Rate limiting is per organisation, and a key can have its own limit too. Several active keys on one account share the organisation's per-minute budget; a key given a lower limit of its own is refused on that one first (details.limitedBy: "token", see A limit for one key). Besides the per-minute limits there are size limits (a request body of at most 25 MB, and the sizes under Reference → Limits in your console), the daily pool of test calls and a 24-hour ceiling on signing invitations. SERVER_BUSY is different: it is a shared ceiling across every tenant on the instance, not a per-tenant number — it exists to protect the machine, not to meter your account.