PDF.chat API

אַרײַנשטעלן אַ PDF און chat מיט עס פֿון אייער אייגענע אַפּליקאַציע — פרעגן פֿראַגעס און באַקומען ענטפֿערס ציטירט צו דער בלעטערער, אין 100+ שפּראַכן. מעטערד פּער בלעטערער, קיין יבערראַשן.

איבער־פֿאַרבײַטונג

די PDF.chat API איז אַ קליין REST צובינד. ערשטער װעלסטו POST אַ דאָקומענט צו פֿאַרװײַלן און צוריקצושטעלן אַ אַרבעט מיט דעם דאָקומענט־טעקסט און אַ בלעטער־צונויפֿגײט (טעקסט, װײַטער־קעסטל, אױספֿיר). דעמאָלט װעלסטו POST פֿראַגעס קעגן דעם אַרבעט און באַקומען ענטפֿערס געגרינדעט אין דעם דאָקומענט, יעדער ציטירט די בלעטער פֿון וואָס עס קומט. אַרבעטן פֿון 5 בלעטער אָדער ווייניקער װײַזן זיך אױס אין שורה; גרעסערע אַרבעטן װײַזן זיך אױס אַװעק מיט אַ pending סטאַטוס װאָס דו װילסט װײַזן ביז done.

  • באַזע URL: https://pdf.chat
  • דאָקומענטן אין: PDF, און אויך וואָרט, פּאָװענטש, טעקסט און בילדער (PNG, JPG, WEBP, GIF, BMP, TIFF)
  • Chat out: ענטפֿערן מיט בלעטערער ציטירן; איבערשרײַבן װײַזט צו דער געשיכטע סוף־פּונקט
  • טעקסט פֿאַרב txt, md, docx, pdf, csv, json
  • לײענונג־מאַשינען: cpu (פֿרײַטע, אױסגעדרוקטע דאָקומענטן) און vlm (פֿירערלעכע קײן, האַנט־שרײַב, קאָמפּליצירטע שריפֿטצײכן, מאַטאַמאַטישע)

אױטענטיפֿאַקאַציע

אױסגלײַכונג מיט דיין API טאַגאָן (פֿאַרהיטן דעם װײַזער) חשבון) װי אַ קאָפּ־צעטל:

Authorization: Bearer YOUR_API_TOKEN

איר קענט אויך אַרײַנשרײַבן ?api_token=… װי אַ פֿראַגע־פּאַראַמעטער. ניצט איז געװײנטלעך קעגן די בלעטערער־באַשלוס פֿון דיין קונה

אַרײַנשרײַבן אַ דאָקומענט

POST /api/v1/ocr/, אַרײַנשטעלן אַ פֿאָרמאַטירונג

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"

װײַזט צוריק דעם אַרבעט. פֿאַר ≤5־סײַטיק טעקע איז עס שוין דאָ done מיטן טעקסט; גרעסערע טעקע־נאָמען קומען צוריק pending/processing, פֿאַרװײַל די סטאַטוס סוף־פּונקט

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

קלײַב אַלץ אױסselect-action

GET /api/v1/ocr/<uuid>/, פֿראַגע ביז status איז done אָדער failed.

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

אַרײַנשטעלן פֿאָרמאַטירונג

GET /api/v1/ocr/<uuid>/download/?format=md, אַרײַנשרײַב די רעזולטאטן format איז אײן פֿון 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 with a document

פֿראַגע וועגן אַ פֿאַרענדיקטן אַרבעט. ענטפֿערס זײַנען נאָר אױסגעפֿירט אין דעם אױסגעפֿירטן טעקסט און ציטירן דעם מקור־װײַז. דאַרף אַ קאָפּיע־טאָג, דער chat־פֿעיִקײט איז קאָפּיע־געשטראָכן

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

װײַז צוריק דעם װײַזער־נאָוטבוק מיט זײַן ענטפֿער און אַ רשימה פֿון ציטירטע בלעטער:

{"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/, אַרײַנשטעלן די װײַטער־װײַז

קאָדירונג

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

פּאַראַמעטערס

פֿעלדערטיפּ:באַשרײַבונג
filefileנייטיק בילד אָדער PDF צו באַהאַנדלען
tierstringcpu (געװײנטלעכער, שנעל/דרוקט) אָדער vlm (פֿאַרװײַז קײן װײַז)
languagestringauto (געװײנטלעכער) אָדער אַ שפּראַך־קאָד (en, ch, ja, ar,...)
toolstringטעקסט פֿאַרב summarize-pdf, ask-pdf) צו װײַזן די chat פֿאַר דעם אַרבעט

דורכפֿאַלן און װײַטער־פֿאַרבינדונגען

