Documentation API
API REST conv2pdf — convertissez, fusionnez, divisez, compressez et protégez des PDF depuis votre application. Hébergement UE, RGPD strict, pas de tier US dans la chaîne.
Démarrage rapide
- Créez un compte (gratuit, magic link par email)
- Depuis votre tableau de bord, créez une clé API (plan Dev gratuit, 100 conversions/mois pour démarrer)
- Authentifiez vos appels avec l'en-tête
Authorization: Bearer cpdf_live_…
Base URL
https://api.conv2pdf.com/v1
Authentification
Chaque requête doit inclure l'en-tête HTTP Authorization: Bearer <votre_clé>. Une clé révoquée ou inexistante renvoie un code 401. Un quota dépassé renvoie 429 avec les détails de réinitialisation.
Endpoints
GET /v1/tools
Renvoie la liste des outils disponibles, leurs limites et formats acceptés.
curl https://api.conv2pdf.com/v1/tools \
-H "Authorization: Bearer cpdf_live_xxx"
POST /v1/convert/:tool
Effectue une conversion. Les fichiers sont envoyés en multipart/form-data.
Outils disponibles : image-to-pdf, office-to-pdf, merge-pdf, split-pdf, compress-pdf, protect-pdf.
Paramètres optionnels (champs form-data) :
split-pdf: champranges(ex :1-5,7,10-12)compress-pdf: champquality(low,medium,high)protect-pdf: champpasswordrequis (4 à 64 caractères) ; optionnelsprevent_print=on,prevent_copy=on
Exemple — Image → PDF (curl)
curl -X POST https://api.conv2pdf.com/v1/convert/image-to-pdf \
-H "Authorization: Bearer cpdf_live_xxx" \
-F "file=@photo.jpg"
Exemple — Fusion PDF (curl)
curl -X POST https://api.conv2pdf.com/v1/convert/merge-pdf \
-H "Authorization: Bearer cpdf_live_xxx" \
-F "file=@doc1.pdf" \
-F "file=@doc2.pdf" \
-F "file=@doc3.pdf"
Exemple — Compression (curl)
curl -X POST https://api.conv2pdf.com/v1/convert/compress-pdf \
-H "Authorization: Bearer cpdf_live_xxx" \
-F "file=@gros.pdf" \
-F "quality=medium"
Exemple — Protection par mot de passe (curl)
curl -X POST https://api.conv2pdf.com/v1/convert/protect-pdf \
-H "Authorization: Bearer cpdf_live_xxx" \
-F "file=@confidentiel.pdf" \
-F "password=secret123" \
-F "prevent_print=on" \
-F "prevent_copy=on"
Chiffrement AES-256. Le PDF résultant demandera le mot de passe à l'ouverture et appliquera les restrictions cochées.
Réponse en cas de succès
{
"job_id": "abc123…",
"status": "success",
"download_url": "/v1/download/abc123…",
"size_bytes": 124533,
"quota": {
"plan": "starter",
"monthly_quota": 500,
"used": 42,
"period_end": 1715789012345
}
}
GET /v1/download/:jobId
Télécharge le fichier converti. Le PDF est servi avec Content-Type: application/pdf et Cache-Control: no-store. Disponible 1 heure après la conversion.
curl https://api.conv2pdf.com/v1/download/abc123… \
-H "Authorization: Bearer cpdf_live_xxx" \
-o sortie.pdf
Exemples — Node.js
import { readFile } from 'node:fs/promises';
const file = await readFile('./photo.jpg');
const formData = new FormData();
formData.append('file', new Blob([file]), 'photo.jpg');
const res = await fetch('https://api.conv2pdf.com/v1/convert/image-to-pdf', {
method: 'POST',
headers: { 'Authorization': 'Bearer cpdf_live_xxx' },
body: formData
});
const data = await res.json();
console.log(data.download_url);
Exemples — Python
import requests
with open('photo.jpg', 'rb') as f:
r = requests.post(
'https://api.conv2pdf.com/v1/convert/image-to-pdf',
headers={'Authorization': 'Bearer cpdf_live_xxx'},
files={'file': f}
)
print(r.json()['download_url'])
Codes d'erreur
| Code | Erreur | Cause |
|---|---|---|
| 400 | not_enough_files / too_many_files | Nombre de fichiers hors bornes pour l'outil |
| 401 | missing_bearer_token / invalid_api_key | Auth manquante ou clé invalide |
| 403 | forbidden | Job appartient à une autre clé |
| 404 | tool_not_found / job_not_found | Outil ou job inexistant |
| 409 | job_not_ready | Conversion non terminée |
| 410 | file_expired | Fichier supprimé (TTL 1 h dépassé) |
| 413 | file_too_large | Fichier > 200 Mo (limite API) |
| 415 | unsupported_format | Extension non acceptée par l'outil |
| 429 | quota_exceeded | Quota mensuel atteint |
| 500 | failed | Erreur de conversion serveur (détail dans le champ error) |
Quotas et réinitialisation
Chaque clé API a un quota mensuel selon son plan (voir tarifs). La période est roulante sur 30 jours à partir de la date de création de la clé. À la fin de chaque période, used_current_period est automatiquement remis à zéro.
Confidentialité
Aucun fichier (entrée ou sortie) n'est conservé au-delà de 1 heure. Aucun cache résultat n'est appliqué. L'intégralité du traitement a lieu sur des serveurs UE (OVH Gravelines). Voir notre politique de confidentialité pour le détail.
Support
Pour toute question technique, utilisez notre formulaire de contact (sujet « Question technique »). Plans Business et Enterprise : support prioritaire avec SLA contractuel.