PDF.chat API

Upload en PDF og chat med det fra din egen app! Stil spørgsmål og få svar citeret til siden, på 100 + sprog. Målt pr side, ingen overraskelser.

Oversigt

PDF.chat API er en lille REST-grænseflade. Først du POST et dokument til at indtage det og få et job tilbage med dokumentets tekst og en per-side opdeling (tekst, indgrænsende kasser, tillid). POST spørgsmål mod dette job og få svar grundet i dokumentet, hver med henvisning til den side, det kom fra. Jobs på 5 sider eller mindre vende tilbage inline; større job vender tilbage straks med en pending status, som du vælger indtil done.

  • Basis- URL: https://pdf.chat
  • Dokumenter i: PDF, plus Word, PowerPoint, tekst og billeder (PNG, JPG, WEBP, GIF, BMP, TIFF)
  • Chat ud: svar med sidecitationer; udskrifter via historik- endpoint
  • Forarbejdet tekst: txt, md, docx, pdf, csv, json
  • Læssemaskiner: cpu (hurtigt, trykte dokumenter) og vlm (premium AI, håndskrift, kompleks layout, matematik)

Godkendelse

Autentificer med din API- token (Find det på din kontoside) som en Bearer-overskrift:

Authorization: Bearer YOUR_API_TOKEN

Du kan også passere ?api_token=… som en forespørgsel parameter. Brugen er meterret mod din kontos sidebalance.

Indsend et dokument

POST /api/v1/ocr/, multipart formular upload.

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"

Returnerer jobbet. For ≤5- siders filer er det allerede done med teksten; større filer kommer tilbage pending/processing, opmåling 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å et resultat

GET /api/v1/ocr/<uuid>/, meningsmåling indtil status er done eller failed.

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

Hent et format

GET /api/v1/ocr/<uuid>/download/?format=md, eksportere resultatet. format er en af 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 et dokument

Stil spørgsmål om et færdigt job. Svarene er kun baseret på den udtrukne tekst og citerer kildesiden. Kræver en konto token, chat funktionen er konto-gated.

POST /api/v1/chat/<uuid>/, JSON krop {"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?"}'

Returnerer assistentbeskeden med sit svar og en liste over citerede sider:

{"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/, Hent hele samtaleudskriften til et job.

Kodeeksempler

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?"}'

Parametre

FeltTypeVarebeskrivelse
filefileKræves. Billedet eller PDF til at behandle.
tierstringcpu (standard, hurtig/trykt) eller vlm (premium AI: håndskrift, layout, matematik).
languagestringauto (standard) eller en sprogkode (en, ch, ja, ar,...).
toolstringValgfri værktøjsslug (f.eks. summarize-pdf, ask-pdf) at forberede chat til denne opgave.

Fejl og begrænsninger

KodeBetydning
400Ingen fil, ikke-understøttet type eller fil for stor.
401Manglende eller ugyldig API token.
402Ud af sider, dagligt / månedlig gratis grænse nået, eller ingen kreditter. Kroppen omfatter used/cap.
404Job UUID ikke fundet.
409Download anmodet før jobbet færdig.

Hver side forarbejdede omkostninger kreditter (1/side på det hurtige niveau, mere om præmie). Betalt planer hæve per-fil side caps og tilføje prioritet. Se Prissætning.

Ofte stillede spørgsmål

Opret en gratis konto og åbn din kontoside, din token vises der med en kopi knap.

Ja, filer på 5 sider eller færre returnerer det fulde resultat inline i POST svar, så der ikke er behov for meningsmåling for de fleste billeder og korte PDF-filer.

Over 100, herunder latin, CJK, arabisk, kyrillisk og indisk scripts. language=auto at opdage eller sende en bestemt kode.

Uploads behandles kun for at besvare dine spørgsmål og slettes automatisk. Vi sælger aldrig, deler eller træner på dine dokumenter.

Brugen er meteret per side mod din kontosaldo: anonyme opkald får en per-IP daglig godtgørelse, gratis konti en månedlig spand, og betalte planer bruge købte kreditter med højere per-fil side caps og prioritet. Når du løber ud får du en 402 med brugt og hætte i kroppen.

Du kan sende PNG, JPG, WEBP, GIF, BMP, TIFF og multi-side PDF. Resultater downloade som txt, md, docx, pdf (søgbar), csv, eller json via download endpoint format parameter.

400 er en manglende fil, ikke- understøttet type eller fil for stor; 401 en manglende eller ugyldig token; 402 ud af siderne; 404 et ukendt job UUID; og 409 en download anmodet før jobbet færdig. Fejlorganer omfatter en kort besked.

Et jobobjekt med status, niveau, sprog, side_count og Mean_confidence plus den fulde tekst og markdown. Siderne array bryder hver side i blokke med deres tekst, grænsende boks (bbox), og per-blok tillid.

Brug cpu (standard) til hurtig, billig anerkendelse af rene trykte dokumenter. Brug vlm, premium AI motor, til håndskrift, komplekse eller multi-kolonne layouts, matematik og oversættelse, hvor det er langt mere præcis.

Pass værktøj med en slug (for eksempel resumé-pdf eller sque-pdf) til at præ-frame chat for denne opgave, så assistenten er indstillet til at opsummere eller besvare spørgsmål om dokumentet.

Filer på 5 sider eller færre returinline i POST svar. Større filer kommer tilbage straks som verserende eller behandling, og du meningsmåling GET /api/v1/ocr /<uuid>/ indtil status er gjort eller mislykkedes. Betalte planer hæver per-fil side cap.

API er almindelig REST over HTTPS, så det virker fra ethvert sprog med en HTTP-klient, se Python, Node.js, og cURL eksempler ovenfor. Der er ingen SDK at installere; et par linjer af standard HTTP-kode er alt hvad du behøver.