PDF.chat API

Laden Sie ein PDF und chat mit ihm von Ihrer eigenen App - Fragen stellen und erhalten Antworten auf die Seite zitiert, in 100+ Sprachen. Meteriert pro Seite, keine Überraschungen.

Überblick

Die PDF.chat API ist eine kleine REST-Schnittstelle. POST ein Dokument, um es aufzunehmen und einen Job mit dem Text des Dokuments und einer pro Seite Aufschlüsselung (Text, Begrenzungsfelder, Vertrauen) zurück zu bekommen. POST Fragen gegen diesen Job und erhalten Antworten in das Dokument geerdet, jede unter Berufung auf die Seite, die es kam. Jobs von 5 Seiten oder weniger Rückkehr inline; größere Arbeitsplätze Rückkehr sofort mit einem pending Status, den Sie bis zum done.

  • Grund-URL: https://pdf.chat
  • Dokumente in: PDF, plus Word, PowerPoint, Text und Bilder (PNG, JPG, WEBP, GIF, BMP, TIFF)
  • Chat aus: Antworten mit Seitenzitaten; Transkripte über den Verlaufsendpunkt
  • Verarbeiteter Text: txt, md, docx, pdf, csv, json
  • Lesemaschinen: cpu (schnelle, gedruckte Dokumente) und vlm (Premium AI, Handschrift, komplexes Layout, Mathematik)

Authentifizierung

Authentifizierung mit Ihrem API-Token (finden Sie es auf Ihrem Kontoseite) als Trägerkopf:

Authorization: Bearer YOUR_API_TOKEN

Sie können auch passieren ?api_token=… als Abfrageparameter. Die Verwendung wird auf den Seitenstand Ihres Kontos gemessen.

Ein Dokument übermitteln

POST /api/v1/ocr/, Mehrteil-Formular hochladen.

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"

Gibt den Auftrag zurück. Für ≤5-Seiten-Dateien ist er bereits done mit dem Text; größere Dateien kommen zurück pending/processing, Umfrage zum Statusendpunkt.

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

Ergebnis erzielen

GET /api/v1/ocr/<uuid>/, Umfrage bis status wird done oder failed.

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

Format herunterladen

GET /api/v1/ocr/<uuid>/download/?format=md, Export des Ergebnisses. format ist einer von 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 mit einem Dokument

Stellen Sie Fragen zu einem fertigen Job. Antworten werden nur im extrahierten Text geerdet und zitieren Sie die Quellseite. Erfordert ein Konto Token, das chat Feature ist account-gated.

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

Gibt die Assistentennachricht mit ihrer Antwort und einer Liste der zitierten Seiten zurück:

{"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/, die vollständige Transkript für einen Job zu holen.

Beispiele für den Code

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

Parameter

FeldTypWarenbezeichnung
filefileErforderlich. Das Bild oder PDF zum Verarbeiten.
tierstringcpu (Standard, schnell/gedruckt) oder vlm (Premium AI: Handschrift, Layout, Mathematik).
languagestringauto (Standard) oder einen Sprachcode (en, ch, ja, ar== Einzelnachweise ==
toolstringOptionale Werkzeugschnecke (z. summarize-pdf, ask-pdf) um die chat für diese Aufgabe vorzurahmen.

Fehler & Grenzen

ANHANGBedeutung
400Keine Datei, nicht unterstützte Art oder Datei zu groß.
401Fehlendes oder ungültiges API-Token.
402Von den Seiten, täglich / monatlich freies Limit erreicht, oder keine Credits. used/cap.
404Job UUID nicht gefunden.
409Download angefordert, bevor der Job beendet.

Jede Seite verarbeitete Kosten Gutschriften (1/Seite auf der schnellen Ebene, mehr auf Prämie). Bezahlte Pläne erhöhen pro Datei Seite Kappen und hinzufügen Priorität. Siehe Preisgestaltung.

Häufig gestellte Fragen

Erstellen Sie ein kostenloses Konto und öffnen Sie Ihre Kontoseite, wird Ihr Token dort mit einem Kopier-Button angezeigt.

Ja, Dateien von 5 Seiten oder weniger geben das volle Ergebnis inline in der POST-Antwort, so dass keine Umfragen für die meisten Bilder und kurze PDFs benötigt wird.

Über 100, einschließlich lateinischer, CJK, arabischer, kyrillischer und indischer Skripte. language=auto um einen bestimmten Code zu erkennen oder zu übergeben.

Uploads werden nur verarbeitet, um Ihre Fragen zu beantworten und automatisch gelöscht. Wir verkaufen, teilen oder trainieren niemals auf Ihren Dokumenten.

Die Nutzung wird pro Seite auf Ihr Kontostand gemessen: anonyme Anrufe erhalten eine tägliche pro-IP-Zulage, kostenlose Konten einen monatlichen Eimer, und bezahlte Pläne verwenden erworbene Credits mit höheren pro-Datei Seitenkappen und Priorität. Wenn Sie auslaufen, erhalten Sie eine 402 mit verwendet und Kappe im Körper.

Sie können PNG, JPG, WEBP, GIF, BMP, TIFF und mehrseitiges PDF senden. Ergebnisse werden als txt, md, docx, pdf (suchbar), csv oder json über den Formatparameter des Downloadendpunktes heruntergeladen.

400 ist eine fehlende Datei, nicht unterstützte Art, oder Datei zu groß; 401 ein fehlendes oder ungültiges Token; 402 von Seiten; 404 ein unbekannter Job UUID; und 409 ein Download, der vor dem Job angefordert wurde. Fehlerstellen enthalten eine kurze Nachricht.

Ein Auftragsobjekt mit Status, Ebene, Sprache, page_count und mean_confidency sowie Volltext und Markdown. Das Seiten-Array bricht jede Seite mit ihrem Text, dem Limiting-Box (bbox) und dem Problock-Konfidency-Konfidency in Blöcke.

Verwenden Sie cpu (die Standardeinstellung) für die schnelle, kostengünstige Erkennung sauberer gedruckter Dokumente. Verwenden Sie vlm, die Premium-KI-Engine, für Handschrift, komplexe oder multi-Spalten-Layouts, Mathematik und Übersetzung, wo es viel genauer ist.

Passieren Sie das Werkzeug mit einer Schnecke (zum Beispiel summum-pdf oder ask-pdf), um die chat für diese Aufgabe vorzurahmen, so dass der Assistent auf eine Zusammenfassung oder Beantwortung von Fragen zum Dokument abgestimmt ist.

Dateien von 5 Seiten oder weniger Rückkehr inline in der POST-Antwort. Größere Dateien kommen sofort wieder als anstehend oder Verarbeitung, und Sie Umfrage GET /api/v1/ocr/<uuid>/ bis Status beendet oder fehlgeschlagen ist. Bezahlte Pläne erhöhen die pro Datei Seiten-Cap.

Die API ist einfach REST über HTTPS, so dass es aus jeder Sprache mit einem HTTP-Client funktioniert, siehe oben die Beispiele Python, Node.js und cURL. Es gibt kein SDK zu installieren; ein paar Zeilen Standard-HTTP-Code sind alles, was Sie brauchen.