קאָדבאַטרעף
400ניט קײן טעקע, ניט געשטיצט טיפּ, אָדער טעקע צו גרײס
401ניטאָ אַ װײַטער־פֿאַרבײַטונג
402ניט גענוג בלעטער, טאָג־/מײַנלעך פרייהײט־לימיט דערגרייכט, אָדער קײן קרעדיטן. דער גוף אַרײַנשרײַבט used/cap.
404אַרבעט UUID ניט געפֿונען
409אַרײַנשטעלן %s

יעדער זײַט װאָס איז באַהאַנדלט װײסט אַ צאָל קרעדיטס (1/װײַט אין דער שנעלער מדרגה, מער אין דער פּרעמיע). באַצאָלטע פּלאָנים װײַזן אַ טעקע־װײַט און װײַזן אַ פּריאָריטעט. זע װײַז.

פֿראַגעס

שאַפֿן אַ פריין חשבון און עפֿענען דיין חשבון, װידערװײַזט זיך דאָרט אַ קאָפּיר־קנעפּל

יָא, טעקע־פֿאָרעם פֿון 5 בלעטער אָדער קלענער װעט צוריקגעבן די װײַטע רעזולטאַט אין דער POST־ענטפֿער, אַזוי ניט קיין אױפֿפֿיר איז נייטיק פֿאַר די אײגסטע בילדער און קורצע PDF־פֿאָרעם

איבער 100, אַרײַנגערעכנט לאַטיניש, CJK, אראבער, קיריליק און אינדיע שריפֿטן. ניצן language=auto צו דערקענען אָדער איבערצוגעבן אַ באַזונדערע קאָד

אַרײַנשטעלן איז נאָר צוליב דער ענטפֿער פֿון אייער פֿראַגע און איז אויטאָמאַטיש אויסגעלײגט. מיר װעלן קײן מאָל ניט פֿאַרקויפן, טיילן אָדער לערנען אױף אייער דאָקומענטן

ניצן איז געװײנטלעך אױף אײן בלעטער קעגן אייער קונה־באַשלוס: אַנאָנימישע װײַזונגען װײַזן אַ טאָג־פֿאַרבינדונג, פרייע װײַזונגען אַ מײַנלעך װײַזונג, און באַצאָלטע װײַזונגען װײַזן קײן קײן קרעדיט מיט העכערע טעקע־װײַזונג־קאָפּעס און פּריאָריטעטן. װען איר זענט אױסגעגאַנגען, װעט איר באַקומען אַ 402 מיט אַ פֿאַרבינדונג און קאָפּעס אין דער האַרץ

װײַז פֿאָרמאַטירונג

400 איז אַ פֿאַלקע טעקע, ניט־געשטיצטע שריפֿט־צוגײד, אָדער טעקע צו גרײס; 401 אַ פֿאַלקע אָדער אומלעקסיקע װײַז; 402 ניטאָ בלעטער; 404 אַ אומבאַקאַנטע אַרבעט UUID; און 409 אַ אַרײַנשטעלן אָנגעפֿירט איידער דער אַרבעט איז ענדיקט װידער אַ קורצער אָנזאָג

אַ אַרבעט־אויגענטוק מיט סטאַטוס, מדרגה, שפּראַך, בלעטער־רעכט און דורכשניטלעך־צוטרוי, און דער װײַטער דער װײַטער־טעקסט און דער מאַקאָדאָנ. די בלעטער־אַרײַנשרײַב װײנט אײנע פֿון די בלעטער אין בלאָקען מיטן טעקסט, װײַז־קעסטל (bbox) און אײן בלאָק־צוטרוי

טעקסט פֿאַרבprocess-action

Pass tool with a slug (for example summarize-pdf or ask-pdf) to pre-frame the chat for that task, so the assistant is tuned to summarize or answer questions about the document.

טעקע־נאָמען פֿון 5 בלעטער אָדער קלענער װײַזן זיך אין דער POST־ענטפֿער. גרעסערע טעקע־נאָמען װײַזן זיך אַהין און צוריק װי פֿאַרװאַנדלט אָדער פֿאַרעפֿנטלעכט, און איר װעט פֿאַרשטאַנען GET /api/v1/ocr/<uuid>/ ביז דער סטאַטוס איז געענדיקט אָדער דורכגעפֿאַלן. באַצאָלטע פּלאָמבירן העכערן דעם טעקע־סײַט־קאָפּ

דער API איז אַ פּשוטער REST איבער HTTPS, אַזוי עס אַרבעט פֿון קיין שפּראַך מיט אַ HTTP קליענט, זע די Python, Node.js, און cURL אַרײַנפֿירער אויבן. עס איז קיין SDK צו אינסטאַלירן; אַ פּאָר שורות פֿון סטנדרט HTTP קאָד איז אַלץ וואָס איר דאַרפֿן