Intégration
Export MarkdownDocumentation API externe V1
Convertissez vos factures en e-factures validées depuis vos propres systèmes : envoyez un document PDF, DOCX ou TXT – ou des données ERP structurées – et téléchargez la sortie XRechnung, ZUGFeRD, EN 16931, UBL ou CII une fois la validation réussie. Cette page constitue le contrat d’intégration complet : modèle d’accès, endpoints, catalogue d’erreurs et limites.
Cinq endpoints REST transforment des factures PDF, DOCX ou TXT – ou des données ERP structurées – en e-factures validées XRechnung, ZUGFeRD, EN 16931, UBL et CII : envoyer, interroger, télécharger. L’accès est soumis à approbation : demandez-le par e-mail, testez avec des crédits API prépayés et utilisez un contrat Enterprise pour les volumes de production.
Vue d’ensemble
L’API accepte les envois multipart, renvoie des réponses JSON et utilise les codes de statut HTTP standard avec authentification Bearer. Chaque conversion est asynchrone : envoyez le document, interrogez la tâche, téléchargez le résultat. Un fichier n’est livré qu’après validation réussie – il n’existe aucune sortie non validée.
Envoyez un document de facture PDF, DOCX ou TXT ou des données de facture structurées à un endpoint de conversion. Invoice-Converter démarre une tâche asynchrone pour l’extraction, la validation et la génération d’artefacts. L’endpoint de résultat renvoie un fichier uniquement lorsque l’artefact demandé est validé, contrôlé et prêt ; pendant le traitement, il renvoie 202 TASK_NOT_READY, et les problèmes de validation bloquants renvoient 422 VALIDATION_FAILED.
Statut: accès approuvé
Chemin de base: /api/v1. Dernière synchronisation 2026-07-26.
Fonctionnalités clés
- Endpoints d’upload pour factures PDF et données de facture structurées
- Extraction de données de facture assistée par IA
- Validation automatique EN 16931 et KoSIT
- Formats de sortie XRechnung, ZUGFeRD, EN16931, UBL et CII
- Traitement asynchrone avec polling, petites factures en environ 30 secondes et factures plus volumineuses jusqu’à 1-2 minutes
- Écritures idempotentes pour des retries sûrs
Obtenir un accès API
L’accès API est soumis à approbation, il n’est pas en libre-service. Voici le parcours du premier contact aux clés de production.
- Créez un compte, puis demandez l’accès API par e-mail à contact@invoice-converter.com en indiquant votre société, l’e-mail du compte et le volume mensuel prévu.
- Utilisez des crédits API prépayés pour les tests approuvés ou une facturation Enterprise par order form pour l’usage production.
- Après approbation, créez une clé API live depuis la section d’accès API.
- Envoyez la première requête avec des identifiants côté serveur, puis surveillez l’usage et tournez les clés depuis votre profil.
Demander l’accès
Démarrage rapide
Trois appels API terminent une conversion. L’endpoint de conversion est servi sous /api/v1 et nécessite une authentification.
POST /api/v1/invoices:convert
LiveConvertir un document de facture
POST /api/v1/invoices:convert-structured
LiveConvertir des données structurées
GET /api/v1/tasks/{task_id}
LiveInterroger le statut de tâche
Démarrage rapide avec curl
Remplacez $API_KEY par votre clé live et $TASK_ID par le task_id de la première réponse. Les trois mêmes appels fonctionnent pour tous les formats de sortie.
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 de base et clés API
- URL de base production :
https://www.invoice-converter.com/api/v1. - Les clés live utilisent le host de production et le préfixe
icp_.... - Lancez les requêtes d’onboarding et de validation avec des clés live approuvées avant d’envoyer du volume de production.
- Traitez les clés comme des secrets serveur. Ne les intégrez pas dans des clients navigateur ou mobiles.
Première requête réussie
Utilisez cette séquence comme parcours minimal après création d’une clé API.
- Téléversement :
POST /api/v1/invoices:convertavecAuthorization,Idempotency-Key,file=@invoice.pdf(ou.docx/.txt) etformat=XRECHNUNG. - Interrogez toutes les
10-15 secondes:GET /api/v1/tasks/{task_id}jusqu’au statutcompletedoufailed. - Téléchargement :
GET /api/v1/tasks/{task_id}/result?download=xmlet stockezX-Correlation-IDpour le traçage support. - Pour une sortie PDF ZUGFeRD, demandez
format=ZUGFERDau convert etdownload=pdfau result ; la sortie PDF hybride exige une source PDF. - Pour une entrée structurée, appelez
POST /api/v1/invoices:convert-structuredavecpdf_file=@invoice.pdf,data_file=@invoice-data.jsonet leformatcible. - Envoyez éventuellement
client_referenceouexternal_invoice_idetsource_systempour le rapprochement ERP. - Pour des exports ERP fractionnés d’une facture, répétez
data_file; pour plusieurs factures, démarrez une tâche par facture avec sa propre clé d’idempotence. - Conservez
result_artifactsdepuis la réponse de statut pour savoir quels artefacts XML/PDF sont validés, mis en cache ou encore indisponibles à cause de dépendances.
Exemples courants de payload
XRECHNUNG: envoyezformat=XRECHNUNG.ZUGFERD: envoyezformat=ZUGFERD; utilisezdownload=pdfau result pour la sortie hybride PDF/A-3.Entrée structurée: envoyezpdf_fileavec une ou plusieurs partiesdata_file; les formats de données acceptés sont CSV, JSON, XML, XLSX et TXT, avec tout format cible pris en charge. Les partiesdata_filedoivent contenir toutes les données obligatoires ; le PDF ne complète pas les champs manquants. .xls, les PDF et les images sont refusés commedata_file.Factures multiples: envoyez des requêtes convert séparées et suivez chaquetask_idrenvoyé ; les partiesdata_filerépétées servent uniquement aux exports fractionnés de la même facture.UBL: envoyezformat=UBL; pour les intégrations déterministes, définissez unprofileexplicite commePEPPOL,XRECHNUNGouEN16931.CII: envoyezformat=CII; pour les intégrations déterministes, définissez unprofileexplicite commeEN16931.
En-têtes requis
- Authorization: Bearer <api_key>
Règles d’authentification
L’accès API est soumis à approbation. Les comptes approuvés peuvent créer des clés API depuis le profil, les utiliser comme Bearer token et utiliser des crédits prépayés pour les tests approuvés ou une facturation Enterprise par order form pour la production.
- Les clés sont des identifiants live limités au tenant pour les comptes approuvés. Le préfixe de production actuel est
icp_.... - Créez, tournez et révoquez les clés API depuis votre profil après activation de l’accès API. Copiez les nouvelles clés immédiatement, car leur valeur en clair n’est affichée qu’une seule fois.
- Une clé manquante ou invalide renvoie
401. - Les appels vers
/api/v1reçoivent automatiquement unX-Correlation-IDs’il est omis. - Les appels d’écriture exigent
Idempotency-Key; gardez cette valeur stable entre les réessais. - Utilisez une intégration serveur-à-serveur depuis votre backend. L’accès depuis une origine navigateur est restreint en production.
Contrat d’idempotence
- Envoyez un
Idempotency-Keyà chaque appel d’écriture. - Les clés d’idempotence doivent correspondre à
[A-Za-z0-9._:-]+et faire au plus 200 caractères. - Si vous fournissez votre propre clé, la même clé + le même payload renvoie la réponse en cache.
- La même clé + un payload différent renvoie
409 IDEMPOTENCY_CONFLICT. - Les clés d’idempotence expirent après
24 heures.
Référence des endpoints
Tous les endpoints sont disponibles sous /api/v1. Les timeouts apparaissent en 504 et les autres erreurs temporaires de connectivité en 502 ; les ID de corrélation aident le support à suivre les requêtes de bout en bout.
POST /api/v1/invoices:convert
LiveTéléversez un document de facture PDF, DOCX ou TXT et démarrez la conversion asynchrone. Renvoie un task_id pour le polling. Les PDF hybrides ZUGFeRD/Factur-X exigent une source PDF ; pour les sources DOCX/TXT, demandez des résultats XML. Requête: multipart/form-data; file (binary, requis) — document source de facture PDF, DOCX ou TXT ; les anciens fichiers DOC/RTF, images et autres fichiers sont refusés; format (string, requis) — format de sortie cible ; voir la matrice des formats ci-dessous; profile (string, optionnel, recommandé pour les intégrations déterministes) — profil de conformité explicite. Les valeurs par défaut dépendent du format ; les valeurs autorisées incluent XRECHNUNG, PEPPOL, EN16931 et les profils ZUGFeRD/Factur-X pris en charge; jurisdiction (string, optionnel) — contexte de juridiction ISO 3166-1 alpha-2 explicite utilisé pour les contrôles de validation/conseil ; ne remplace pas le profil; transaction_scope (string, optionnel) — contexte de périmètre transactionnel explicite, par exemple B2G ; appliqué à la tâche mise en file; delivery_channel (string, optionnel) — PEPPOL, DIRECT_XML, PORTAL, EMAIL_PDF ou UNKNOWN ; appliqué à la tâche mise en file; client_reference ou external_invoice_id (string, optionnel) — référence facture/job côté client renvoyée dans les uploads acceptés et les réponses de statut; source_system (string, optionnel) — libellé ERP ou système de facturation amont renvoyé dans les uploads acceptés et les réponses de statut; use_seller_master_data (boolean, optionnel) — si omis, la valeur par défaut du profil du tenant s’applique ; false ignore les données de base vendeur enregistrées pour cette requête, true fournit/utilise les données de base vendeur; seller_master_data (chaîne d’objet JSON, optionnel) — données vendeur utilisées uniquement lorsque use_seller_master_data=true ; prend en charge les champs société, adresse, fiscalité, contact et paiement (payment_means_code 30/42/58, payment_iban, payment_bic, payment_account_name, payment_terms_note) ; chaque valeur du profil remplace la valeur extraite correspondante, les champs absents du profil restent inchangés et les différences créent des avertissements non bloquants. Réponse: 202 Accepted.
POST /api/v1/invoices:convert-structured
LiveTéléversez un PDF porteur avec des données de facture CSV, JSON, XML, XLSX ou TXT et démarrez une conversion asynchrone depuis données structurées. Les parties data_file sont la seule source sémantique ; le PDF ne complète pas les champs de facture manquants. Pour ZUGFeRD/Factur-X, il sert de PDF porteur ; pour les sorties orientées XML, il est conservé comme artefact PDF soumis. Utilisez une requête de conversion par facture ; répétez data_file uniquement pour des exports ERP fractionnés décrivant la même facture. Requête: multipart/form-data; pdf_file (binary, requis) — PDF porteur utilisé pour l’intégration ZUGFeRD/Factur-X et conservé pour les sorties orientées XML; data_file (binary, requis, répétable) — données de facture CSV, JSON, XML, XLSX ou TXT utilisées comme seule source sémantique ; .xls, les PDF et les images sont refusés comme data_file ; répéter pour les exports header/lines fractionnés de la même facture ; les alias data_files et data_files[] sont acceptés; taille totale des données structurées — maximum 2 MB sur toutes les parties data_file; format (string, requis) — format de sortie cible ; prend en charge XRECHNUNG, ZUGFERD, EN16931, UBL et CII; profile (string, optionnel, recommandé pour les intégrations déterministes) — profil de conformité explicite. Valeur par défaut selon le format; jurisdiction (string, optionnel) — contexte de juridiction ISO 3166-1 alpha-2 explicite utilisé pour les contrôles de validation/conseil ; ne remplace pas le profil; transaction_scope (string, optionnel) — contexte de périmètre transactionnel explicite, par exemple B2G ; appliqué à la tâche mise en file; delivery_channel (string, optionnel) — PEPPOL, DIRECT_XML, PORTAL, EMAIL_PDF ou UNKNOWN ; appliqué à la tâche mise en file; client_reference ou external_invoice_id (string, optionnel) — référence facture/job côté client renvoyée dans les uploads acceptés et les réponses de statut; source_system (string, optionnel) — libellé ERP ou système de facturation amont renvoyé dans les uploads acceptés et les réponses de statut; use_seller_master_data (boolean, optionnel) — si omis, la valeur par défaut du profil du tenant s’applique ; false ignore les données de base vendeur enregistrées pour cette requête, true fournit/utilise les données de base vendeur; seller_master_data (chaîne d’objet JSON, optionnel) — données vendeur utilisées uniquement lorsque use_seller_master_data=true ; prend en charge les champs société, adresse, fiscalité, contact et paiement (payment_means_code 30/42/58, payment_iban, payment_bic, payment_account_name, payment_terms_note) ; chaque valeur du profil remplace la valeur extraite correspondante, les champs absents du profil restent inchangés et les différences créent des avertissements non bloquants. Réponse: 202 Accepted.
GET /api/v1/tasks/{task_id}
LiveInterrogez le statut actuel d’une tâche de conversion. Renvoie pending, processing, completed ou failed. Les tâches terminées incluent des diagnostics result_artifacts pour indiquer quels artefacts XML/PDF sont disponibles, mis en cache et prouvés par validation. Les payloads des tâches terminées peuvent inclure des entrées additives _processing_warnings et _validation_warnings avec des ID de règle SOURCE_CONTEXT_* lorsque les preuves source étaient indisponibles, douteuses ou tronquées ; traitez-les comme des signaux de revue, pas comme des échecs. En cas d’échec, la réponse inclut un champ error avec le motif. Requête: aucun (GET); task_id (path, requis) — UUID renvoyé par l’endpoint de conversion; include_validation_report_html (query, optionnel) — true ou false (false par défaut) ; avec true, la réponse de statut inclut le rapport de validation HTML assaini de l’artefact strict actuel lorsqu’il est disponible. Réponse: 200 OK.
GET /api/v1/tasks/{task_id}/result
LiveTéléchargez le fichier généré (XML ou PDF). La syntaxe du résultat correspond au format initial de la tâche : XRECHNUNG/EN16931/UBL renvoient du XML UBL, CII/ZUGFERD renvoient du XML CII, et ZUGFERD + download=pdf renvoie un PDF/A-3 hybride. Pour d’autres formats, download=pdf peut renvoyer un PDF rendu. Les téléchargements répétés peuvent être servis depuis des artefacts générés en cache lorsque la preuve de validation est encore actuelle. Pendant le traitement, cet endpoint renvoie 202 TASK_NOT_READY ; les problèmes de validation bloquants renvoient 422 VALIDATION_FAILED, les dépendances temporairement indisponibles renvoient 503, et les échecs d’invariant d’artefact renvoient 500, toujours sans corps de fichier. Requête: aucun (GET); task_id (path, requis) — UUID renvoyé par l’endpoint de conversion; download (query, requis) — xml ou pdf. Réponse: 200 OK.
GET /api/v1/tasks/{task_id}/validation-report
LiveDownload the validation report tied to the current validated result artifact. The report is available only after strict conversion has produced a cached artifact with current validation proof, and returns 404 when no report is bound to the delivered artifact. Requête: none (GET); task_id (path, required) — UUID returned by the convert endpoint; download (query, optional) — html or xml. Réponse: 200 OK.
Matrice des formats de sortie
| Format | Syntaxe | Version / Profil | Content-Type | Extension |
|---|---|---|---|---|
| XRECHNUNG | UBL 2.1 XML | XRechnung 3.0.2 | application/xml | .xml |
| ZUGFERD | CII XML (download=xml) / PDF/A-3 hybride (download=pdf) | ZUGFeRD 2.3.2 / Factur-X 1.07.2 | application/xml ou 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 |
Contrat d’erreur
| Code | HTTP | À retenter | Notes |
|---|---|---|---|
| AUTHENTICATION_REQUIRED | 401 | Non | Bearer token manquant/vide |
| INVALID_API_KEY | 401 | Non | Clé API introuvable, révoquée ou expirée |
| INSUFFICIENT_API_CREDITS | 402 | Non | Utilisez des crédits de test prépayés approuvés ou une facturation Enterprise par order form |
| IDEMPOTENCY_KEY_REQUIRED | 400 | Non | Endpoint d’écriture appelé sans Idempotency-Key |
| INVALID_IDEMPOTENCY_KEY | 400 | Non | Format de clé d’idempotence invalide |
| IDEMPOTENCY_CONFLICT | 409 | Non | Même clé utilisée avec un hash de requête différent |
| IDEMPOTENCY_IN_PROGRESS | 409 | Oui | Réessai sûr plus tard avec la même clé/le même payload |
| FORMAT_REQUIRED | 400 | Non | Format requis manquant dans la requête de conversion |
| INVALID_FORMAT | 422 | Non | Format de conversion non pris en charge |
| CLIENT_REFERENCE_CONFLICT | 400 | Non | client_reference et external_invoice_id diffèrent |
| INVALID_CLIENT_METADATA | 400 | Non | client_reference, external_invoice_id ou source_system dépasse la limite de longueur ou contient des caractères de contrôle |
| INVALID_SELLER_MASTER_DATA | 400 | Non | use_seller_master_data ou seller_master_data n’est pas analysable ou échoue à la validation des champs |
| METHOD_NOT_ALLOWED | 405 | Non | Les chemins de conversion n’acceptent que POST ; la réponse inclut un header Allow: POST |
| DOWNLOAD_FORMAT_REQUIRED | 400 | Non | Paramètre download requis manquant dans la requête de résultat de tâche |
| INVALID_DOWNLOAD_FORMAT | 400 | Non | download doit être xml ou pdf |
| AUTH_SERVICE_UNAVAILABLE | 503 | Oui | Backend d’auth indisponible |
| RATE_LIMIT_SERVICE_UNAVAILABLE | 503 | Oui | Backend de rate-limit indisponible |
| API_CREDIT_SERVICE_UNAVAILABLE | 503 | Oui | La vérification des crédits API prépayés ou du quota de canal est temporairement indisponible sur les uploads de conversion |
| RATE_LIMITED | 429 | Oui | Respecter Retry-After et les headers de quota |
| BAD_REQUEST | 400 | Non | JSON invalide ou paramètre de chemin UUID invalide |
| INVALID_QUERY_PARAMETER | 400 | Non | include_validation_report_html doit être true ou false |
| PAYLOAD_TOO_LARGE | 413 | Non | Limite de taille d’upload dépassée |
| INVALID_UPLOAD | 400 | Non | Échec de lecture/parsing de l’upload |
| UPLOAD_FAILED | 4xx/5xx | Conditionnel | Corriger les options de requête invalides ; réessayer uniquement pour les cas 5xx transitoires |
| TASK_NOT_READY | 202 | Oui | Poller à nouveau pour la fin asynchrone |
| TASK_NOT_FOUND | 404 | Non | Requête de rapport de validation pour une tâche inconnue ou n’appartenant pas au tenant |
| VALIDATION_FAILED | 422 | Non | Des problèmes de validation bloquants subsistent, y compris les échecs de prérequis stricts ZUGFeRD et les entrées blocking_source_conflict non résolues ; corrigez les données de facture avant de réessayer |
| AUTHORITATIVE_VALIDATION_UNAVAILABLE | 503 | Oui | La validation faisant autorité, la persistance de la preuve ou une dépendance de génération hybride est indisponible ; réessayez plus tard |
| TASK_STATUS_FAILED | 4xx/5xx | Conditionnel | Réessayer si la condition de service est transitoire |
| TASK_RESULT_FAILED | 4xx/5xx | Conditionnel | Réessayer si la condition de service est transitoire |
| TASK_FAILED | 500 | Non | La tâche a échoué avant l’émission d’un artefact conforme ; details porte le code d’échec sous-jacent |
| XML_GENERATION_FAILED | 500 | Oui | Échec transitoire ou timeout de génération XML |
| PDF_GENERATION_FAILED | 500 | Oui | Échec transitoire ou timeout de génération PDF |
| ARTIFACT_GENERATION_RERUN_REQUIRED | 503 | Non | La génération stricte d’artefact a échoué après les réessais serveur ; lancez une nouvelle conversion après le rétablissement de la dépendance |
| ARTIFACT_GENERATION_FAILED | 503 (details code) | Non | Enregistré sur les tâches échouées pour les échecs d’émission stricte réessayables ; les téléchargements de résultat renvoient 503 ARTIFACT_GENERATION_RERUN_REQUIRED avec ce code dans details |
| ARTIFACT_PARITY_FAILED | 500 (details code) | Non | Signalé dans les details de 500 TASK_FAILED lorsque l’artefact strict ne correspond pas aux données de facture finales revues ; escaladez avec l’ID de corrélation |
| INTERNAL_ARTIFACT_INVARIANT_FAILED | 500 | Non | La tâche stricte terminée n’a aucun artefact stocké sûr pour le téléchargement demandé ; escaladez avec l’ID de corrélation |
| PROFILE_MISMATCH | 422 | Non | Le profil demandé ne correspond pas au CustomizationID du résultat stocké lors du téléchargement du résultat |
| ZUGFERD_SOURCE_PDF_INCOMPATIBLE | 422 | Non | La génération stricte du PDF hybride ne peut pas intégrer le XML dans le PDF source téléversé |
| ZUGFERD_SOURCE_PDF_REQUIRED | 422 | Non | download=pdf pour ZUGFERD exige une source PDF (les sources DOCX/TXT ne peuvent pas porter le PDF hybride) ; demandez download=xml à la place |
| VALIDATION_REPORT_NOT_FOUND | 404 | Non | Aucun rapport de validation n’est lié à la preuve de l’artefact actuellement livré |
| VALIDATION_REPORT_FAILED | 4xx/5xx | Conditionnel | Échec de récupération du rapport de validation ; réessayez uniquement pour les cas 5xx transitoires |
| OUTPUT_PROFILE_REQUIRED | 422 | Non | Un contrat de sortie générique exige un profil explicite lorsqu’aucune valeur par défaut non ambiguë ne peut être déterminée |
| OUTPUT_PROFILE_CONFLICT | 422 | Non | Le profil contredit le format de sortie sélectionné ou la variante explicite |
| PROXY_ERROR | 502/504 | Oui | Erreur de connectivité temporaire (504 pour timeout) |
Erreurs courantes et actions à mener
- Réessayez avec backoff :
429,500,502,503,504. - Corrigez la requête ou les données source :
400,409,413,422. - Corrigez l’accès ou les identifiants :
401,403. - Confirmez l’approbation, les crédits de test prépayés ou la facturation Enterprise par order form :
402 INSUFFICIENT_API_CREDITS. - Continuez à poller plus tard :
202 TASK_NOT_READY. - Pour
422 VALIDATION_FAILED, montrez le champ, l’ID de règle et la correction proposée à une personne chargée de la revue avant de réessayer avec les données corrigées. - Pour
503 AUTHORITATIVE_VALIDATION_UNAVAILABLE, récupérez le même résultat de tâche plus tard ; aucun artefact non vérifié n’a été livré.
Limites de débit et de payload
Les rate limits par clé API et les contraintes de taille de payload s’appliquent à tous les appels API. Les conversions refusées ne consomment pas de crédits API prépayés ; les rate limits sont évaluées séparément par endpoint.
- Les limites sensibles à l’endpoint sont pondérées par coût. Les deux endpoints d’upload utilisent le quota de base du plan (par défaut
30/minet500/hour) ; le polling de tâche est actuellement au moins10/minet120/hour, et les téléchargements de résultat au moins10/minet environ134/hourpar défaut. - Lisez les limites effectives dans
X-RateLimit-Limit-MinuteetX-RateLimit-Limit-Hoursur les réponses. - Taille maximale d’upload de document source :
20 MBpour les fichiers PDF, DOCX ou TXT. - Taille maximale d’upload des données structurées :
2 MBau total sur toutes les partiesdata_file. - Taille maximale de payload JSON :
1 MB - Les réponses de rate-limit incluent
Retry-After,X-RateLimit-Limit-MinuteetX-RateLimit-Limit-Hour.
Guide de nouvelle tentative
- Utilisez un backoff exponentiel avec jitter.
- Ne réessayez que les classes transitoires (
429,500,502,503,504) avec le même payload et la même clé d’idempotence lorsque possible. - Ne réessayez pas aveuglément les erreurs de validation ou de contrat (
400,401,402,403,409,413,422).
Cycle de vie des tâches et rétention
- Les tâches terminées (completed) et échouées (failed) restent disponibles pendant
10 minutesaprès l’état terminal. - Le traitement expire après
5 minutes; les tâches bloquées sont automatiquement marquéesfailed. - Les clés d’idempotence expirent après
24 heures. - Les compteurs de rate-limit se réinitialisent sur une fenêtre glissante.
Modèle de support
- Support en heures ouvrées selon des efforts commercialement raisonnables.
- Aucun SLA formel, crédit de service ou engagement de temps de réponse sauf accord dans un order form.
Journal des modifications
Dernières évolutions visibles de l’API.
2026-07-26
When seller master data is enabled, every supplied profile value replaces the corresponding extracted seller or payment value. Fields absent from the profile remain unchanged. Source differences are non-blocking review warnings.
2026-07-10
Rattrapage de documentation ; aucun changement de comportement à l’exécution. Le catalogue d’erreurs documente désormais des codes d’erreur d’exécution auparavant non documentés, dont 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 et METHOD_NOT_ALLOWED. Les clients qui analysent les réponses d’erreur via le champ code lisible par machine n’ont rien à changer ; les clients qui s’appuient sur une liste fixe de codes doivent ajouter les valeurs nouvellement documentées. Dates du changelog corrigées : la prise en charge des sources DOCX/TXT a été livrée le 2026-06-30 et non le 2026-07-06.
2026-07-06
Les payloads des tâches terminées peuvent inclure des entrées additives _processing_warnings et _validation_warnings avec des ID de règle SOURCE_CONTEXT_* lorsque les preuves source étaient indisponibles, douteuses ou tronquées avant l’extraction. Traitez les entrées SOURCE_CONTEXT_* comme des signaux de revue pour la gestion des exceptions côté client ; les téléchargements d’artefacts stricts restent régis par la preuve de validation et les contrôles d’artefact.
2026-07-03
Les échecs de prérequis stricts ZUGFeRD (champs obligatoires manquants pour la génération hybride) échouent désormais en 422 VALIDATION_FAILED avec les ID de règle bloquants au lieu d’un 503 réessayable ; orientez-les vers un flux de correction des données, pas vers une boucle de réessai. Pour les formats XML uniquement (XRECHNUNG, EN16931, UBL, CII), le rendu PDF est désormais un artefact de commodité en best effort : download=xml reste la référence disponible sur les tâches terminées, tandis que download=pdf peut être indisponible si le rendu a échoué après l’émission du XML. Les conversions avec des conflits de source bloquants non résolus échouent désormais en 422 VALIDATION_FAILED avec des entrées blocking_source_conflict au lieu d’émettre un artefact.
2026-06-30
POST /api/v1/invoices:convert accepte désormais les documents sources de facture PDF, DOCX et TXT dans le champ file. Les anciens fichiers DOC, RTF, images et autres sources non prises en charge sont refusés avant le démarrage de la conversion. Les téléchargements PDF hybrides ZUGFeRD/Factur-X exigent toujours une source PDF ; utilisez les téléchargements XML pour les conversions depuis DOCX/TXT. Ajout de l’option include_validation_report_html=true sur GET /api/v1/tasks/{task_id} pour inclure en ligne le rapport de validation HTML assaini lorsqu’il est disponible. Les uploads de conversion acceptent désormais les champs optionnels use_seller_master_data et seller_master_data sur les deux endpoints, afin que les tenants approuvés puissent activer des données de base vendeur enregistrées ou limitées à la requête.
2026-06-29
Ajout de GET /api/v1/tasks/{task_id}/validation-report?download=html|xml pour récupérer le rapport de validation lié à la preuve de l’artefact de résultat strict actuel. Les réponses du rapport de validation exposent les headers ID de tâche, SHA-256 de l’artefact, ID de preuve de validation, ID de preuve du rapport, type de contenu du rapport et ID de corrélation.
2026-06-02
L’accès External API est maintenant documenté comme accès approuvé et non comme création de clé non contrôlée. Clarification qu’aucun SLA formel, crédit de service ou pénalité contractuelle ne s’applique sauf accord dans un order form. format est désormais requis sur les deux endpoints de conversion ; les valeurs manquantes renvoient 400 FORMAT_REQUIRED et les valeurs non prises en charge 422 INVALID_FORMAT. download est désormais requis sur les requêtes task-result ; les valeurs manquantes renvoient 400 DOWNLOAD_FORMAT_REQUIRED et les valeurs non prises en charge 400 INVALID_DOWNLOAD_FORMAT. Les uploads de conversion acceptent maintenant client_reference/external_invoice_id et source_system pour le rapprochement côté client. Les réponses de conversion acceptée et de statut de tâche incluent maintenant status_url, primary_result_format, primary_result_url et les champs de rapprochement fournis.
2026-06-01
La conversion structurée accepte désormais tous les formats de sortie publics : XRECHNUNG, ZUGFeRD, EN16931, UBL et CII. La conversion structurée accepte maintenant des parties data_file répétables ainsi que les alias data_files et data_files[] pour les exports ERP scindés. Les bundles structurés multi-fichiers doivent décrire exactement une facture et échouent rapidement si les ID de facture du bundle sont contradictoires ou manquants. Clarification que plusieurs documents de facture doivent être soumis comme tâches de conversion séparées, chacune avec sa propre clé d’idempotence.
2026-05-27
Ajout de POST /api/v1/invoices:convert-structured pour la conversion de données structurées avec PDF porteur et CSV/JSON/XML/XLSX/TXT sur les formats de sortie pris en charge. Documentation du fait que les données structurées sont la seule source sémantique sur cet endpoint ; le PDF sert à l’intégration hybride. Artefacts OpenAPI et Postman mis à jour pour la conversion structurée.
2026-05-08
Crédits API externes prépayés ajoutés pour les tenants non Enterprise. 402 INSUFFICIENT_API_CREDITS documenté pour les tenants approuvés sans facturation Enterprise par order form ni crédits prépayés. Confirmation que les relectures idempotentes ne consomment pas de crédits API supplémentaires. Clarification que le routage de modèle External API V1 est géré côté serveur, tandis que le profil et le contexte de livraison restent contrôlés par l’appelant.
2026-03-06
Les téléchargements task-result respectent désormais le format pour les sorties CII et ZUGFERD. Réutilisation d’artefacts de résultat en cache ajoutée pour les téléchargements XML/PDF répétés d’une même tâche. Quotas de polling alignés sur les buckets de rate-limit pondérés par endpoint.
2026-02-23
Réponses d’erreur API plus claires et cohérentes ajoutées sur tous les endpoints. Options de conversion étendues et comportement de téléchargement XML/PDF documenté pour les résultats de tâche. Sécurité des réessais améliorée avec des exigences d’idempotence et une validation plus strictes. Artefacts OpenAPI/Postman mis à jour pour correspondre au comportement actuel de l’API.
Artefacts de livraison
Téléchargez les artefacts d’intégration lisibles par machine pour la Developer API.
Utiliser Postman et OpenAPI
- Importez la collection Postman et définissez les variables de collection
base_url,api_keyetidempotency_key. - Exécutez la collection dans l’ordre : convert, polling du statut, puis récupération du résultat.
- Utilisez l’OpenAPI JSON pour générer des clients typés, mais couvrez upload fichier, polling et résultat binaire par des tests d’intégration.
- Enregistrez
X-Correlation-IDdans les logs afin que le support puisse tracer les requêtes de bout en bout.
Envoyer un retour technique
Partagez avec notre équipe les questions d’implémentation, risques et changements de contrat nécessaires.