On this pageFocused endpoints
Focused endpoints
Aly Sawft · Founder & Engineer, Sawftware LLC ·
What are focused extract endpoints?
Lean modes via POST /v1/extract with ?bundle=false: summarize ($0.018), Q&A ($0.022), claim-check ($0.025), structured ($0.025), and translate ($0.040) — without full bundle storage unless store=true.
Focused endpoints
from $0.018Five lean AI analysis routes that return results directly — no evidence bundle stored, no artifact upload. Each endpoint supports both synchronous (200) and asynchronous (202 + job_id) modes via the ?async=true query parameter.
Use focused endpoints when: you need AI analysis without storing a verifiable bundle (summaries, Q&A, translations, claim checking, visual descriptions).
Async mode: add ?async=true to any route — returns 202 immediately with a job_id. Poll GET /v1/jobs/:id until status: "complete". The full result is embedded in the job response — no separate bundle fetch needed.
Need a stored bundle? Use POST /v1/extract with a mode parameter — same AI output plus a verifiable bundle. Stored extracts default to async (202); add ?sync=true for an inline bundle_id.
API key billing: focused routes deduct credits per call (Summarize/Q&A/Check claims: 3, Translate: 5, Describe: 2). See Authentication for the full credit table.
POST /v1/summarize$0.018Lean summary + key points. No bundle stored. Add ?async=true to queue.
POST /v1/qa$0.022Cited answer to a question about a URL or document. Add ?async=true to queue.
POST /v1/translate$0.040Full-page translation to target language. Add ?async=true to queue.
POST /v1/check-claims$0.025Verdict + evidence for each claim. Add ?async=true to queue.
POST /v1/describe$0.018Visual description, visible text, detected objects. Add ?async=true to queue.
Async result fields
When you poll GET /v1/jobs/:id after an async dispatch, result.* contains the same fields as the sync response:
| Endpoint | result.* fields |
|---|---|
| /v1/summarize | summary, key_points, word_count, url, truncated |
| /v1/qa | answer, confidence, answer_cited, url |
| /v1/translate | translated_text, model_used, target_lang, url |
| /v1/check-claims | claim_results, url |
| /v1/describe | description, text_visible, objects, url |
# Summarize — sync (200, result inline)
curl -X POST https://api.docimprint.com/v1/summarize \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"source": "https://cdn.example.com/annual-report.pdf"}'
# Summarize — async (202, result via job poll)
curl -X POST "https://api.docimprint.com/v1/summarize?async=true" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"source": "https://cdn.example.com/annual-report.pdf"}'
# Poll for async result
curl https://api.docimprint.com/v1/jobs/job_abc123 \
-H "Authorization: Bearer $API_KEY"
# Q&A
curl -X POST https://api.docimprint.com/v1/qa \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"source": "https://example.com/report", "question": "What is the revenue forecast?"}'
# Translate to Spanish
curl -X POST https://api.docimprint.com/v1/translate \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"source": "https://example.com/terms", "target_lang": "es"}'
# Check claims
curl -X POST https://api.docimprint.com/v1/check-claims \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"source": "https://example.com/10-K.pdf", "claims": ["Revenue exceeded $1B in FY2024", "No material liabilities"]}'
# Describe (visual + structural)
curl -X POST https://api.docimprint.com/v1/describe \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"source": "https://example.com"}'// POST /v1/summarize → 200
{
"summary": "Revenue grew 18% YoY to $2.4B driven by enterprise expansion...",
"key_points": ["18% YoY revenue growth", "Enterprise segment up 32%"],
"word_count": 4820,
"url": "https://cdn.example.com/annual-report.pdf",
"truncated": false
}
// POST /v1/summarize?async=true → 202
{ "status": "queued", "job_id": "job_abc123", "bundle_id": "ev_xyz" }
// GET /v1/jobs/job_abc123 → 200 (when complete)
{
"status": "complete",
"result": {
"summary": "Revenue grew 18% YoY...",
"key_points": ["18% YoY revenue growth"],
"url": "https://cdn.example.com/annual-report.pdf"
}
}
// POST /v1/qa → 200
{
"answer": "The revenue forecast for FY2025 is $2.8B, up 17% from FY2024.",
"confidence": "high",
"answer_cited": { "value": "...", "citations": [{ "quote": "...", "paragraphs": [12] }] },
"url": "https://example.com/report"
}
// POST /v1/translate → 200
{
"translated_text": "Este informe anual describe...",
"model_used": "llama-3.3-70b",
"target_lang": "es",
"url": "https://example.com/terms"
}
// POST /v1/check-claims → 200
{
"claim_results": [
{ "claim": "Revenue exceeded $1B in FY2024", "status": "supported", "evidence": "Total revenue for FY2024 was $1.4B [P8]", "confidence": "high" }
],
"url": "https://example.com/10-K.pdf"
}
// POST /v1/describe → 200
{
"description": "A product landing page with a hero section, feature grid, and pricing table.",
"text_visible": "Get started for free — No credit card required...",
"objects": ["hero-image", "navigation", "pricing-table", "cta-button"],
"url": "https://example.com"
}Polling, webhooks, and batch jobs: Async jobs → · All modes with evidence bundles: Extract guide →