PDF.chat API
Ladda upp en PDF och chat med den från din egen app — ställ frågor och få svar citerade på sidan, på 100+ språk. Metererade per sida, inga överraskningar.
Översikt
PDF.chat API är ett litet REST-gränssnitt. Först du POST ett dokument för att inta det och få tillbaka ett jobb med dokumentets text och en uppdelning per sida (text, avgränsande rutor, förtroende). POST frågor mot det jobbet och få svar baserade i dokumentet, var och en citerar den sida det kom från. Jobb på 5 sidor eller färre returer inline; större jobb återvänder omedelbart med en pending status som du väljer fram tills done.
- Baswebbadress:
https://pdf.chat - Dokument i PDF, plus Word, PowerPoint, text och bilder (PNG, JPG, WEBP, GIF, BMP, TIFF)
- Chat till: svar med sidciteringar, utskrifter via historiken endpoint
- Bearbetad text:
txt,md,docx,pdf,csv,json - Avläsningsmotorer:
cpu(snabba, tryckta dokument) ochvlm(premium AI, handstil, komplex layout, matematik)
Behörighetskontroll
Berättiga med din API- token (Hitta det på din kontosida) som bärhuvud:
Authorization: Bearer YOUR_API_TOKEN
Du kan också passera ?api_token=… som en frågeparameter. Användning mäts mot ditt kontos sidbalans.
Lämna in ett dokument
POST /api/v1/ocr/, Flera delar av formuläruppladdning.
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"
Returnerar jobbet. För ≤5- sidfiler är det redan done med texten; större filer kommer tillbaka pending/processing, mät status endpoint.
{
"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 } ] } ]
}
Få ett resultat
GET /api/v1/ocr/<uuid>/, röst till och med status är done eller failed.
curl https://pdf.chat/api/v1/ocr/9f2c1b7e4a.../ \
-H "Authorization: Bearer YOUR_API_TOKEN"
Ladda ner ett format
GET /api/v1/ocr/<uuid>/download/?format=md, exportera resultatet. format är en av 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 med dokument
Ställ frågor om ett färdigt jobb. Svaren är endast baserade i den extraherade texten och citera källsidan. Kräver ett konto token, chat funktionen är konto-gated.
POST /api/v1/chat/<uuid>/, JSON kropp {"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?"}'
Returnerar det assisterande meddelandet med sitt svar och en lista över citerade sidor:
{"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/, Hämta hela konversationsavskriften för ett jobb.
Exempel på koder
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?"}'
Parametrar
| Fält | Typ | Varuslag |
|---|---|---|
file | file | Krävs. Bilden eller PDF att bearbeta. |
tier | string | cpu (standard, snabb/tryckt) eller vlm (premium AI: handstil, layout, matte). |
language | string | auto (förvalt) eller en språkkod (en, ch, ja, ar,...). |
tool | string | Valfri verktygssnigel (t.ex. summarize-pdf, ask-pdf) att förinställa chat för den uppgiften. |
Fel & gränser
| Ordförande | Innebörd |
|---|---|
400 | Ingen fil, typ som stöds inte, eller fil för stor. |
401 | Saknar eller ogiltig API- token. |
402 | Ute på sidor, dagligen / månad fri gräns nås, eller inga krediter. used/cap. |
404 | Jobb UUID hittades inte. |
409 | Ladda ner begärd innan jobbet är klart. |
Varje sida som behandlas kostar krediter (1/sida på snabb nivå, mer på premie). Betald planer höja per fil sidkapsyler och lägga till prioritet. Se pris.
Vanliga frågor
language=auto för att upptäcka eller passera en specifik kod.