PDF tools for humansREST on the same host at /v1
PDFTrusted API
One host for docs and REST. Upload to R2, process with the same engines as pdftrusted.com, then poll or receive a signed webhook — without putting secrets in the browser.
POST https://api.pdftrusted.com/v1/files/upload-url
Authorization: Bearer pt_live_…
→ { file_id, upload_url }
PUT upload_url (PDF bytes → R2)
POST /v1/ocr { file_id, page_count, webhook_url? }
GET /v1/jobs/{id}Four steps — same pattern for compress, merge, OCR, and AI. See the API reference for parameters.
POST /v1/files/upload-url → file_id + presigned R2 PUT
Upload the PDF directly to R2 (no key in the PUT body)
POST /v1/ocr or /v1/pdf/{op} with Bearer pt_live_…
GET /v1/jobs/{id} or webhook_url with HMAC signature
Live MVP endpoints. Image and e-sign REST are out of scope — PDF, OCR, and AI only.
Create a key in the developer console (Pro), then run the sample.
import PDFTrusted from "@pdftrusted/sdk";
const pdf = new PDFTrusted({ apiKey: process.env.PDFTRUSTED_API_KEY });
const up = await pdf.createUploadUrl({
filename: "doc.pdf",
size: bytes.length,
});
await pdf.putFile(up.upload_url, bytes, "application/pdf");
const job = await pdf.ocr({ fileId: up.file_id, pageCount: 12 });
const done = await pdf.waitForJob(job.job_id);
console.log(done.status, done.result);