Pour les bâtisseurs

API HTTP

Le site est lui-même le client d'une API HTTP simple — tout ce que fait la zone de dépôt, vous pouvez le faire avec curl. L'API est gratuite pendant la bêta, sans clé. Limites : 30 requêtes en écriture par minute et par IP, plus des quotas quotidiens gratuits (20 conversions / 3 vocales / 30 détections — échecs remboursés). Agents IA : pointez-les vers /skill.md — toute cette page y est reproduite dans un format adapté.

Authentification et quotas

L'API est ouverte sans clé : les appels anonymes partagent le quota gratuit par IP (L1). Les agents et scripts qui ont besoin de plus d'amplitude peuvent utiliser une clé API (L2b) — créez-en une depuis votre page compte et envoyez-la en Bearer ; chaque clé dispose de ses propres quotas quotidiens. Les clés sont stockées en hachage SHA-256, le texte intégral n'est affiché qu'à la création et n'apparaît jamais dans les journaux.

IdentitéConversions/jourVoix/jourDétections/jour
Anonyme (par IP) — L120330
Clé API (par clé) — L2b50020300

Les quotas se réinitialisent à minuit UTC ; les conversions échouées sont automatiquement remboursées. Écritures limitées à 30 requêtes par minute et par IP.

# Anonyme (L1) — sans clé
curl -X POST https://liteconvert.cc/api/public/detect -F "file=@document.pdf"

# Avec une clé API (L2b) — remplacez sk-… par votre clé
curl -X POST https://liteconvert.cc/api/public/convert \
  -H "Authorization: Bearer sk-…" \
  -F 'meta={"conversion":"pdf-docx"};type=application/json' \
  -F "file=@document.pdf"

401 INVALID_API_KEY : une clé présentée en Bearer a échoué à la validation (invalide ou révoquée) — une clé présentée est toujours rejetée, jamais rétrogradée en anonyme. Les requêtes sans clé, ou dont l'en-tête Authorization n'est pas une clé Bearer, sont simplement décomptées du quota anonyme L1. 429 QUOTA_EXCEEDED : le quota du jour est épuisé pour cette identité ; error.reset_at donne l'heure exacte de réinitialisation (minuit UTC).

Besoin de plus d'amplitude — créez une clé API sur votre page compte.

Points de terminaison

MéthodeCheminRôle
POST/api/public/detectIdentifier un fichier (champ multipart file). Synchrone, ≤20 s.
POST/api/public/convertLancer une conversion (multipart meta + fichier). Renvoie request_id.
GET/api/public/requests/{id}Statut, progression et artefacts d'une requête.
GET/api/public/requests/recent?limit=20Vos conversions récentes sur cet appareil (en-tête X-Owner-Token, anonyme).
GET/api/public/requests/{id}/artifacts/{name}Redirection 302 vers l'URL de téléchargement présignée.
GET/api/public/requests/{id}/timelineJournal des événements lisible de la conversion.
GET/api/public/statsStatistiques de réussite en direct.
GET/api/public/conversionsLe catalogue des conversions (toutes les paires prises en charge).
GET/api/public/catalogLe manifeste de construction (clés canoniques avec family/lossy/steps) pour les intégrateurs.

Détecter un fichier

curl -X POST https://liteconvert.cc/api/public/detect -F "file=@document.pdf"
{
  "request_id": "c0af…",
  "status": "succeeded",
  "report": { "declared": "pdf", "detected": "pdf", "match": true,
              "mime": "application/pdf", "confidence": 0.99 }
}

Convertir et télécharger

# 1. Soumettre (les sources URL envoient meta avec source_url, sans fichier)
curl -X POST https://liteconvert.cc/api/public/convert \
  -F 'meta={"conversion":"pdf-docx"};type=application/json' \
  -F "file=@document.pdf"
# → 202 { "request_id": "…", "status": "running" }

# 2. Interroger
curl https://liteconvert.cc/api/public/requests/REQUEST_ID
# → { "status": "succeeded", "artifacts": [{ "name": "docx", "download": "…", … }] }

# 3. Télécharger (302 vers URL présignée, valide 1 h)
curl -L -o result.docx https://liteconvert.cc/api/public/requests/REQUEST_ID/artifacts/docx

Codes d'erreur

StatutCodeSignification
401INVALID_API_KEYLa clé présentée est invalide, ou elle a été révoquée. La révocation prend effet immédiatement — créez une nouvelle clé depuis votre page compte.
429QUOTA_EXCEEDEDQuota gratuit du jour épuisé (réinitialisé à minuit UTC ; error.reset_at donne l'heure exacte). Les conversions échouées sont automatiquement remboursées.
422UNSUPPORTED_CONVERSIONLa paire de conversion n'est pas dans le catalogue.
404ARTIFACT_EXPIREDLe résultat a expiré et été supprimé (rétention 24 h) — reconvertissez.
413/422INTAKE_FAILEDÉchec de l'envoi ou dépassement de 200 Mo.
502CONVERT_FAILEDLes moteurs ont tenté mais n'ont pas pu lire ce fichier. Les codes détaillés (NEEDS_OCR, ENCRYPTED_DOCUMENT, MALFORMED_DOCUMENT) sont renvoyés dans error.code de la requête, avec des messages fixes.
400INVALID_SOURCE_URLsource_url est absent ou n'est pas une URL http(s) publique valide.
400SOURCE_URL_BLOCKEDL'URL source pointe vers une adresse privée, de bouclage ou link-local : elle a été bloquée (protection SSRF).
502SOURCE_URL_FETCH_FAILEDL'URL source n'a pas pu être téléchargée — hors ligne, délai dépassé, trop volumineuse ou non accessible publiquement.
503CONVERT_API_UNAVAILABLEPanne temporaire — réessayez dans une minute.

Pour les agents IA

Récupérez /skill.md — c'est une fiche autonome avec les points de terminaison ci-dessus, des exemples complets et la déclaration de gratuité. Relisez-la en cas de doute ; elle évolue avec l'API.