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) och vlm (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ältTypVaruslag
filefileKrävs. Bilden eller PDF att bearbeta.
tierstringcpu (standard, snabb/tryckt) eller vlm (premium AI: handstil, layout, matte).
languagestringauto (förvalt) eller en språkkod (en, ch, ja, ar,...).
toolstringValfri verktygssnigel (t.ex. summarize-pdf, ask-pdf) att förinställa chat för den uppgiften.

Fel & gränser

OrdförandeInnebörd
400Ingen fil, typ som stöds inte, eller fil för stor.
401Saknar eller ogiltig API- token.
402Ute på sidor, dagligen / månad fri gräns nås, eller inga krediter. used/cap.
404Jobb UUID hittades inte.
409Ladda 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

Skapa ett gratis konto och öppna ditt kontosida, din token visas där med en kopia knapp.

Ja, filer på 5 sidor eller färre returnerar hela resultatet inline i POST-svaret, så ingen omröstning behövs för de flesta bilder och korta PDF-filer.

Över 100, inklusive latin, CJK, arabiska, kyrilliska och indiska manus. Använd language=auto för att upptäcka eller passera en specifik kod.

Uppladdningar behandlas endast för att svara på dina frågor och raderas automatiskt. Vi säljer aldrig, delar eller tränar på dina dokument.

Användning mäts per sida mot ditt kontosaldo: anonyma samtal får en per-IP dagtraktamente, gratis konton en månatlig hink, och betalda planer använda köpta krediter med högre per-fil sidmössor och prioritet. När du tar slut får du en 402 med använt och mössa i kroppen.

Du kan skicka PNG, JPG, WEBP, GIF, BMP, TIFF och flera sidor PDF. Resultat nedladdning som txt, md, docx, pdf (sökbar), csv, eller json via nedladdningsslutpunkten format parameter.

400 är en saknad fil, en typ som inte stöds eller en fil som är för stor; 401 en saknad eller ogiltig token; 402 av sidor; 404 ett okänt jobb UUID; och 409 en nedladdning som begärts innan jobbet avslutats. Felorganen inkluderar ett kort meddelande.

Ett jobbobjekt med status, nivå, språk, sidräkning och medel-_ förtroende, plus full text och markering. Sidornas array bryter varje sida i block med sin text, avgränsande ruta (bbox) och per block förtroende.

Använd cpu (standarden) för snabb, låg kostnad erkännande av rena tryckta dokument. Använd vlm, premium AI-motorn, för handstil, komplexa eller multi-kolumn layouter, matematik, och översättning, där det är mycket mer exakt.

Passera verktyget med en snigel (t.ex. sammanfattning-pdf eller fråga-pdf) för att förrama chat för den uppgiften, så assistenten är inställd för att sammanfatta eller svara på frågor om dokumentet.

Filer på 5 sidor eller färre returnerar inline i POST-svaret. Större filer kommer tillbaka omedelbart som väntande eller bearbetning, och du väljer GET /api/v1/ocr /<uuid>/ tills status är klar eller misslyckades. Betalda planer höjer sidkapsylen per fil.

API:et är enkelt REST över HTTPS, så det fungerar från alla språk med en HTTP- klient, se exemplen Python, Node.js och cURL ovan. Det finns inget SDK att installera; några rader med standard HTTP- kod är allt du behöver.