PDF.chat API

Upload een PDF en chat met het uit uw eigen app. Stel vragen en krijg antwoorden geciteerd naar de pagina, in 100+ talen. Metered per pagina, geen verrassingen.

Overzicht

De PDF.chat API is een kleine REST interface. POST een document om het in te nemen en terug te krijgen een baan met de tekst van het document en een per pagina uitsplitsing (tekst, gebonden dozen, vertrouwen). POST vragen tegen die baan en krijg antwoorden gegrond in het document, elk citerend de pagina waar het vandaan kwam. Banen van 5 pagina's of minder terugkeer inline; grotere banen terugkeren onmiddellijk met een pending status die u poll tot done.

  • Basis-URL: https://pdf.chat
  • Documenten in: PDF, plus Word, PowerPoint, tekst, en afbeeldingen (PNG, JPG, WEBP, GIF, BMP, TIFF)
  • Chat uit: antwoorden met pagina citaten; transcripten via het eindpunt van de geschiedenis
  • Bewerkte tekst: txt, md, docx, pdf, csv, json
  • Lezende motoren: cpu (snel, gedrukt) en vlm (premium AI, handschrift, complexe indeling, wiskunde)

Authenticatie

Authenticeer met uw API token (vind het op je accountpagina) als een Bearer header:

Authorization: Bearer YOUR_API_TOKEN

U kunt ook passeren ?api_token=… als een query parameter. Gebruik wordt gemeten met behulp van de paginabalans van uw account.

Een document indienen

POST /api/v1/ocr/, multipart formulier uploaden.

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"

Geeft de taak terug. Voor ≤5-pagina bestanden is het al done met de tekst; grotere bestanden komen terug pending/processing, bekijk het status eindpunt.

{
  "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 } ] } ]
}

Een resultaat krijgen

GET /api/v1/ocr/<uuid>/, peiling tot status is done of failed.

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

Een formaat downloaden

GET /api/v1/ocr/<uuid>/download/?format=md, exporteer het resultaat. format is een van 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 met een document

Stel vragen over een voltooide taak. Antwoorden worden alleen in de uitgepakte tekst geaard en citeer de bronpagina. Vereist een account token, de chat functie is account-gaated.

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

Geeft het assistentbericht terug met zijn antwoord en een lijst van geciteerde pagina's:

{"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/, Haal het volledige gespreksscript voor een baan.

Codevoorbeelden

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

Parameters

VeldTypeOmschrijving
filefileVereist. De afbeelding of PDF die moet worden verwerkt.
tierstringcpu (standaard, snel/bedrukt) of vlm (premium AI: handschrift, layout, wiskunde).
languagestringauto (standaard) of een taalcode (en, ch, ja, ar,...).
toolstringOptionele gereedschapslak (bv. summarize-pdf, ask-pdf) om de chat voor die taak te pre-frame.

Fouten & limieten

RubriekBetekenis
400Geen bestand, niet ondersteund type of bestand te groot.
401Ontbrekende of ongeldige API token.
402Uit pagina's, dagelijks / maandelijks gratis limiet bereikt, of geen credits. used/cap.
404Job UUID niet gevonden.
409Download gevraagd voordat de opdracht is voltooid.

Elke pagina verwerkt kosten kredieten (1 pagina op de snelle tier, meer op premie). Betaalde plannen verhogen per-bestand pagina plafonds en toevoegen prioriteit. Zie prijsstelling.

Veelgestelde vragen

Maak een gratis account aan en open uw accountpagina, uw token wordt daar weergegeven met een kopieerknop.

Ja, bestanden van 5 pagina's of minder geven het volledige resultaat inline in de POST-respons terug, dus geen peiling is nodig voor de meeste afbeeldingen en korte PDF's.

Meer dan 100, waaronder Latijn, CJK, Arabisch, Cyrillisch en Indic scripts. language=auto om een specifieke code te detecteren of door te geven.

Uploads worden alleen verwerkt om uw vragen te beantwoorden en automatisch te verwijderen. Wij verkopen, delen of trainen nooit op uw documenten.

Gebruik wordt per pagina gemeten tegen het saldo van uw rekening: anonieme oproepen krijgen een dagelijkse vergoeding per IP, gratis rekeningen een maandelijkse emmer, en betaalde plannen gebruiken gekochte credits met hogere per-bestand pagina caps en prioriteit. Wanneer u uitloopt krijg je een 402 met gebruikte en cap in het lichaam.

U kunt PNG, JPG, WEBP, GIF, BMP, TIFF en multi-page PDF verzenden. Resultaten downloaden als txt, md, docx, pdf (doorzoekbaar), csv, of json via de download endpoint's format parameter.

400 is een ontbrekend bestand, niet ondersteund type, of bestand te groot; 401 een ontbrekende of ongeldige token; 402 uit pagina's; 404 een onbekende taak UUID; en 409 een download gevraagd voordat de taak voltooid. Foute lichamen bevatten een kort bericht.

Een taakobject met status, niveau, taal, page_count en mean_confidence, plus de volledige tekst en markdown. De pagina's array breekt elke pagina in blokken met hun tekst, gebonden vak (bbox), en per-blok vertrouwen.

Gebruik cpu (de standaard) voor snelle, goedkope herkenning van schone gedrukte documenten. Gebruik vlm, de premium AI-engine, voor handschrift, complexe of multi-kolom lay-outs, wiskunde en vertaling, waar het veel nauwkeuriger is.

Pass tool met een navel (bijvoorbeeld samenvatting-pdf of ask-pdf) om de chat voor die taak te preframe, zodat de assistent is afgestemd om vragen over het document samen te vatten of te beantwoorden.

Bestanden van 5 pagina's of minder retourneren in de POST-respons. Grotere bestanden komen onmiddellijk terug als in behandeling of verwerking, en je poll GET /api/v1/ocr /<uuid>/ totdat status is voltooid of mislukt. Betaalde plannen verhogen de per-bestand pagina cap.

De API is gewoon REST boven HTTPS, dus het werkt vanuit elke taal met een HTTP client, zie de Python, Node.js, en cURL voorbeelden hierboven. Er is geen SDK te installeren; een paar regels van standaard HTTP code zijn alles wat je nodig hebt.