API PDF.chat

Téléchargez un PDF et chat avec celui-ci depuis votre propre application — posez des questions et obtenez des réponses citées à la page, en 100+ langues.

Aperçu général

L'API PDF.chat est une petite interface REST. POST un document pour l'ingérer et récupérer un travail avec le texte du document et une ventilation par page (texte, boîtes de délimitation, confiance). POST Les emplois de 5 pages ou moins sont retournés en ligne; les emplois plus importants sont immédiatement retournés avec un pending statut que vous sondage jusqu'à done.

  • URL de base : https://pdf.chat
  • Documents dans: PDF, plus Word, PowerPoint, texte et images (PNG, JPG, WEBP, GIF, BMP, TIFF)
  • Chat sur: réponses avec citations de pages; transcriptions via le point d'arrivée historique
  • Texte traité : txt, md, docx, pdf, csv, json
  • Moteurs à lecture: cpu (documents rapides, imprimés) et vlm (IA premium, écriture, mise en page complexe, mathématiques)

Authentification

Authentifier avec votre Jeton API (trouver sur votre page de compte) comme en-tête de porteur:

Authorization: Bearer YOUR_API_TOKEN

Vous pouvez également passer ?api_token=… comme paramètre de requête. L'utilisation est mesurée en fonction du solde de page de votre compte.

Soumettre un document

POST /api/v1/ocr/, téléchargement de formulaire multiparties.

curl -X POST https://pdf.chat/api/v1/ocr/ \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -F "file=@invoice.pdf" \
  -F "tier=vlm" \
  -F "language=auto"

Retourne la tâche. Pour les fichiers ≤5 pages, il est déjà done avec le texte; les fichiers plus grands reviennent pending/processing, sondage le point final de l'état.

{
  "uuid": "9f2c1b7e4a...",
  "status": "done",
  "tier": "vlm",
  "language": "auto",
  "page_count": 1,
  "mean_confidence": 0.98,
  "text": "INVOICE\nAcme Corp\nTotal: 215.00 USD",
  "markdown": "# INVOICE\n\n**Acme Corp** ...",
  "pages": [ { "index": 0, "text": "...", "blocks": [ { "text": "...", "bbox": [x0,y0,x1,y1], "confidence": 0.98 } ] } ]
}

Obtenir un résultat

GET /api/v1/ocr/<uuid>/, sondage jusqu'à status est done ou failed.

curl https://pdf.chat/api/v1/ocr/9f2c1b7e4a.../ \
  -H "Authorization: Bearer YOUR_API_TOKEN"

Télécharger un format

GET /api/v1/ocr/<uuid>/download/?format=md, d'exporter le résultat. format est l'un des txt, md, docx, pdf, csv, json.

curl -L "https://pdf.chat/api/v1/ocr/9f2c1b7e4a.../download/?format=docx" \
  -H "Authorization: Bearer YOUR_API_TOKEN" -o result.docx

Chat avec un document

Posez des questions sur un travail terminé. Les réponses sont fondées uniquement dans le texte extrait et citez la page source. Nécessite un jeton de compte, la fonction chat est liée au compte.

POST /api/v1/chat/<uuid>/, JSON corps {"message": "your question"}.

curl -X POST https://pdf.chat/api/v1/chat/9f2c1b7e4a.../ \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"message": "What is the invoice total and due date?"}'

Renvoie le message d'assistant avec sa réponse et une liste de pages citées :

{"conversation": "a1b2…", "message": {
   "role": "assistant",
   "content": "The total is $42, due on March 3 (p. 1).",
   "citations": [{"page": 1, "cited_text": "The invoice total is $42…", "document_id": "9f2c1b7e4a…"}]
}}

GET /api/v1/chat/<uuid>/history/, chercher le compte rendu complet de la conversation pour un travail.

Exemples de codes

import requests, time

BASE = "https://pdf.chat/api/v1"
H = {"Authorization": "Bearer YOUR_API_TOKEN"}

# 1. Upload a PDF
with open("contract.pdf", "rb") as f:
    job = requests.post(BASE + "/ocr/", headers=H, files={"file": f}).json()

# 2. Wait until it's ready to chat
while job["status"] in ("pending", "processing"):
    time.sleep(2)
    job = requests.get(f"{BASE}/ocr/{job['uuid']}/", headers=H).json()

# 3. Ask questions — every answer is cited to the page
ans = requests.post(f"{BASE}/chat/{job['uuid']}/", headers=H,
    json={"message": "What is the termination notice period?"}).json()
print(ans["message"]["content"])
print(ans["message"]["citations"])
import fs from "fs";

const BASE = "https://pdf.chat/api/v1";
const H = { Authorization: "Bearer YOUR_API_TOKEN" };

