requests + retry, async possible via httpx, parfait pour orchestrer vos batchs EN16931.

Intégrer FacturX API avec Python

Compatible scripts CLI, worker Celery, pipelines Airflow ou FastAPI.

Support sync/async
Idéal pour pipelines data et automatisations
Hash request_id pour tracer les factures

Exemple curl

multipart/form-data
curl -X POST https://api.facturxapi.com/api/v1/validate \
  -H "Authorization: Bearer $FACTURX_API_KEY" \
  -F "[email protected]" \
  -F "lang=fr"

Snippet Python

Auth + appel /api/v1/validate
import os
import requests

API_KEY = os.environ['FACTURX_API_KEY']
API_URL = 'https://api.facturxapi.com/api/v1/validate'

files = {
    'file': open('invoices/FX-2024-0001.pdf', 'rb'),
}

response = requests.post(
    API_URL,
    headers={'Authorization': f'Bearer {API_KEY}'},
    files=files,
    data={'lang': 'fr'}
)

data = response.json()
if not data.get('valid'):
    print('Erreurs détectées:', data.get('errors', []))

Checklist intégration

  • Uploader depuis un dossier temporaire protégé (pas de /tmp partagé)

  • Utiliser retrying ou tenacity pour gérer 429/500

  • Anonymiser les logs (pas de PDF complet en clair)

Retries & timeouts

Utilisez tenacity ou httpx.Retry avec jitter pour protéger vos workers.

  • • Timeout côté requests : 20 s
  • • Limiter la concurrence via semaphore pour éviter 429
  • • Réémettre seulement les requêtes réseau safe (POST idem que file)

Erreurs fréquentes

Mappez vos logs aux codes pour des corrections rapides.

400 unsupported_media_type

Extension non supportée (docx, zip).

💡 Filtrer les uploads côté CLI et imposer pdf/xml uniquement.

502 upstream_timeout

Validation lourde (PDF + Schematron) > 30 s.

💡 Découper le lot et relancer plus tard (queue Celery + countdown).

quota_exceeded

Seuil mensuel dépassé.

💡 Abonner un handler Celery pour déclencher Analytics.quota_exceeded et alerter votre équipe.

FAQ

Puis-je traiter un lot depuis Pandas ?

Oui, bouclez sur vos lignes et envoyez les fichiers un par un (max 3 en parallèle).

Comment stocker le rapport ?

Sauvegardez le JSON de réponse dans S3 ou Postgres avec le hash de la facture.

Guide EN16931

Comprendre les profils et règles

Tester en ligne

Uploader rapidement un échantillon

Tarifs

Anticiper vos lots mensuels