PDF.chat API

Last opp PDF og chat med fra din egen app – spør og få svar sitert på siden på 100+ språk. Målt per side, ingen overraskelser.

Oversikt

PDF.chat API er et lite REST- grensesnitt. Først du POST et dokument som tar det inn og henter tilbake en jobb med dokumentets tekst og en tekst - og sideoppdeling (tekst, avgrensingsbokser, tillit). Da kan du POST spørsmål mot den jobben og få svar innskrevet i dokumentet, hver sitering på siden det kom fra. Jobber på 5 sider eller mindre retur i teksten, større jobber returnerer umiddelbart med en pending status som du sjekker til done.

  • Basisadresse: https://pdf.chat
  • Dokumenter i: PDF, pluss Word, PowerPoint, tekst og bilder (PNG, JPG, WEBP, GIF, BMP, TIFF)
  • Chat ut: svar med sidereferanser, utskrifter via sluttpunktet for historien
  • Behandlet tekst ut: txt, md, docx, pdf, csv, json
  • Lesemotorer: cpu (rask, trykte doks) og vlm (premie AI, håndskrift, kompleks utforming, matematikk)

Autentisering

Autentiser med din API- symbol (finn det på din kontoside) som en Bearer-topptekst:

Authorization: Bearer YOUR_API_TOKEN

Du kan også passere ?api_token=… som en spørringsparameter. Bruken måles mot kontoens sidebalanse.

Send inn et dokument

POST /api/v1/ocr/, opplasting på flerpartsskjema.

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 jobben. For ≤5- side filer er det allerede done med teksten; større filer kommer tilbake pending/processing, belyse statusen.

{
  "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>/, bespørring fram til status er done eller failed.

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

Last ned et format

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

Spør om en ferdig jobb. Svarene er bare utestengt i den utpakkede teksten og siter kildesiden. Krever et kontosymbol, chat- funksjonen er kontokonvertert.

POST /api/v1/chat/<uuid>/, JSON- legeme {"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 assistentmeldingen med svar og en liste over siterte 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/, hente hele samtaleutskrifta for en jobb.

Kodeeksempel

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

FeltTypeBeskrivelse
filefileKreves. Bildet eller PDF- en som skal behandles.
tierstringcpu (standard, hurtig/trykt) eller vlm (premie AI: håndskrift, utforming, matematikk).
languagestringauto (standard) eller en språkkode (en, ch, ja, ar,...).
toolstringValgfri trege (f.eks. summarize-pdf, ask-pdf) to pre-frame the chat for that task.

Feil & grenser

KodeBetydning
400Ingen fil, ikke støttet type eller fil for stor.
401Mangler eller er ugyldig API- symbol.
402Utenfor sider, gratis grense nådd daglig/månedlig, eller ingen godskriving. Kroppen omfatter used/cap.
404Fant ikke jobb UUID.
409Nedlasting etterspurt før jobben ble ferdig.

Hver side behandlet koster kreditter (1/ side på hurtignivå, mer på premien). Betalte planer øker sidetak for hver fil og legger til prioritet. Se prissetting.

Ofte stilte spørsmål

Opprett en ledig konto og åpne din kontoside, er symbolet ditt vist der med en kopiknapp.

Ja, 5 siders eller mindre filer gir hele resultatet i svaret POST, så det trengs ingen meningsmåling for de fleste bilder og korte PDF-er.

Over 100, herunder latinske, CJK-, arabiske, kyrilliske og indiske skripter. Bruk language=auto å påvise, eller bestå, en særskilt kode.

Opplastinger behandles bare for å besvare dine spørsmål og slettes automatisk. Vi selger, deler eller trener aldri på dokumentene dine.

Bruken måles på hver side mot kontosaldoen din: anonyme anrop får en daglig godtgjøring for hver IP, gratis kontoer en månedlig bøtte, og betalte planer bruker kjøpte kreditter med høyere sidehøyder for hver fil og prioritet. Når du går ut av det får du 402 med bruk og cap i kroppen.

Du kan sende PNG, JPG, WEBP, GIF, BMP, TIFF og flersidig PDF. Resultater lastet ned som txt, OD, docx, pdf (søkbar), csv eller json via formatparameteren for nedlastingen.

400 er en fil som mangler, type eller fil for stor, 401 mangler et ugyldig symbol, 402 ut av sider, 404 en ukjent jobb UUID, og 409 en nedlasting det er bedt om før jobben er ferdig. Feil- kropper inneholder en kort melding.

Et jobbobjekt med status, nivå, språk, sideantall og middelt_ tillit, pluss full tekst og nedmerking. Sidetabellen bryter hver side inn i blokker med tekst, omskrevet boks (bbox) og tillit for hver blokk.

Bruk cpu (standard) for rask og billig gjenkjenning av rene utskrifter. Bruk vlm, AI- forhøyet, for håndskrift, komplekse eller flerkolonne- utforminger, matematikk og oversettelse, der det er langt mer nøyaktig.

Passer verktøy med en sølle (for eksempel summary- PDF eller bay- PDF) for å forhåndsramme chat for den oppgaven, så assistenten blir stilt inn for å oppsummere eller svare på spørsmål om dokumentet.

Filer på 5 sider eller mindre returnerer inn i svaret POST. Større filer kommer tilbake med en gang som ventende eller behandle, og du sjekker GET / api/ v1/ ocr/<uuid>/ til statusen er ferdig eller mislykket. Betalte planer hever sidehatten for hver fil.

API er vanlig REST over HTTPS, så det virker fra alle språk med en HTTP klient, se eksemplene Python, Node. js og cURL over. Det er ingen SDK å installere. Noen linjer med standard HTTP- kode er alt du trenger.