PDF.chat API

Upload a PDF and chat with it from your own app — ask questions and get answers cited to the page, in 100+ languages. Metered per page, no surprises.

Pregled

PDF.chat API je mali REST interfejs. POST dokument da ga unesete i dobijete posao sa tekstom dokumenta i raščlanom po stranicama (tekst, okviri, pouzdanost). Onda POST Zadaci od 5 stranica ili manje vraćaju se u liniju; veći zadaci vraćaju se odmah sa porukom o pogrešci. pending status koji se anketira dok done.

  • Osnovni URL: https://pdf.chat
  • Dokumenti u: PDF, plus Word, PowerPoint, tekst i slike (PNG, JPG, WEBP, GIF, BMP, TIFF)
  • Chat od: odgovora sa citatima stranica; transkripti preko krajnje tačke historije
  • Obrađeni tekst van: txt, md, docx, pdf, csv, json
  • Čitanje motora: cpu (brzi, štampani dokumenti) i vlm (premium AI, rukopis, kompleksan raspored, matematika)

Autorizacija

Autentificirajte se sa svojim API token (Nađi ga na svom stranica računa) kao nosilac zaglavlja:

Authorization: Bearer YOUR_API_TOKEN

Možete i proći. ?api_token=… kao parametar upita. Korištenje se mjeri protiv bilance stranice vašeg računa.

Pošalji dokument

POST /api/v1/ocr/, višedijelni obrazac za 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"

Vraća zadatak. Za datoteke ≤5-page već je done sa tekstom; vraćaju se veće datoteke pending/processing, upitaj krajnju tačku stanja.

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

Dobiti rezultat

GET /api/v1/ocr/<uuid>/, poll until status je done ili failed.

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

Preuzmi format

GET /api/v1/ocr/<uuid>/download/?format=md, izvozi rezultat. format je jedan od 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 sa dokumentom

Postavljajte pitanja o završenom zadatku. Odgovori se temelje samo na izvučenom tekstu i navode izvornu stranicu. Potrebno je imati račun, značajka chat je ograničena računom.

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

Vraća pomoćnu poruku sa odgovorom i popisom citiranih stranica:

{"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/, Dobiti potpuni transkript razgovora za posao.

Primjeri koda

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

Parametri

PoljeTipOpis
filefileObvezno. Slika ili PDF za obradu.
tierstringcpu (uobičajeno, brzo/štampano) ili vlm (Premium AI: rukopis, raspored, matematika).
languagestringauto (uobičajeno) ili kod jezika (en, ch, ja, ar, …).
toolstringOpcija Tool slug (npr. summarize-pdf, ask-pdf) da pre-frame chat za taj zadatak.

Greške i ograničenja

KodZnačenje
400Nema datoteke, vrsta nije podržana, ili je datoteka prevelika.
401Nedostaje ili je nevažeći API token.
402Nema više stranica, dostignuto je dnevno/mjesečno ograničenje besplatnog sadržaja ili nema kredita. Tijelo sadrži used/cap.
404UUID posla nije pronađen.
409Preuzimanje je zatraženo prije završetka posla.

Svaka obrađena stranica košta kredite (1/stranica na brzom nivou, više na premium). Plaćeni planovi povećavaju ograničenje stranica po datoteci i dodaju prioritet. Vidi cijena.

Često postavljana pitanja

Napravite besplatni račun i otvorite svoj stranica računa, vaš žeton je prikazan tamo sa dugmetom za kopiranje.

Da, datoteke od 5 stranica ili manje vraćaju puni rezultat u POST odgovoru, tako da nije potrebno polling za većinu slika i kratkih PDF-ova.

Preko 100, uključujući latinski, CJK, arapski, ćiriličnindijski pisma. Upotreba language=auto da otkrije ili proslijedi određeni kod.

Uploads are processed only to answer your questions and deleted automatically. We never sell, share, or train on your documents.

Korištenje se mjeri po stranici protiv bilansa vašeg računa: anonimni pozivi dobivaju po IP dnevno dopuštenje, besplatni računi mjesečno dopuštenje, a plaćeni planovi koriste kupljene kredite sa većim ograničenjima i prioritetom po stranici po datoteci. Kada vam ponestane dobijete 402 sa iskorištenim i ograničenim u tijelu.

Možete poslati PNG, JPG, WEBP, GIF, BMP, TIFF i višestranični PDF. Rezultati se preuzimaju kao txt, md, docx, pdf (pretraživani), csv ili json putem formata parametra krajnje tačke preuzimanja.

400 je datoteka koja nedostaje, nepodržana vrsta ili datoteka prevelika; 401 nedostaje ili je nevažeća; 402 nema stranica; 404 nepoznat UUID posla; i 409 preuzimanje je zatraženo prije završetka posla. Tijela grešaka uključuju kratku poruku.

Objekt posla sa statusom, nivoom, jezikom, brojem stranica i srednjom pouzdanošću, plus puni tekst i oznake. Array stranica razbija svaku stranicu u blokove sa njihovim tekstom, okvirom za ograničenje (bbox), i pouzdanošću po bloku.

Koristi CPU (uobičajeno) za brzo, jeftino prepoznavanje čistih štampanih dokumenata. Koristi vlm, premium AI motor, za rukopis, kompleksne ili višekolonaške rasporede, matematiku i prijevod, gdje je mnogo precizniji.

Proslijedi alat sa slugom (na primjer summarize-pdf ili ask-pdf) da pre-frame chat za taj zadatak, tako da je asistent podešen da sažeje ili odgovori na pitanja o dokumentu.

Datoteke od 5 stranica ili manje vraćaju se u POST odgovoru. Veće datoteke se vraćaju odmah kao čekanje ili obrada, a vi pitate GET /api/v1/ocr/<uuid>/ dok status nije završen ili neuspješan. Plaćeni planovi povećavaju ograničenje po datoteci.

API je običan REST preko HTTPS-a, tako da radi iz bilo kojeg jezika sa HTTP klijentom, pogledajte Python, Node.js, i cURL primjere gore. Nema SDK-a za instaliranje; nekoliko linija standardnog HTTP koda je sve što vam treba.