PDF.chat API
Încărcaţi un PDF şi chat cu el de la propria aplicaţie. Puneţi întrebări şi primiţi răspunsuri citate la pagina, în 100 de limbi. Metrodat pe pagina, fără surprize.
Aviz general
PDF.chat API este o interfață REST mică. POST un document pentru a ingera și a obține înapoi o slujbă cu textul documentului și o defalcare pe pagina (text, cutii de limită, încredere). Apoi tu POST Întrebări împotriva acestui loc de muncă și obține răspunsuri bazate pe document, fiecare citand pagina de la care a venit. Joburi de 5 pagini sau mai puține returnare inline; locuri de muncă mai mari se returează imediat cu un pending statusul pe care îl sondezi până done.
- URL de bază:
https://pdf.chat - Documente în: PDF, plus Word, PowerPoint, text și imagini (PNG, JPG, WEBP, GIF, BMP, TIFF)
- Chat afară: răspunsuri cu citații de pagină; tranșe prin endpointul istoric
- Textul procesat:
txt,md,docx,pdf,csv,json - Motoare de citire:
cpu(docuri rapide, tipărite) șivlm(Premium AI, scris, layout complex, matematică)
Autentificare
Autentificaţi-vă cu Token API (găseşte-l pe tine pagina conturilor) ca un header Bearer:
Authorization: Bearer YOUR_API_TOKEN
Puteți trece și ?api_token=… ca parametr de cerere. Utilizarea este măsurată în raport cu soldul de pagină al contului.
Trimite un document
POST /api/v1/ocr/, formular multipart încărcare.
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"
Returnează treaba. Pentru fișierele ≤5-page este deja done cu textul; fișiere mai mari se întorc pending/processing, sondajul de stare a punctului final.
{
"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 } ] } ]
}
Obţine un rezultat
GET /api/v1/ocr/<uuid>/, sondaj până la status este done sau failed.
curl https://pdf.chat/api/v1/ocr/9f2c1b7e4a.../ \
-H "Authorization: Bearer YOUR_API_TOKEN"
Descărcați un format
GET /api/v1/ocr/<uuid>/download/?format=md, exportul rezultatului. format este una din 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 cu un document
Pune întrebări despre o slujbă terminată. Răspunsurile sunt bazate doar în textul extras și citează pagina sursă. Necesită un semn de cont, caracteristica chat este încadrată în cont.
POST /api/v1/chat/<uuid>/, Corpul JSON {"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?"}'
Returnează mesajul asistent cu răspunsul său și o listă a paginilor citate:
{"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/, Ia transcrierea completă a conversaţiei pentru o slujbă.
Exemple de cod
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
| Câmpul | Tip | Descriere |
|---|---|---|
file | file | E necesar. Imaginile sau PDF de procesat. |
tier | string | cpu (defect, rapid/imprimat) sau vlm (Premium AI: scrisul, layout, matematică). |
language | string | auto (indictul) sau un cod limbi (en, ch, ja, ar,...). |
tool | string | Unelte opționale (de exemplu summarize-pdf, ask-pdf) să pre-framele chat pentru această sarcină. |
Eroare & limite
| Codul | Înseamnă |
|---|---|
400 | Niciun fișier, tip nesuportat sau un fișier prea mare. |
401 | Token API lipsă sau nu. |
402 | Din pagini, limita gratuită zilnică/mensual atins sau nu credite. Corpul include used/cap. |
404 | Job UUID nu a fost găsit. |
409 | Descărcare solicitată înainte de a termina treaba. |
Fiecare pagină a prelucrat creditele costurilor (1/pagina pe gradul rapid, mai mult pe premium). Planurile plătite ridică capacurile de pagină per fișier și adaugă prioritate. Prețurile.
Întrebări frecvente
language=auto pentru a detecta sau a trece un cod specific.