// 1. Upload a PDF
const form = new FormData();
form.append("file", new Blob([fs.readFileSync("contract.pdf")]), "contract.pdf");
let job = await (await fetch(`${BASE}/ocr/`, { method: "POST", headers: H, body: form })).json();

// 2. Wait until it's ready to chat
while (["pending", "processing"].includes(job.status)) {
  await new Promise(r => setTimeout(r, 2000));
  job = await (await fetch(`${BASE}/ocr/${job.uuid}/`, { headers: H })).json();
}

// 3. Ask questions — every answer is cited to the page
const ans = await (await fetch(`${BASE}/chat/${job.uuid}/`, {
  method: "POST", headers: { ...H, "Content-Type": "application/json" },
  body: JSON.stringify({ message: "What is the termination notice period?" })
})).json();
console.log(ans.message.content, ans.message.citations);
# 1. Upload a PDF
curl -X POST https://pdf.chat/api/v1/ocr/ \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -F "file=@contract.pdf"

# 2. Ask questions (use the uuid from step 1) — answers cited to the page
curl -X POST https://pdf.chat/api/v1/chat/UUID/ \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"message": "What is the termination notice period?"}'

Paramètres

ChampTypeDésignation des marchandises
filefileRequis. L'image ou PDF à traiter.
tierstringcpu (par défaut, rapide/imprimé) ou vlm (IA primaire: écriture, mise en page, maths).
languagestringauto (par défaut) ou un code de langue (en, ch, ja, ar,...).
toolstringLimace d'outil en option (par exemple summarize-pdf, ask-pdf) de précadrer le chat pour cette tâche.

Erreurs et limites

CodeSignification
400Aucun fichier, type non pris en charge, ou fichier trop grand.
401Jeton API manquant ou invalide.
402Hors pages, limite quotidienne/mensuelle atteinte, ou aucun crédit. L'organisme comprend used/cap.
404Emploi UUID introuvable.
409Télécharger demandé avant la fin du travail.

Chaque page traitée coûte des crédits (1/page sur le niveau rapide, plus sur les primes). Les régimes payés augmentent les plafonds de page par fichier et ajoutent la priorité. prix.

Foire aux questions

Créez un compte gratuit et ouvrez votre page de compte, votre jeton est montré là avec un bouton de copie.

Oui, les fichiers de 5 pages ou moins renvoient le résultat complet en ligne dans la réponse POST, donc aucun sondage n'est nécessaire pour la plupart des images et des PDF courts.

Plus de 100 scripts, y compris le latin, le CJK, l'arabe, le cyrillique et l'indic. language=auto pour détecter ou passer un code spécifique.

Les téléchargements sont traités uniquement pour répondre à vos questions et supprimés automatiquement. Nous ne vendons, ne partageons pas ou ne formons jamais vos documents.

L'utilisation est mesurée par page en fonction du solde de votre compte : les appels anonymes reçoivent une allocation journalière par IP, les comptes gratuits un seau mensuel, et les régimes payés utilisent des crédits achetés avec des plafonds de page par fichier plus élevés et la priorité.

Vous pouvez envoyer PNG, JPG, WEBP, GIF, BMP, TIFF et PDF multipage. Les résultats sont téléchargés en format txt, md, docx, pdf (rechercheable), csv ou json via le paramètre format du paramètre de téléchargement.

400 est un fichier manquant, un type non pris en charge, ou un fichier trop grand; 401 un jeton manquant ou invalide; 402 des pages; 404 un emploi inconnu UUID; et 409 un téléchargement demandé avant la fin du travail.

Un objet de travail avec statut, niveau, langue, page_count, et mean_confiance, plus le texte complet et la balisage. Le tableau de pages divise chaque page en blocs avec leur texte, la zone de délimitation (boîte) et la confiance par bloc.

Utilisez cpu (le par défaut) pour la reconnaissance rapide et à faible coût de documents imprimés propres. Utilisez vlm, le moteur IA premium, pour l'écriture, les mises en page complexes ou multicolonnes, les mathématiques et la traduction, où il est beaucoup plus précis.

Passez l'outil avec une limace (par exemple résumé-pdf ou question-pdf) à pré-cadrer le chat pour cette tâche, de sorte que l'assistant est accordé pour résumer ou répondre aux questions sur le document.

Fichiers de 5 pages ou moins retourner en ligne dans la réponse POST. Les fichiers plus grands reviennent immédiatement en attente ou en traitement, et vous enquêtez GET /api/v1/ocr/<uuid>/ jusqu'à ce que l'état soit fait ou échoué. Les plans payés augmentent le plafond de page par fichier.

L'API est un REST simple sur HTTPS, donc elle fonctionne à partir de n'importe quelle langue avec un client HTTP, voir les exemples Python, Node.js et cURL ci-dessus. Il n'y a pas de SDK à installer; quelques lignes de code HTTP standard sont tout ce dont vous avez besoin.