API reference.
All endpoints are HTTPS. Base URL: https://api.ashdocs.io. Rate limited per API key.
Getting started
Grab an API key from the dashboard. test keys never charge credits — use them in CI. live keys deduct from your plan.
# Every request needs your API key curl https://api.ashdocs.io/api/v1/me -H "X-API-Key: ash_live_xxxxxxxx"
Conversion tools
/api/v1/convert/html-to-pdf1 credits{ "html": "<h1>Hi</h1>", "options": { "format": "A4" } }/api/v1/convert/url-to-pdf2 credits{ "url": "https://example.com", "options": { "wait_for": "networkidle" } }/api/v1/convert/pdf-to-markdown2 creditsmultipart file(s) + include_page_markers=false
Structured extraction
/api/v1/extract/tables2 creditsmultipart file + output_format=csv|xlsx|json + pages=all|1-3 + merge_tables=false
/api/v1/extract/data3 credits{ "file_url": "…", "schema": { "invoice_number": {"type":"string"}, "total_amount": {"type":"number"} }, "confidence_threshold": 0.85 }/api/v1/extract/bank-statement3 creditsmultipart file + output_format=csv|xlsx|qbo|ofx + categorize=false
/api/v1/extract/{job_id}/provenanceBatch
/api/v1/batchper filemultipart tool_key=… + files=@a.pdf + files=@b.pdf + options={}/api/v1/batch/{batch_id}Security & compliance
/api/tools/redact-pdf/run2 creditsmultipart file + options={"types":["email","ssn","credit_card","phone"]}Zero-retention. Set options.retention="zero" per request, or toggle account-wide from /account/retention. Confidence still returned inline; nothing persisted.
Review queue
/api/review?only_pending=true/api/review/{result_id}/api/review/{result_id}{ "extracted_json": { … }, "approve": true }Pipelines & schedules
/api/pipeline-templates/api/pipeline-templates/instantiate{ "template_id": "invoice-to-qb" }/api/pipelines/{id}/schedule{ "cron": "0 3 * * *", "enabled": true, "tz": "UTC" }Webhooks & destinations
/api/webhooks{ "url": "https://your.app/hook", "events": ["job.completed","review.approved"] }/api/destinations{ "kind": "slack", "webhook_url": "https://hooks.slack.com/…", "events": ["job.completed"] }job.completedjob.failedjob.queuedpipeline.completedpipeline.failedreview.approvedAnalytics, status, health
/api/analytics/usage?days=30/api/jobs/{job_id}/logs/api/status/api/healthZapier connector
Wire ASHDOCS into any of 5,000+ Zapier apps without writing code. The connector uses REST hooks — Zapier subscribes; we deliver events instantly.
/api/zapier/manifest/api/zapier/subscribe{ "target_url": "https://hooks.zapier.com/…", "event": "review.approved" }/api/zapier/subscribe/{id}/api/zapier/samples/{event}/api/zapier/recent/{event}?limit=3Recipe: Extraction Approved → Google Sheets row. Filter tool_key = pdf-to-data, map extracted_json.* to columns.
Google Drive destination
OAuth-based. Connect once, then add as many gdrive destinations as folders you need.
/api/oauth/drive/status/api/oauth/drive/connect/api/oauth/drive/callback/api/oauth/driveErrors
All errors return JSON with detail.code and detail.message.
unauthorized401insufficient_credits402rate_limited429ssrf_blocked400virus_detected400low_confidence422schema_required400template_not_found404bad_cron400too_many_files400