PDF.chat API
Laden Sie ein PDF und chat mit ihm von Ihrer eigenen App - Fragen stellen und erhalten Antworten auf die Seite zitiert, in 100+ Sprachen. Meteriert pro Seite, keine Überraschungen.
Überblick
Die PDF.chat API ist eine kleine REST-Schnittstelle. POST ein Dokument, um es aufzunehmen und einen Job mit dem Text des Dokuments und einer pro Seite Aufschlüsselung (Text, Begrenzungsfelder, Vertrauen) zurück zu bekommen. POST Fragen gegen diesen Job und erhalten Antworten in das Dokument geerdet, jede unter Berufung auf die Seite, die es kam. Jobs von 5 Seiten oder weniger Rückkehr inline; größere Arbeitsplätze Rückkehr sofort mit einem pending Status, den Sie bis zum done.
- Grund-URL:
https://pdf.chat - Dokumente in: PDF, plus Word, PowerPoint, Text und Bilder (PNG, JPG, WEBP, GIF, BMP, TIFF)
- Chat aus: Antworten mit Seitenzitaten; Transkripte über den Verlaufsendpunkt
- Verarbeiteter Text:
txt,md,docx,pdf,csv,json - Lesemaschinen:
cpu(schnelle, gedruckte Dokumente) undvlm(Premium AI, Handschrift, komplexes Layout, Mathematik)
Authentifizierung
Authentifizierung mit Ihrem API-Token (finden Sie es auf Ihrem Kontoseite) als Trägerkopf:
Authorization: Bearer YOUR_API_TOKEN
Sie können auch passieren ?api_token=… als Abfrageparameter. Die Verwendung wird auf den Seitenstand Ihres Kontos gemessen.
Ein Dokument übermitteln
POST /api/v1/ocr/, Mehrteil-Formular hochladen.
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"
Gibt den Auftrag zurück. Für ≤5-Seiten-Dateien ist er bereits done mit dem Text; größere Dateien kommen zurück pending/processing, Umfrage zum Statusendpunkt.
{
"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 } ] } ]
}
Ergebnis erzielen
GET /api/v1/ocr/<uuid>/, Umfrage bis status wird done oder failed.
curl https://pdf.chat/api/v1/ocr/9f2c1b7e4a.../ \
-H "Authorization: Bearer YOUR_API_TOKEN"
Format herunterladen
GET /api/v1/ocr/<uuid>/download/?format=md, Export des Ergebnisses. format ist einer von 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 mit einem Dokument
Stellen Sie Fragen zu einem fertigen Job. Antworten werden nur im extrahierten Text geerdet und zitieren Sie die Quellseite. Erfordert ein Konto Token, das chat Feature ist account-gated.
POST /api/v1/chat/<uuid>/, JSON-Körper {"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?"}'
Gibt die Assistentennachricht mit ihrer Antwort und einer Liste der zitierten Seiten zurück:
{"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/, die vollständige Transkript für einen Job zu holen.
Beispiele für den Code
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?"}'
Parameter
| Feld | Typ | Warenbezeichnung |
|---|---|---|
file | file | Erforderlich. Das Bild oder PDF zum Verarbeiten. |
tier | string | cpu (Standard, schnell/gedruckt) oder vlm (Premium AI: Handschrift, Layout, Mathematik). |
language | string | auto (Standard) oder einen Sprachcode (en, ch, ja, ar== Einzelnachweise == |
tool | string | Optionale Werkzeugschnecke (z. summarize-pdf, ask-pdf) um die chat für diese Aufgabe vorzurahmen. |
Fehler & Grenzen
| ANHANG | Bedeutung |
|---|---|
400 | Keine Datei, nicht unterstützte Art oder Datei zu groß. |
401 | Fehlendes oder ungültiges API-Token. |
402 | Von den Seiten, täglich / monatlich freies Limit erreicht, oder keine Credits. used/cap. |
404 | Job UUID nicht gefunden. |
409 | Download angefordert, bevor der Job beendet. |
Jede Seite verarbeitete Kosten Gutschriften (1/Seite auf der schnellen Ebene, mehr auf Prämie). Bezahlte Pläne erhöhen pro Datei Seite Kappen und hinzufügen Priorität. Siehe Preisgestaltung.
Häufig gestellte Fragen
language=auto um einen bestimmten Code zu erkennen oder zu übergeben.