Integrazione
Esporta MarkdownDocumentazione API esterna V1
Converti le fatture in e-fatture validate direttamente dai tuoi sistemi: carica un documento PDF, DOCX o TXT – oppure dati ERP strutturati – e scarica l’output XRechnung, ZUGFeRD, EN 16931, UBL o CII una volta superata la validazione. Questa pagina è il contratto di integrazione completo: modello di accesso, endpoint, catalogo errori e limiti.
Cinque endpoint REST trasformano fatture PDF, DOCX o TXT – o dati ERP strutturati – in e-fatture validate XRechnung, ZUGFeRD, EN 16931, UBL e CII. Gli abbonati Enterprise attivi creano le chiavi direttamente; ogni mese sono incluse 100 conversioni condivise Email/API, poi ogni conversione usa 0,40–0,50 € di crediti prepagati.
Panoramica
L’API accetta upload multipart, restituisce risposte JSON e usa codici di stato HTTP standard con autenticazione Bearer. Ogni conversione è asincrona: invia il documento, interroga il task, scarica il risultato. Un file viene consegnato solo dopo che la validazione è stata superata: non esistono output non validati.
Invia un documento fattura PDF, DOCX o TXT oppure dati fattura strutturati a un endpoint di conversione. Invoice-Converter avvia un task asincrono per estrazione, validazione e generazione degli artefatti. L’endpoint del risultato restituisce un file solo quando l’artefatto richiesto è validato, controllato e pronto; durante l’elaborazione restituisce 202 TASK_NOT_READY, mentre i problemi di validazione bloccanti restituiscono 422 VALIDATION_FAILED.
Stato: accesso Enterprise
Percorso base: /api/v1. Ultimo allineamento 2026-09-08.
Funzionalità principali
- Endpoint di upload per fatture PDF e dati fattura strutturati
- Estrazione dei dati fattura con revisione dei campi rispetto alla fonte
- Validazione automatica EN 16931 e KoSIT
- Formati di output XRechnung, ZUGFeRD, EN16931, UBL e CII
- Elaborazione asincrona con polling, fatture piccole in circa 30 secondi e fatture più grandi fino a 1-2 minuti
- Scritture idempotenti per retry sicuri
Avvia l’accesso API Enterprise
Ogni abbonato Enterprise attivo può creare chiavi API di produzione direttamente nel profilo.
- Crea un account e avvia Enterprise dalla pagina dei prezzi: 35 €/mese con fatturazione annuale (420 €/anno); con fatturazione mensile: 50 €/mese.
- Usa le 100 conversioni condivise Email/API incluse ogni mese; le conversioni aggiuntive usano crediti prepagati a 0,40–0,50 € ciascuna.
- Crea una chiave API live dalla sezione accesso API del profilo.
- Esegui la prima richiesta con credenziali server-side, poi monitora l’uso e ruota le chiavi dal profilo.
Avvia Enterprise
Avvio rapido
Tre chiamate API completano una conversione. L’endpoint di conversione è servito su /api/v1 e richiede autenticazione.
POST /api/v1/invoices:convert
LiveConverti documento fattura
POST /api/v1/invoices:convert-structured
LiveConverti dati strutturati
GET /api/v1/tasks/{task_id}
LiveEsegui polling dello stato task
Avvio rapido con curl
Sostituisci $API_KEY con la tua chiave live e $TASK_ID con il task_id della prima risposta. Le stesse tre chiamate valgono per ogni formato di output.
curl -X POST "https://www.invoice-converter.com/api/v1/invoices:convert" \
-H "Authorization: Bearer $API_KEY" \
-H "Idempotency-Key: inv-2026-0001" \
-F "file=@invoice.pdf" \
-F "format=XRECHNUNG"curl "https://www.invoice-converter.com/api/v1/tasks/$TASK_ID" \
-H "Authorization: Bearer $API_KEY"curl -o invoice.xml \
"https://www.invoice-converter.com/api/v1/tasks/$TASK_ID/result?download=xml" \
-H "Authorization: Bearer $API_KEY"URL base e chiavi API
- URL di base di produzione:
https://www.invoice-converter.com/api/v1. - Le chiavi live usano l’host di produzione e il prefisso
icp_.... - Esegui richieste di onboarding e validazione con la tua chiave live prima di inviare volumi di produzione.
- Tratta le chiavi come secret server-side. Non inserirle in client browser o mobile.
Prima richiesta riuscita
Usa questa sequenza come percorso minimo dopo aver creato una chiave API.
- Caricamento:
POST /api/v1/invoices:convertconAuthorization,Idempotency-Key,file=@invoice.pdf(o.docx/.txt) eformat=XRECHNUNG. - Esegui polling con backoff: attendi circa
20 secondidopo il202, poi chiamaGET /api/v1/tasks/{task_id}a intervalli di 20s, 30s, 45s, 60s e 60s finché lo stato ècompletedofailed. Resta entro la quota di stato di10/mine120/houre interrompi dopo circa 16 minuti. - Scaricamento:
GET /api/v1/tasks/{task_id}/result?download=xmle salvaX-Correlation-IDper il tracciamento del supporto. - Per output PDF ZUGFeRD, richiedi
format=ZUGFERDnel convert edownload=pdfnel result; l’output PDF ibrido richiede una sorgente PDF. - Per input strutturato, chiama
POST /api/v1/invoices:convert-structuredconpdf_file=@invoice.pdf,data_file=@invoice-data.jsone ilformatdi destinazione. - Invia opzionalmente
client_referenceoexternal_invoice_idesource_systemper la riconciliazione ERP. - Per export ERP divisi di una fattura, ripeti
data_file; per più fatture, avvia un task per fattura con una propria idempotency key. - Salva
result_artifactsdalla risposta di stato per vedere se gli artefatti XML/PDF sono validati, in cache o ancora non disponibili per dipendenze.
Esempi comuni di payload
XRECHNUNG: inviaformat=XRECHNUNG.ZUGFERD: inviaformat=ZUGFERD; usadownload=pdfnel result per l’output ibrido PDF/A-3.Input strutturato: inviapdf_filepiù una o più partidata_file; i formati dati accettati sono CSV, JSON, XML, XLSX e TXT, con qualsiasi formato di destinazione supportato. Le parti data_file devono contenere tutti i dati obbligatori; il PDF non completa i campi mancanti.Più fatture: invia richieste convert separate e traccia ognitask_idrestituito; le partidata_fileripetute servono solo per export divisi della stessa fattura.UBL: inviaformat=UBL; i profili accettati sonoXRECHNUNG,PEPPOLeEN16931, con defaultEN16931.CII: inviaformat=CII; i profili accettati sonoXRECHNUNG,EN16931,ZUGFERD_EN16931,ZUGFERD_FACTURX_EXTENDEDeZUGFERD_XRECHNUNG, con defaultEN16931.formatxprofileè una tabella chiusa:XRECHNUNGaccetta[XRECHNUNG](defaultXRECHNUNG),EN16931accetta[EN16931](defaultEN16931),UBLaccetta[XRECHNUNG, PEPPOL, EN16931](defaultEN16931),CIIaccetta[XRECHNUNG, EN16931, ZUGFERD_EN16931, ZUGFERD_FACTURX_EXTENDED, ZUGFERD_XRECHNUNG](defaultEN16931) eZUGFERDaccetta[ZUGFERD_EN16931, ZUGFERD_FACTURX_EXTENDED, ZUGFERD_XRECHNUNG](defaultZUGFERD_EN16931). I profili sono confrontati senza distinzione tra maiuscole e minuscole;ZUGFERD,FACTURX,FACTUR-XeFACTUR_Xsono alias diZUGFERD_EN16931, eZUGFERD-XRECHNUNGè alias diZUGFERD_XRECHNUNG.
Header richiesti
- Authorization: Bearer <api_key>
Regole di autenticazione
Ogni abbonato Enterprise attivo può creare chiavi API dal profilo e usarle come Bearer token. La quota condivisa Email/API comprende 100 conversioni al mese; le conversioni aggiuntive usano crediti prepagati a 0,40–0,50 € ciascuna.
- Le chiavi sono credenziali live scoped per tenant per abbonamenti Enterprise attivi. Il prefisso di produzione corrente è
icp_.... - Crea, ruota e revoca le chiavi API dal profilo mentre Enterprise è attivo. Copia subito le nuove chiavi perché il valore in chiaro viene mostrato una sola volta.
- Chiave mancante o non valida restituisce
401. - Le chiamate a
/api/v1ricevono automaticamenteX-Correlation-IDse omesso. - Le chiamate di scrittura richiedono
Idempotency-Key; mantieni stabile questo valore nei retry. - Usa integrazione server-to-server dal tuo backend. L’accesso da browser-origin è limitato in produzione.
Contratto di idempotenza
- Invia un
Idempotency-Keya ogni chiamata di scrittura. - Le chiavi di idempotenza devono corrispondere a
[A-Za-z0-9._:-]+ed essere lunghe al massimo 200 caratteri. - Se fornisci una tua chiave, stessa chiave + payload identico restituisce la risposta in cache.
- Stessa chiave + payload diverso restituisce
409 IDEMPOTENCY_CONFLICT, che non è ripetibile; usa una nuova chiave per un nuovo payload. - Una seconda richiesta con la stessa chiave mentre la prima è ancora in elaborazione restituisce
409 IDEMPOTENCY_IN_PROGRESS; riprova con la stessa chiave dopo una breve attesa. Una prenotazione bloccata viene rilasciata dopo15 minuti. - Se il task originale ha superato la ritenzione di 24 ore, un replay restituisce
409 IDEMPOTENCY_REPLAY_EXPIRED; avvia una nuova conversione con una nuova chiave. - I record di idempotenza vivono
24 ore, in linea con la ritenzione dei task.
Riferimento endpoint
Tutti gli endpoint sono disponibili su /api/v1. I timeout emergono come 504 e altri errori temporanei di connettività come 502; gli ID di correlazione aiutano il supporto a seguire le richieste end-to-end.
POST /api/v1/invoices:convert
LiveCarica un documento fattura PDF, DOCX o TXT e avvia la conversione asincrona. Restituisce un task_id per il polling. I download PDF ibridi ZUGFeRD/Factur-X richiedono una sorgente PDF; per sorgenti DOCX/TXT richiedere risultati XML. L’XML fattura incorporato viene ignorato per impostazione predefinita; imposta use_embedded_xml=true solo se l’integrazione lo accetta come fonte primaria di estrazione. Richiesta: multipart/form-data; file (binary, obbligatorio) — documento sorgente fattura PDF, DOCX o TXT; i vecchi DOC/RTF, immagini e altri file sono rifiutati; format (string, obbligatorio) — formato di output target; vedere la matrice dei formati sotto; profile (string, opzionale, consigliato per integrazioni deterministiche) — profilo di conformità esplicito, confrontato senza distinzione tra maiuscole e minuscole. Ogni formato ha un insieme chiuso di valori accettati e un solo default: XRECHNUNG → [XRECHNUNG] (default XRECHNUNG); EN16931 → [EN16931] (default EN16931); UBL → [XRECHNUNG, PEPPOL, EN16931] (default EN16931); CII → [XRECHNUNG, EN16931, ZUGFERD_EN16931, ZUGFERD_FACTURX_EXTENDED, ZUGFERD_XRECHNUNG] (default EN16931); ZUGFERD → [ZUGFERD_EN16931, ZUGFERD_FACTURX_EXTENDED, ZUGFERD_XRECHNUNG] (default ZUGFERD_EN16931). ZUGFERD, FACTURX, FACTUR-X e FACTUR_X sono alias di ZUGFERD_EN16931; ZUGFERD-XRECHNUNG è alias di ZUGFERD_XRECHNUNG. Un valore fuori dall’insieme accettato restituisce 422 OUTPUT_PROFILE_CONFLICT; un nome di profilo non riconosciuto restituisce 422 INVALID_PROFILE con details.allowed_profiles; jurisdiction (string, opzionale) — contesto di giurisdizione ISO 3166-1 alpha-2 esplicito usato per controlli di validazione/avviso; non sovrascrive il profilo; transaction_scope (string, opzionale) — contesto esplicito dell’ambito transazionale, ad esempio B2G; applicato al task in coda; delivery_channel (string, opzionale) — uno tra PEPPOL, DIRECT_XML, PORTAL, EMAIL_PDF, UNKNOWN; applicato al task in coda; client_reference o external_invoice_id (string, opzionale) — riferimento fattura/job lato cliente restituito negli upload accettati e nelle risposte di stato task; source_system (string, opzionale) — etichetta dell’ERP o sistema di fatturazione upstream restituita negli upload accettati e nelle risposte di stato task; email_input (testo libero, opzionale, solo sorgenti PDF) — istruzioni del cliente in qualsiasi lingua, fino a 10.000 caratteri, inviate senza marcatori di blocco e-mail; tutti i passaggi di estrazione e correzione AI le ricevono separatamente dal testo sorgente della fattura; non combinabile con use_embedded_xml=true, fa parte dell’identità della richiesta usata per l’idempotenza e non è supportata da invoices:convert-structured; la validazione standard della fattura resta valida; use_seller_master_data (boolean, opzionale) — se omesso vale il default del profilo tenant; false ignora i dati anagrafici venditore salvati per questa richiesta, true fornisce/usa i dati anagrafici venditore; seller_master_data (stringa oggetto JSON, opzionale) — dati venditore usati solo quando use_seller_master_data=true; supporta campi aziendali, indirizzo, fiscali, contatto e pagamento (payment_means_code 30/42/58, payment_iban, payment_bic, payment_account_name, payment_terms_note); ogni valore del profilo sostituisce il corrispondente valore estratto, i campi assenti dal profilo restano invariati e le differenze generano avvisi non bloccanti; electronic_address e electronic_address_scheme devono essere forniti insieme oppure entrambi omessi; use_embedded_xml (boolean, opzionale, default false) — l’XML Factur-X, ZUGFeRD o XRechnung incorporato viene ignorato salvo valore esplicito true; usare solo se l’integrazione accetta l’XML incorporato come fonte primaria di estrazione. Risposta: 202 Accepted.
POST /api/v1/invoices:convert-structured
LiveCarica un PDF contenitore con dati fattura CSV, JSON, XML, XLSX o TXT e avvia la conversione asincrona da dati strutturati. Le parti data_file sono l’unica fonte semantica; il PDF non completa i campi fattura mancanti. Per ZUGFeRD/Factur-X viene usato come PDF contenitore, mentre per output orientati a XML viene conservato come artefatto PDF inviato. Usa una richiesta di conversione per fattura; ripeti data_file solo per export ERP divisi che descrivono la stessa fattura. Richiesta: multipart/form-data; pdf_file (binary, obbligatorio) — PDF contenitore usato per l’incorporamento ZUGFeRD/Factur-X e conservato per output orientati a XML; data_file (binary, obbligatorio, ripetibile) — dati fattura CSV, JSON, XML, XLSX o TXT usati come unica fonte semantica; .xls, PDF e file immagine sono rifiutati come data_file; ripeti per export header/righe divisi della stessa fattura; gli alias data_files e data_files[] sono accettati; dimensione totale dati strutturati — massimo 2 MB su tutte le parti data_file; format (string, obbligatorio) — formato output di destinazione; supporta XRECHNUNG, ZUGFERD, EN16931, UBL e CII; profile (string, opzionale, consigliato per integrazioni deterministiche) — profilo di conformità esplicito, confrontato senza distinzione tra maiuscole e minuscole. Ogni formato ha un insieme chiuso di valori accettati e un solo default: XRECHNUNG → [XRECHNUNG] (default XRECHNUNG); EN16931 → [EN16931] (default EN16931); UBL → [XRECHNUNG, PEPPOL, EN16931] (default EN16931); CII → [XRECHNUNG, EN16931, ZUGFERD_EN16931, ZUGFERD_FACTURX_EXTENDED, ZUGFERD_XRECHNUNG] (default EN16931); ZUGFERD → [ZUGFERD_EN16931, ZUGFERD_FACTURX_EXTENDED, ZUGFERD_XRECHNUNG] (default ZUGFERD_EN16931). Un valore fuori dall’insieme accettato restituisce 422 OUTPUT_PROFILE_CONFLICT; un nome di profilo non riconosciuto restituisce 422 INVALID_PROFILE con details.allowed_profiles; jurisdiction (string, opzionale) — contesto di giurisdizione ISO 3166-1 alpha-2 esplicito usato per controlli di validazione/avviso; non sovrascrive il profilo; transaction_scope (string, opzionale) — contesto esplicito dell’ambito transazionale, ad esempio B2G; applicato al task in coda; delivery_channel (string, opzionale) — uno tra PEPPOL, DIRECT_XML, PORTAL, EMAIL_PDF, UNKNOWN; applicato al task in coda; client_reference o external_invoice_id (string, opzionale) — riferimento fattura/job lato cliente restituito negli upload accettati e nelle risposte di stato task; source_system (string, opzionale) — etichetta dell’ERP o sistema di fatturazione upstream restituita negli upload accettati e nelle risposte di stato task; use_seller_master_data (boolean, opzionale) — se omesso vale il default del profilo tenant; false ignora i dati anagrafici venditore salvati per questa richiesta, true fornisce/usa i dati anagrafici venditore; seller_master_data (stringa oggetto JSON, opzionale) — dati venditore usati solo quando use_seller_master_data=true; supporta campi aziendali, indirizzo, fiscali, contatto e pagamento (payment_means_code 30/42/58, payment_iban, payment_bic, payment_account_name, payment_terms_note); ogni valore del profilo sostituisce il corrispondente valore estratto, i campi assenti dal profilo restano invariati e le differenze generano avvisi non bloccanti; electronic_address e electronic_address_scheme devono essere forniti insieme oppure entrambi omessi. Risposta: 202 Accepted.
GET /api/v1/tasks/{task_id}
LiveEsegui il polling dello stato corrente di un task di conversione. Restituisce pending (accettato e in coda, non ancora avviato), processing, completed o failed. Rate limit 10/min e 120/hour: è il vincolo determinante per il polling: attendi circa 20 secondi dopo il 202 accettato prima della prima chiamata, poi distanzia le chiamate (20s, 30s, 45s, 60s e da lì 60s) e fermati su completed o failed. I task completati includono diagnostica result_artifacts, così i client possono vedere quali artefatti XML/PDF sono disponibili, in cache e provati dalla validazione. I payload dei task completati possono includere voci aggiuntive _processing_warnings e _validation_warnings con ID delle regole SOURCE_CONTEXT_* quando le evidenze della fonte erano indisponibili, sospette o troncate; trattale come segnali di revisione, non come errori. Quando è failed, la risposta include un campo error con il motivo dell’errore. Richiesta: nessuno (GET); task_id (path, obbligatorio) — UUID restituito dall’endpoint di conversione; include_validation_report_html (query, opzionale) — true o false (default false); con true la risposta di stato include il report di validazione HTML sanificato dell’artefatto rigoroso corrente quando disponibile. Risposta: 200 OK.
GET /api/v1/tasks/{task_id}/result
LiveScarica il file generato (XML o PDF). La sintassi del risultato corrisponde al formato originale del task: XRECHNUNG/EN16931/UBL restituiscono UBL XML, CII/ZUGFERD restituiscono CII XML, e ZUGFERD + download=pdf restituisce un PDF/A-3 ibrido. Per altri formati, download=pdf può restituire un PDF renderizzato; su un task completato download=xml è l’artefatto atteso come disponibile, non garantito. Download ripetuti possono essere serviti da artefatti generati in cache quando la prova di validazione è ancora attuale. Durante l’elaborazione questo endpoint restituisce un 202 con l’envelope di errore standard ({"code":"TASK_NOT_READY","message":"Strict conversion is still processing. No validated artifact is available yet.","correlation_id":"<uuid>"}); i problemi di validazione bloccanti restituiscono 422 VALIDATION_FAILED, le dipendenze non disponibili ma ripetibili restituiscono 503, i fallimenti di conversione definitivi restituiscono 500 TASK_FAILED con il motivo in details.code e i fallimenti degli invarianti degli artefatti restituiscono 500 INTERNAL_ARTIFACT_INVARIANT_FAILED, sempre senza corpo file. I download riusciti riportano X-Correlation-ID, Content-Disposition, Cache-Control: no-store, X-Artifact-Sha256, X-Validation-Proof-Id, X-Artifact-Proof-Id, X-Artifact-State, X-Validation-State, X-Proof-Status e X-Validator-Bundle-Id; X-Task-Id non è impostato su questo endpoint. Rate limit 10/min e circa 134/hour. Richiesta: nessuno (GET); task_id (path, obbligatorio) — UUID restituito dall’endpoint di conversione; download (query, obbligatorio) — xml o pdf. Risposta: 200 OK.
GET /api/v1/tasks/{task_id}/validation-report
LiveScarica il report dell’artefatto risultato validato corrente. Il report è disponibile solo dopo che la conversione rigorosa ha salvato un artefatto con prova aggiornata; in caso contrario l’endpoint restituisce 202 o 404. Gli header della risposta identificano l’artefatto e la prova del report. X-Artifact-Sha256 indica l’artefatto risultato, non il file del report. Rate limit: 10/min e 120/ora. Richiesta: nessuno (GET); task_id (percorso, obbligatorio) — UUID restituito da un endpoint di conversione; download (query, opzionale) — html o xml. Risposta: 200 OK.
Matrice dei formati di output
| Formato | Sintassi | Versione / Profilo | Content-Type | Estensione |
|---|---|---|---|---|
| XRECHNUNG | UBL 2.1 XML | XRechnung 3.0.2 | application/xml | .xml |
| ZUGFERD | CII XML (download=xml) / PDF/A-3 ibrido (download=pdf) | ZUGFeRD 2.5 / Factur-X 1.09 | application/xml o application/pdf | .xml / .pdf |
| EN16931 | UBL 2.1 XML | EN 16931 | application/xml | .xml |
| UBL | UBL 2.1 XML | OASIS UBL 2.1 | application/xml | .xml |
| CII | UN/CEFACT CII XML | D16B | application/xml | .xml |
Contratto errori
| Codice | HTTP | Ripetibile | Note |
|---|---|---|---|
| AUTHENTICATION_REQUIRED | 401 | No | Bearer token mancante/vuoto |
| INVALID_API_KEY | 401 | No | Chiave API non trovata, revocata o scaduta |
| API_NOT_ENABLED_FOR_TENANT | 403 | No | La chiave è valida, ma l’accesso External API è disattivato per questo account; contatta il supporto |
| INSUFFICIENT_API_CREDITS | 402 | No | La quota mensile inclusa più i crediti API prepagati non coprivano la richiesta. Due forme di details: prepagato (remaining, minimum_purchase 100) e quota inclusa (included_remaining, credit_remaining, shortfall, minimum_purchase 100). Analizza il code e leggi le chiavi effettivamente presenti |
| IDEMPOTENCY_KEY_REQUIRED | 400 | No | Endpoint di scrittura chiamato senza Idempotency-Key |
| INVALID_IDEMPOTENCY_KEY | 400 | No | La chiave di idempotenza deve corrispondere a [A-Za-z0-9._:-]+ ed essere lunga al massimo 200 caratteri |
| IDEMPOTENCY_CONFLICT | 409 | No | La chiave è già stata usata con un payload diverso, oppure la prenotazione idempotente non è stata avviata; usa una nuova chiave per un nuovo payload |
| IDEMPOTENCY_IN_PROGRESS | 409 | Sì | La prima richiesta con questa chiave è ancora in elaborazione; riprova con la STESSA chiave dopo una breve attesa. Una prenotazione bloccata viene rilasciata dopo 15 minuti |
| IDEMPOTENCY_REPLAY_EXPIRED | 409 | No | Il task originale supera la conservazione di 24 ore; avvia una nuova conversione con una nuova chiave |
| FORMAT_REQUIRED | 400 | No | Richiesta di conversione senza il format obbligatorio |
| INVALID_FORMAT | 422 | No | Formato di conversione non supportato |
| CLIENT_REFERENCE_CONFLICT | 400 | No | client_reference ed external_invoice_id sono diversi |
| INVALID_CLIENT_METADATA | 400 | No | client_reference, external_invoice_id o source_system supera il limite di lunghezza o contiene caratteri di controllo |
| INVALID_EMAIL_INPUT | 400 | No | email_input è inviato più di una volta, supera i 10.000 caratteri, è combinato con una sorgente non PDF o con use_embedded_xml=true, oppure è inviato a invoices:convert-structured |
| INVALID_EMBEDDED_XML_POLICY | 400 | No | use_embedded_xml deve essere true o false |
| INVALID_SELLER_MASTER_DATA | 400 | No | use_seller_master_data o seller_master_data non è analizzabile o non supera la validazione dei campi; electronic_address e electronic_address_scheme devono essere forniti insieme oppure entrambi omessi |
| METHOD_NOT_ALLOWED | 405 | No | I percorsi di conversione accettano solo POST e i percorsi task solo GET; la risposta include Allow: POST, OPTIONS (conversione) oppure Allow: GET, OPTIONS (task) |
| DOWNLOAD_FORMAT_REQUIRED | 400 | No | Richiesta task-result senza la query download obbligatoria |
| INVALID_DOWNLOAD_FORMAT | 400 | No | La query download del task-result deve essere xml o pdf |
| AUTH_SERVICE_UNAVAILABLE | 503 | Sì | Backend auth non disponibile |
| RATE_LIMIT_SERVICE_UNAVAILABLE | 503 | Sì | Non è stato possibile raggiungere il servizio di rate-limit; riprova con backoff |
| PLAN_TIER_CHECK_FAILED | 503 | Sì | Non è stato possibile verificare il piano o l’accesso API; riprova con backoff |
| API_CREDIT_SERVICE_UNAVAILABLE | 503 | Sì | La verifica dei crediti API prepagati o della quota canale è temporaneamente non disponibile sugli upload di conversione |
| RATE_LIMITED | 429 | Sì | Rispettare Retry-After. Retry-After, X-RateLimit-Limit-Minute e X-RateLimit-Limit-Hour vengono restituiti solo sulle risposte 429; il body riporta details.minute_count, details.hour_count, details.limit_minute e details.limit_hour |
| BAD_REQUEST | 400 | No | JSON non valido o parametro path UUID non valido |
| INVALID_QUERY_PARAMETER | 400 | No | include_validation_report_html deve essere true o false |
| PAYLOAD_TOO_LARGE | 413 | No | Oltre il limite dimensione upload |
| INVALID_UPLOAD | 400 | No | Lettura/parsing upload non riusciti |
| UPLOAD_FAILED | 422 | No | Un campo di contesto opzionale (jurisdiction, transaction_scope, delivery_channel) conteneva un valore non riconosciuto; i valori consentiti sono indicati nel message |
| INVALID_PROFILE | 422 | No | Nome profilo sconosciuto; details.allowed_profiles elenca i valori accettati |
| TASK_NOT_READY | 202 | Sì | Eseguire di nuovo polling per completamento async |
| TASK_NOT_FOUND | 404 | No | Il task è sconosciuto, non appartiene al tenant oppure ha superato la ritenzione di 24 ore dopo aver raggiunto uno stato terminale |
| VALIDATION_FAILED | 422 | No | Restano problemi di validazione bloccanti, inclusi i fallimenti dei prerequisiti rigorosi ZUGFeRD e le voci blocking_source_conflict non risolte; correggi i dati fattura prima di riprovare |
| AUTHORITATIVE_VALIDATION_UNAVAILABLE | 503 | Sì | Validazione autorevole, persistenza della prova o dipendenza di generazione ibrida non disponibile; riprova più tardi |
| TASK_STATUS_FAILED | 4xx/5xx | Condizionale | Retry se la condizione del servizio è transitoria |
| TASK_RESULT_FAILED | 4xx/5xx | Condizionale | Retry se la condizione del servizio è transitoria |
| TASK_FAILED | 500 | Condizionale | Fallimento di conversione segnalato sull’endpoint di risultato. Leggi details.code e details.retryable: MULTIPLE_INVOICES_IN_DOCUMENT, NO_INVOICE_DETECTED, INSUFFICIENT_INVOICE_SIGNAL, SCHEMA_PARSE_FAILED e ARTIFACT_PARITY_FAILED sono definitivi; PROVIDER_ERROR e qualunque details.code non riconosciuto seguono details.retryable, e details.retryable=true significa avviare una NUOVA conversione con una nuova Idempotency-Key invece di ripetere il polling dello stesso task. La conversione fallita non consuma un’unità di fatturazione |
| MULTIPLE_INVOICES_IN_DOCUMENT | 500 (details code) | No | Definitivo: la sorgente contiene più fatture. Dividila in un file per fattura e avvia conversioni separate |
| NO_INVOICE_DETECTED | 500 (details code) | No | Definitivo: il documento non sembra una fattura; invialo alla gestione manuale |
| INSUFFICIENT_INVOICE_SIGNAL | 500 (details code) | No | Definitivo: la sorgente non contiene dati fattura sufficienti; fornisci una sorgente migliore o usa la conversione strutturata |
| SCHEMA_PARSE_FAILED | 500 (details code) | No | Definitivo per questo input: i dati estratti non sono stati analizzati secondo lo schema. Avvia una nuova conversione; esegui escalation se lo stesso documento fallisce ancora |
| PROVIDER_ERROR | 500 (details code) | Condizionale | Il provider di estrazione non ha risposto correttamente. Segui details.retryable; per provider_context_too_large usa un documento sorgente più piccolo |
| XML_GENERATION_FAILED | 500 | Sì | Errore transitorio di generazione XML o timeout |
| PDF_GENERATION_FAILED | 500 | Sì | Errore transitorio di generazione PDF o timeout |
| ARTIFACT_GENERATION_RERUN_REQUIRED | 503 | No | Generazione artifact rigorosa non riuscita dopo i retry server-side; avvia una nuova conversione dopo il ripristino della dipendenza |
| EXTRACTION_INCOMPLETE_GROUP_FAILURE | 503 | No | Uno o più gruppi di estrazione non sono riusciti. Il task non può riprendersi; avvia una nuova conversione e controlla details.failed_groups |
| ARTIFACT_GENERATION_FAILED | 503 (details code) | No | Registrato sui task falliti per errori di emissione rigorosa ritentabili; i download del risultato restituiscono 503 ARTIFACT_GENERATION_RERUN_REQUIRED con questo codice in details |
| ARTIFACT_PARITY_FAILED | 500 (details code) | No | Segnalato nei details di 500 TASK_FAILED quando l’artefatto rigoroso non corrisponde ai dati fattura finali revisionati; effettua l’escalation con l’ID di correlazione |
| INTERNAL_ARTIFACT_INVARIANT_FAILED | 500 | No | Il task rigoroso completato non ha un artefatto memorizzato sicuro per il download richiesto; effettua l’escalation con l’ID di correlazione |
| PROFILE_MISMATCH | 422 | No | Il profilo richiesto non corrisponde al CustomizationID del risultato memorizzato durante il download del risultato |
| ZUGFERD_SOURCE_PDF_INCOMPATIBLE | 422 | No | La generazione PDF ibrida rigorosa non può incorporare l’XML nel PDF sorgente caricato |
| ZUGFERD_SOURCE_PDF_REQUIRED | 422 | No | download=pdf per ZUGFERD richiede una sorgente PDF (le sorgenti DOCX/TXT non possono trasportare il PDF ibrido); richiedi invece download=xml |
| VALIDATION_REPORT_NOT_FOUND | 404 | No | Nessun report di validazione è legato alla prova dell’artefatto attualmente consegnato |
| VALIDATION_REPORT_FAILED | 4xx/5xx | Condizionale | Recupero del report di validazione non riuscito; retry solo per casi 5xx transitori |
| OUTPUT_PROFILE_REQUIRED | 422 | No | Un endpoint o contesto di richiesta correlato richiede un profilo esplicito per un contratto di output generico |
| OUTPUT_PROFILE_CONFLICT | 422 | No | Il profilo contraddice il formato di output selezionato o la variante esplicita |
| PROXY_ERROR | 502/504 | Sì | Errore di trasporto e non esito di conversione: fallimento proxy/upstream (504 per timeout). Riprova con backoff e la stessa idempotency key |
Errori comuni e cosa fare
- Riprova con backoff:
429,502,504,503con un codice ripetibile e i500transitori che non sianoTASK_FAILEDoINTERNAL_ARTIFACT_INVARIANT_FAILED.500 TASK_FAILEDè ripetibile solo quandodetails.retryableètrue, e solo come nuova conversione. - Non riprovare:
400,401,402,403,404,405,413,422,409 IDEMPOTENCY_CONFLICT,409 IDEMPOTENCY_REPLAY_EXPIRED,500 TASK_FAILEDquandodetails.retryablenon ètrue, e500 INTERNAL_ARTIFACT_INVARIANT_FAILED. - Correggi request o dati sorgente:
400,413,422. - Correggi accesso o credenziali:
401 INVALID_API_KEY.403 API_NOT_ENABLED_FOR_TENANTsignifica che la chiave è valida ma l’accesso External API non è abilitato per l’account — contatta il supporto. - Verifica la quota mensile inclusa o acquista un pacchetto di crediti API prepagati:
402 INSUFFICIENT_API_CREDITS. Leggi le chiavidetailseffettivamente presenti (remainingper gli account prepagati, oppureincluded_remaining/credit_remaining/shortfallquando si applica una quota inclusa). - Continua il polling più tardi:
202 TASK_NOT_READY. - Per
500 TASK_FAILED, leggidetails.codeedetails.retryable.MULTIPLE_INVOICES_IN_DOCUMENT,NO_INVOICE_DETECTED,INSUFFICIENT_INVOICE_SIGNAL,SCHEMA_PARSE_FAILEDeARTIFACT_PARITY_FAILEDsono definitivi;PROVIDER_ERRORe qualunque codice non riconosciuto seguonodetails.retryable, etruesignifica avviare una NUOVA conversione invece di ripetere il polling dello stesso task. Una conversione fallita non consuma un’unità di fatturazione. - Per
422 VALIDATION_FAILED, mostra il campo, l’ID della regola e la correzione proposta a una persona incaricata della revisione prima di riprovare con dati fattura corretti. - Per
503 AUTHORITATIVE_VALIDATION_UNAVAILABLE, recupera più tardi lo stesso risultato task; non è stato consegnato alcun artefatto non verificato. Per503 ARTIFACT_GENERATION_RERUN_REQUIREDe503 EXTRACTION_INCOMPLETE_GROUP_FAILURE, avvia invece una nuova conversione. 502e504 PROXY_ERRORsono errori di trasporto e non esiti di conversione; riprova con backoff e la stessa idempotency key.
Limiti di frequenza e payload
Rate limit per chiave e vincoli di dimensione payload si applicano a tutte le chiamate API. Le conversioni rifiutate non consumano crediti API prepagati; i rate limit sono calcolati separatamente per endpoint.
- I limiti per endpoint sono ponderati per costo e ogni endpoint ha il proprio bucket, così il polling non può esaurire la capacità di conversione. Default per chiave API:
POST /invoices:convertePOST /invoices:convert-structured30/mine500/hour;GET /tasks/{task_id}10/mine120/hour;GET /tasks/{task_id}/result10/mine circa134/hour;GET /tasks/{task_id}/validation-report10/mine120/hour. - Gli header di quota sono restituiti solo sulle risposte
429 RATE_LIMITED. Le risposte riuscite non riportano header di quota: considera la tabella sopra come il contratto operativo e leggi i valori effettivi esatti da una risposta429. - Il bucket di stato è il vincolo determinante per il polling: attendi circa
20 secondidopo il202accettato prima della prima chiamata di stato, poi distanzia le chiamate (20s, 30s, 45s, 60s e da lì 60s) e fermati sucompletedofailed. Non fare polling ogni 10 secondi; un singolo task interrogato così consuma tutto il budget orario in 20 minuti. - Dimensione massima upload documento sorgente:
20 MBper file PDF, DOCX o TXT. - Dimensione massima upload dati strutturati:
2 MBtotali su tutte le partidata_file. - Dimensione massima payload JSON:
1 MB - Le risposte
429includonoRetry-After,X-RateLimit-Limit-MinuteeX-RateLimit-Limit-Hour, oltre adetails.minute_count,details.hour_count,details.limit_minuteedetails.limit_hour.
Guida ai tentativi
- Usa backoff esponenziale con jitter e riusa la stessa
Idempotency-Keya ogni retry di una richiesta di scrittura. - Decidi in base al
codeleggibile da macchina — e adetails.codepiùdetails.retryableper500 TASK_FAILED— mai in base al solo stato HTTP. In questa API un500non è automaticamente ripetibile. - Ripetibili:
429,502,504,503con un codice ripetibile, i500transitori che NON sianoTASK_FAILEDoINTERNAL_ARTIFACT_INVARIANT_FAILED, e500 TASK_FAILEDquandodetails.retryableètrue(fallimenti provider transitori: rate limit, timeout, errore di trasporto) — ripeti quel caso come NUOVA conversione con una nuovaIdempotency-Key, non ripetendo il polling dello stesso task. - Mai ripetere:
400,401,402,403,404,405,413,422,409 IDEMPOTENCY_CONFLICT,409 IDEMPOTENCY_REPLAY_EXPIRED,500 TASK_FAILEDquandodetails.retryablenon ètrue, e500 INTERNAL_ARTIFACT_INVARIANT_FAILED. Una conversione fallita in modo definitivo non consuma un’unità di fatturazione. 409 IDEMPOTENCY_IN_PROGRESSè ripetibile con la STESSA chiave dopo una breve attesa; una prenotazione bloccata viene rilasciata dopo 15 minuti.503 ARTIFACT_GENERATION_RERUN_REQUIREDe503 EXTRACTION_INCOMPLETE_GROUP_FAILURErichiedono una NUOVA conversione invece di un retry dello stesso task.
Ciclo di vita del task e conservazione
- Un task e i suoi artefatti memorizzati sono conservati per
24 oredopo che il task raggiunge uno stato terminale (completedofailed), poi vengono eliminati. Dopo l’eliminazione, le richieste di stato, risultato e report di validazione restituiscono404 TASK_NOT_FOUND. - Non esiste un timeout di conversione fisso. Un task fallisce dopo una finestra di stallo di
5 minutisenza aggiornamenti di fase o avanzamento, oppure quando l’elaborazione totale supera il tetto assoluto di15 minuti. - Imposta il timeout lato client a circa
16 minutidal202accettato. La maggior parte delle conversioni si completa ben sotto i due minuti. - I record di idempotenza vivono
24 ore, in linea con la ritenzione dei task. Una richiesta bloccata in elaborazione viene rilasciata dopo15 minuti. - I contatori rate-limit si azzerano su una finestra mobile.
Modello di supporto
- Supporto in orario lavorativo con sforzi commercialmente ragionevoli.
- Nessuno SLA formale, credito di servizio o impegno sui tempi di risposta salvo accordo in un order form.
Registro modifiche
Modifiche API esterne più recenti.
2026-09-08
seller_master_data ora tratta electronic_address ed electronic_address_scheme come una coppia opzionale. Fornire entrambi i campi oppure ometterli entrambi; una coppia incompleta restituisce 400 INVALID_SELLER_MASTER_DATA.
2026-09-07
Correzione della documentazione prezzi: 1.000 crediti prepagati costano 400 EUR (0,40 EUR per credito). I pacchetti da 100, 200 e 500 crediti restano a 50, 100 e 250 EUR. I prezzi applicati e gli acquisti esistenti non cambiano.
2026-08-24
La conversione dei documenti ora ignora per impostazione predefinita l’XML fattura incorporato. Imposta use_embedded_xml=true solo se l’integrazione accetta esplicitamente l’XML incorporato come fonte primaria di estrazione. L’importazione e-mail ignora sempre l’XML fattura incorporato. La modifica di use_embedded_xml cambia l’hash di idempotenza della richiesta; usa un nuovo Idempotency-Key quando modifichi questa opzione.
2026-08-20
Quando i dati anagrafici del venditore compilano un campo, i flag di estrazione restanti restano visibili ma non bloccano più l’import e-mail rigoroso o l’External API. Acquirente, righe, imposta, consegna, scadenza, sconto, causale, campi profilo non compilati e valori non validi restano bloccanti.
2026-08-07
Enterprise è diventato disponibile con acquisto diretto a 50 EUR/mese o 420 EUR/anno. Enterprise include 100 conversioni Email/API condivise al mese; le conversioni aggiuntive usano crediti prepagati da 0,40–0,50 EUR. Le chiavi API non richiedono più approvazione manuale.
2026-07-29
Pubblicati il catalogo errori attuale e le regole di retry per codice. Uno stato 500 non è automaticamente ritentabile; controlla code, details.code e details.retryable. Documentate entrambe le forme di details per 402 INSUFFICIENT_API_CREDITS e i diversi percorsi di recupero per gli errori 409 di idempotenza. Pubblicati gli header di prova del report, la conservazione di 24 ore, i timeout dei task e i rate limit per endpoint. Pubblicata la tabella chiusa formato/profilo e corrette le indicazioni per download, METHOD_NOT_ALLOWED e PROFILE_MISMATCH.
2026-07-28
La conversione API ora rifiuta una sorgente confermata con più fatture tramite l’errore definitivo MULTIPLE_INVOICES_IN_DOCUMENT. Dividi i file multi-fattura confermati. Un segnale incerto restituisce invece 422 VALIDATION_FAILED per il controllo.
2026-07-26
I dati anagrafici venditore abilitati ora sostituiscono i valori estratti corrispondenti del venditore o del pagamento. I campi assenti dal profilo lasciano invariati i valori estratti; le differenze restano avvisi di controllo non bloccanti.
2026-07-25
Sostituito dal 2026-07-26: i dati anagrafici venditore ora sostituiscono i valori estratti corrispondenti invece di compilare solo quelli mancanti.
2026-07-10
Recupero di documentazione; nessuna modifica al comportamento a runtime. Il catalogo errori ora documenta codici di errore runtime prima non documentati, tra cui API_CREDIT_SERVICE_UNAVAILABLE, TASK_NOT_FOUND, INVALID_CLIENT_METADATA, INVALID_SELLER_MASTER_DATA, PROFILE_MISMATCH, ZUGFERD_SOURCE_PDF_REQUIRED, VALIDATION_REPORT_NOT_FOUND, VALIDATION_REPORT_FAILED, INVALID_QUERY_PARAMETER e METHOD_NOT_ALLOWED. I client che analizzano le risposte di errore tramite il campo code leggibile da macchina non richiedono modifiche; i client basati su un elenco fisso di codici devono aggiungere i valori appena documentati. Date del changelog corrette: il supporto per sorgenti DOCX/TXT è stato rilasciato il 2026-06-30, non il 2026-07-06.
2026-07-06
I payload dei task completati possono includere voci aggiuntive _processing_warnings e _validation_warnings con ID delle regole SOURCE_CONTEXT_* quando le evidenze della fonte erano indisponibili, sospette o troncate prima dell’estrazione. Tratta le voci SOURCE_CONTEXT_* come segnali di revisione per la gestione delle eccezioni lato cliente; i download di artefatti rigorosi restano governati dalla prova di validazione e dai controlli sugli artefatti.
2026-07-03
I fallimenti dei prerequisiti rigorosi ZUGFeRD (campi obbligatori mancanti per la generazione ibrida) ora falliscono come 422 VALIDATION_FAILED con gli ID delle regole bloccanti invece di un 503 ritentabile; indirizzali a un flusso di correzione dati, non a un ciclo di retry. Per i formati solo XML (XRECHNUNG, EN16931, UBL, CII) il rendering PDF è ora un artefatto di comodità best effort: download=xml resta autorevole e disponibile sui task completati, mentre download=pdf può risultare non disponibile se il rendering è fallito dopo l’emissione dell’XML. Le conversioni con conflitti di fonte bloccanti non risolti ora falliscono come 422 VALIDATION_FAILED con voci blocking_source_conflict invece di emettere un artefatto.
2026-06-30
POST /api/v1/invoices:convert ora accetta documenti sorgente fattura PDF, DOCX e TXT nel campo file. I vecchi file DOC, RTF, immagini e altre sorgenti non supportate sono rifiutati prima dell’avvio della conversione. I download PDF ibridi ZUGFeRD/Factur-X richiedono ancora una sorgente PDF; usa download XML per conversioni da sorgenti DOCX/TXT. Aggiunta l’opzione include_validation_report_html=true su GET /api/v1/tasks/{task_id} per includere inline il report di validazione HTML sanificato quando disponibile. Gli upload di conversione ora accettano su entrambi gli endpoint i campi opzionali use_seller_master_data e seller_master_data, così i tenant approvati possono attivare dati anagrafici venditore salvati o limitati alla richiesta.
2026-06-29
Aggiunto GET /api/v1/tasks/{task_id}/validation-report?download=html|xml per recuperare il report di validazione legato alla prova dell’artefatto risultato rigoroso corrente. Le risposte del report di validazione espongono gli header ID task, SHA-256 dell’artefatto, ID prova di validazione, ID prova del report, tipo di contenuto del report e ID di correlazione.
2026-06-10
I dati fattura inviati sono ora la fonte dati per l’output ibrido ZUGFeRD; la pulizia deterministica e la normalizzazione fiscale restano attive. I task falliscono quando il progresso si arresta o al limite di 15 minuti, non dopo un timeout fisso di cinque minuti.
2026-06-09
Gli errori di salvataggio del tracciamento uso non bloccano una risposta validata pronta né addebitano un credito extra; gli eventi falliti vanno in coda per la riconciliazione.
2026-06-02
L’accesso External API è ora documentato come accesso approvato invece di creazione non controllata delle chiavi. Chiarito che nessuno SLA formale, credito di servizio o penale contrattuale si applica salvo accordo in un order form. format è ora obbligatorio su entrambi gli endpoint di conversione; valori mancanti restituiscono 400 FORMAT_REQUIRED e valori non supportati 422 INVALID_FORMAT. download è ora obbligatorio sulle richieste task-result; valori mancanti restituiscono 400 DOWNLOAD_FORMAT_REQUIRED e valori non supportati 400 INVALID_DOWNLOAD_FORMAT. Gli upload di conversione ora accettano client_reference/external_invoice_id e source_system per la riconciliazione lato cliente. Le risposte di conversione accettata e stato task ora includono status_url, primary_result_format, primary_result_url e i campi di riconciliazione inviati.
2026-06-01
La conversione strutturata ora accetta tutti i formati di output pubblici: XRECHNUNG, ZUGFeRD, EN16931, UBL e CII. La conversione strutturata ora accetta parti data_file ripetibili e gli alias data_files e data_files[] per export ERP suddivisi. I bundle strutturati multi-file devono descrivere esattamente una fattura e falliscono subito se gli ID fattura del bundle sono mancanti o in conflitto. Chiarito che più documenti fattura devono essere inviati come task di conversione separati, ciascuno con la propria idempotency key.
2026-05-27
Aggiunto POST /api/v1/invoices:convert-structured per conversione da dati strutturati con PDF contenitore e CSV/JSON/XML/XLSX/TXT sui formati output supportati. Documentato che i dati strutturati sono l’unica fonte semantica su questo endpoint; il PDF viene usato per l’incorporamento ibrido. Artefatti OpenAPI e Postman aggiornati per la conversione strutturata.
2026-05-26
Gli artefatti XML rigorosi e PDF ibridi hanno ricevuto dati interni di parità; usa result_artifacts per disponibilità e stato di validazione. La base URL di produzione documentata è diventata https://www.invoice-converter.com/api/v1.
2026-05-19
GET /api/v1/tasks/{task_id}/result esegue solo il recupero; non genera, ripara o valida file. I task rigorosi terminano solo dopo il salvataggio di un artefatto validato; una prova attuale mancante produce un errore chiuso. La conversione External API è fissa sull’emissione rigorosa, senza bozze o esclusione degli avvisi. Lo stato del task ha ricevuto la diagnostica result_artifacts e i valori delivery_channel documentati.
2026-05-08
Aggiunti crediti External API prepagati per tenant non Enterprise. Documentato 402 INSUFFICIENT_API_CREDITS per tenant approvati senza fatturazione Enterprise tramite order form o crediti prepagati. Confermato che i replay idempotenti non consumano crediti API aggiuntivi. Chiarito che il routing del modello External API V1 è gestito lato server, mentre profilo e contesto di consegna restano controllati dal chiamante.
2026-03-28
Lo stato del task ha ricevuto la diagnostica di disponibilità degli artefatti XML/PDF. I download rigorosi restituiscono file solo dopo i controlli server dell’artefatto.
2026-03-26
I download riusciti hanno ricevuto una prova di validazione server per l’artefatto restituito. Dipendenze di validazione o prova mancanti restituiscono 503 AUTHORITATIVE_VALIDATION_UNAVAILABLE. I download in cache sono riutilizzati solo finché la prova di validazione salvata resta aggiornata.
2026-03-06
Download task-result resi fedeli al formato per output CII e ZUGFERD. Aggiunto riuso di artefatti risultato in cache per download XML/PDF ripetuti dello stesso task. Quote di polling allineate a bucket rate-limit ponderati e scoped per endpoint.
2026-02-23
Aggiunte risposte di errore API più chiare e coerenti su tutti gli endpoint. Opzioni convert ampliate e comportamento download XML/PDF documentato per i risultati task. Sicurezza retry migliorata con requisiti di idempotenza e validazione più rigidi. Artefatti OpenAPI/Postman aggiornati al comportamento API corrente.
Artefatti di consegna
Scarica gli artefatti di integrazione leggibili da macchina per la Developer API.
Usare Postman e OpenAPI
- Importa la collezione Postman e imposta le variabili di collezione
base_url,api_keyeidempotency_key. - Esegui la collezione in ordine: convert, polling stato, poi fetch result.
- Usa OpenAPI JSON per generare client tipizzati, ma copri upload file, polling e gestione del risultato binario con test di integrazione.
- Registra
X-Correlation-IDnei log così il supporto può tracciare le richieste end-to-end.
Invia feedback tecnico
Condividi con il nostro team domande di implementazione, rischi e richieste di modifica del contratto.