Exemples d'intégration

Du code qui se colle et qui marche. Aucun SDK, aucune dépendance exotique.

URL de base

https://api.pont-facturx.com

Remplacez sk_live_votre_cle par une clé créée depuis Réglages → API. Une clé sk_test_ suffit pour tout essayer sans consommer de crédit.

1. Authentification et quota

Vérifie que la clé est acceptée et lit le solde de crédits. Ne débite rien. Une clé sk_test_ convertit même avec 0 crédit : ce solde ne concerne que sk_live_.

export PFX_API_KEY="sk_live_votre_cle"

curl -s https://api.pont-facturx.com/v1/account/usage \
  -H "Authorization: Bearer $PFX_API_KEY"

# {"plan":"Abonnement Pro","credits_available":187,"rate_limit":"30 requests/minute",...}

2. Convertir un PDF (Idempotency-Key)

Rejouer la même requête avec la même clé ne débite qu'un crédit. Une clé par facture.

curl -sS -D headers.txt \
  -X POST https://api.pont-facturx.com/v1/convert \
  -H "Authorization: Bearer $PFX_API_KEY" \
  -H "Idempotency-Key: facture-FA-2026-0042" \
  -F "file=@facture.pdf" \
  -F "profile=BASIC_WL" \
  --output facture_facturx.pdf

grep -i "^x-facturx-validation-status" headers.txt
# x-facturx-validation-status: PASSED

3. Extraire sans convertir

0 crédit. Relisez le JSON, corrigez-le, puis renvoyez-le en invoice_data pour sauter l'OCR.

curl -sS -X POST https://api.pont-facturx.com/v1/extract \
  -H "Authorization: Bearer $PFX_API_KEY" \
  -F "file=@facture.pdf" | jq '.invoice_data' > invoice_data.json

curl -sS -X POST https://api.pont-facturx.com/v1/convert \
  -H "Authorization: Bearer $PFX_API_KEY" \
  -H "Idempotency-Key: facture-FA-2026-0042" \
  -F "file=@facture.pdf" \
  -F "invoice_data=$(cat invoice_data.json)" \
  --output facture_facturx.pdf

4. Valider un document existant

Un document invalide renvoie 200 avec valid:false — lisez le corps, pas le code HTTP.

curl -sS -X POST https://api.pont-facturx.com/v1/validate \
  -H "Authorization: Bearer $PFX_API_KEY" \
  -F "file=@facture_facturx.pdf" | jq '.valid, .errors'

5. Gérer les erreurs

Sur 429 et 5xx, rejouez la MÊME Idempotency-Key : aucun crédit supplémentaire.

http_code=$(curl -sS -o out.bin -w '%{http_code}' \
  -X POST https://api.pont-facturx.com/v1/convert \
  -H "Authorization: Bearer $PFX_API_KEY" \
  -H "Idempotency-Key: facture-FA-2026-0042" \
  -F "file=@facture.pdf")

case "$http_code" in
  200) mv out.bin facture_facturx.pdf ;;
  402) echo "Crédits épuisés : $(jq -r '.detail.message' out.bin)" ;;
  409) echo "Idempotency-Key déjà utilisée pour une autre requête" ;;
  429) echo "Trop de requêtes — attendre Retry-After puis rejouer la même clé" ;;
  *)   echo "Erreur $http_code : $(cat out.bin)" ;;
esac

6. Mode test (sk_test_)

Même moteur, document identique. 0 crédit, quotas bas, aucune conservation, transmission refusée.

curl -sS -D headers.txt \
  -X POST https://api.pont-facturx.com/v1/convert \
  -H "Authorization: Bearer sk_test_votre_cle" \
  -F "file=@facture.pdf" \
  --output facture_test.pdf

grep -i "^x-livemode" headers.txt
# x-livemode: false

Un cas qui n'est pas couvert ?

La référence complète des endpoints est dans la documentation API.