Intégration
Export MarkdownDocumentation API externe V1
Pack documentaire technique pour l’implémentation et la revue API en libre-service. Cette page résume le contrat API externe, le modèle d’accès et les contraintes d’intégration.
Vue d’ensemble
L’API accepte les envois multipart, renvoie des réponses JSON et utilise les codes de statut HTTP standard ainsi que l’authentification Bearer. Envoyez une facture PDF, attendez le traitement asynchrone, puis récupérez le résultat généré.
Envoyez une facture PDF à un endpoint unique et Invoice-Converter gère l’extraction, la validation et la génération de sortie. L’endpoint de résultat ne renvoie le fichier généré qu’après réussite des contrôles de validation ; sinon il renvoie 422 VALIDATION_FAILED.
Statut: libre-service
Chemin de base: /api/v1. Dernière synchronisation 2026-05-23.
Fonctionnalités clés
Utilisez ces points comme contrôles pratiques pour cette section.
- Un endpoint unique pour convertir un PDF en XML
- Extraction de données de facture assistée par IA
- Validation automatique EN 16931 et KoSIT
- Formats de sortie XRechnung, ZUGFeRD, 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
Artefacts de livraison
Téléchargez les artefacts d’intégration lisibles par machine pour la Developer API.
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
En développementConvertir un PDF en e-facture structurée
GET /api/v1/tasks/{task_id}
En développementInterroger le statut de tâche
GET /api/v1/tasks/{task_id}/result
En développementTélécharger le résultat de conversion
Demander l’accès bêta fermée
Utilisez ces points comme contrôles pratiques pour cette section.
- Connectez-vous et ouvrez la section profil.
- Achetez des crédits API prépayés ou utilisez un plan Enterprise avec accès API inclus.
- Créez une clé API pour votre tenant.
- Envoyez la première requête avec Bearer token et une clé d’idempotence stable.
URL de base et clés API
Utilisez ces points comme contrôles pratiques pour cette section.
- URL de base production :
https://invoice-converter.com/api/v1. - Utilisez le même host API de production pour tout le trafic pilote :
https://invoice-converter.com/api/v1. - Utilisez des requêtes fixture à faible volume pendant l’onboarding ; les conversions acceptées consomment des crédits API.
- 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.pdfetformat=XRECHNUNG. - Interrogez toutes les
2-5 secondes:GET /api/v1/tasks/{task_id}jusqu’au statutcompletedoufailed. - Téléchargement :
GET /api/v1/tasks/{task_id}/resultet stockezX-Correlation-IDplusX-Validation-Proof-Ids’il est présent. - Pour une sortie PDF ZUGFeRD, envoyez
format=ZUGFERD; l’endpoint de résultat renvoie le PDF hybride par défaut.
Exemples courants de payload
Utilisez ces points comme contrôles pratiques pour cette section.
XRECHNUNG: envoyezformat=XRECHNUNG; c’est la valeur par défaut si format est omis.ZUGFERD: envoyezformat=ZUGFERDpour un PDF hybride EN16931 ZUGFeRD/Factur-X.UBL: envoyezformat=UBLpour du XML UBL EN16931.CII: envoyezformat=CIIpour du XML CII EN16931.
En-têtes requis
Utilisez ces points comme contrôles pratiques pour cette section.
- Authorization: Bearer <api_key>
Règles d’authentification
L’accès API est disponible en libre-service. Créez des clés API depuis votre profil, utilisez-les comme Bearer token et achetez des crédits API prépayés pour l’automatisation de conversion.
- Les clés sont scoped par tenant et utilisent le préfixe
icp_. - Les clés sont créées, tournées et révoquées depuis le profil quand l’accès External API est activé. Copiez les nouvelles clés immédiatement, car elles ne sont affichées en clair 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
Utilisez ces points comme contrôles pratiques pour cette section.
- 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 hours.
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
En développementTéléversez une facture PDF et démarrez la conversion asynchrone. Renvoie une task_id pour le polling. Requête: multipart/form-data. Réponse: 202 Accepted.
GET /api/v1/tasks/{task_id}
En développementInterrogez le statut actuel d’une tâche de conversion. Renvoie pending, processing, completed ou failed. En cas d’échec, la réponse inclut un champ error avec le motif. Requête: aucun (GET). Réponse: 200 OK.
GET /api/v1/tasks/{task_id}/result
En développementTéléchargez le fichier généré. Les tâches ZUGFERD renvoient par défaut un PDF hybride EN16931 ZUGFeRD/Factur-X ; les autres formats renvoient par défaut du XML. Les téléchargements répétés peuvent être servis depuis des artefacts générés en cache. Si des problèmes de validation bloquants subsistent, cet endpoint renvoie 422 VALIDATION_FAILED sans corps de fichier. Requête: aucun (GET). 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 | PDF/A-3 hybride EN16931 par défaut ; XML CII avec download=xml | ZUGFeRD 2.4 / Factur-X 1.08 | application/pdf ou application/xml | .pdf / .xml |
| 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 |
Journal des modifications
Dernières évolutions visibles de l’API.
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 sans facturation Enterprise ni crédits prépayés. Confirmation que les relectures idempotentes ne consomment pas de crédits API supplémentaires. Requêtes de conversion simplifiées à fichier plus format ; le réglage d’extraction est géré côté serveur.
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.
2026-02-20
Réponses de statut simplifiées vers une sortie centrée sur le statut. Validation de soumission IndexNow et contrôles d’authentification renforcés. Contrôles d’accès API et comportement de limitation de requêtes durcis en production.
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 | Achetez au moins 10 crédits API prépayés ou utilisez la facturation Enterprise |
| 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 |
| AUTH_SERVICE_UNAVAILABLE | 503 | Oui | Backend d’auth indisponible |
| RATE_LIMIT_SERVICE_UNAVAILABLE | 503 | Oui | Backend de rate-limit indisponible |
| 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 |
| 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_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 |
| 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 |
| PROFILE_MISMATCH | 422 | Non | Invoice CustomizationID conflicts with the selected public format |
| PROXY_ERROR | 502/504 | Oui | Erreur de connectivité temporaire (504 pour timeout) |
Erreurs courantes et actions à mener
Utilisez ces points comme contrôles pratiques pour cette section.
- 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. - 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.
Limites de débit et de payload
Les rate limits par clé et les contraintes de taille de payload s’appliquent à tous les appels API. Les requêtes refusées ne consomment pas de quota.
- Les quotas sensibles à l’endpoint sont pondérés par coût. Convert utilise le quota de base du plan (par défaut
30/minet500/hour), tandis que les endpoints de polling utilisent des quotas à pondération plus faible. - Lisez les limites effectives dans
X-RateLimit-Limit-MinuteetX-RateLimit-Limit-Hoursur les réponses. - Taille maximale d’upload PDF :
20 MB - 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 ces points comme contrôles pratiques pour cette section.
- 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,403,409,413).
Cycle de vie des tâches et rétention
Utilisez ces points comme contrôles pratiques pour cette section.
- Les tâches completed et 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 hours. - Les compteurs de rate-limit se réinitialisent sur une fenêtre glissante.
Modèle de support
Utilisez ces points comme contrôles pratiques pour cette section.
- Support pendant les heures ouvrées.
- Objectif de première réponse : 1 jour ouvré.
Envoyer un retour technique
Partagez avec notre équipe les questions d’implémentation, risques et changements de contrat nécessaires.
Utiliser Postman et OpenAPI
Utilisez ces points comme contrôles pratiques pour cette section.
- Importez la collection Postman et définissez
baseUrl,apiKeyet une nouvelle variableidempotencyKey. - 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.