Extract Quote Info
Extract structured quote fields from a case body and attachments.
Authorization
bearerAuth OAuth2 client credentials flow. Token obtained from /oauth2/token on the auth host.
In: header
Header Parameters
Caller-supplied correlation ID. Propagated end-to-end and returned in responses and audit logs.
Optional. If reused within 24 hours with the same payload, the cached response is returned. Reuse with a different payload yields 409.
Set to 'respond-async' to receive a 202 Accepted with a job ID instead of a synchronous result.
"respond-async"Optional webhook for async results. If provided, Faction calls back to this URL when the job completes. Retried up to 5 times with exponential backoff.
uriRequest Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://api.eu.faction.ai/v1/extract/quote" \ -H "X-Correlation-Id: 8f3c-b21" \ -H "Idempotency-Key: case-CRM-2026-04-29-00417-intent-v1" \ -H "Content-Type: application/json" \ -d '{ "case_id": "string", "body": "string" }'{
"case_id": "CRM-2026-04-29-00417",
"line_items": [
{
"description": "SKF 6205-2RS bearing",
"quantity": 50,
"unit": "each",
"confidence_score": 0.96,
"source": {
"document": "email_body",
"line_text": "50 x SKF 6205-2RS bearings"
}
},
{
"description": "Gates B-section drive belt B72",
"quantity": 20,
"unit": "each",
"confidence_score": 0.93,
"source": {
"document": "email_body",
"line_text": "20 x Gates B-section drive belts (B72)"
}
}
],
"delivery_requirements": {
"ship_to_hint": "Birmingham depot",
"requested_by": "2026-05-01",
"urgency": "high",
"confidence_score": 0.88
},
"special_conditions": [],
"attachments_processed": []
}{
"job_id": "job_01JZP4XYZ123",
"status_url": "/v1/jobs/job_01JZP4XYZ123",
"status": "queued"
}{
"error_code": "MISSING_REQUIRED_FIELD",
"message": "Field 'case_id' is required.",
"correlation_id": "8f3c-b21",
"request_id": "req_01JZP4..."
}{
"error_code": "EXPIRED_TOKEN",
"message": "Bearer token expired at 2026-04-29T13:00:00Z.",
"correlation_id": "8f3c-b21",
"request_id": "req_01JZP4..."
}{
"error_code": "SCOPE_INSUFFICIENT",
"message": "Token lacks scope 'extract.quote'.",
"correlation_id": "8f3c-b21",
"request_id": "req_01JZP4..."
}{
"error_code": "IDEMPOTENCY_KEY_CONFLICT",
"message": "Idempotency key was previously used with a different request payload.",
"correlation_id": "8f3c-b22",
"request_id": "req_01JZP4..."
}{
"error_code": "EXTRACTION_PARTIAL_FAILURE",
"message": "2 of 3 attachments processed; 1 was password-protected and skipped.",
"correlation_id": "8f3c-b21",
"request_id": "req_01JZP4...",
"details": {
"skipped_attachments": [
{
"filename": "rfq_v2.pdf",
"reason": "password_protected"
}
]
}
}{
"error_code": "RATE_LIMITED",
"message": "Per-tenant per-module rate limit exceeded.",
"correlation_id": "8f3c-b21",
"request_id": "req_01JZP4..."
}{
"error_code": "INTERNAL_ERROR",
"message": "An unexpected error occurred.",
"correlation_id": "8f3c-b21",
"request_id": "req_01JZP4..."
}Notes
- Schema-aware. The extractor only returns fields defined in the tenant's
quote_schema. - Multi-modal: handles email body, PDFs, spreadsheets, scanned documents (OCR), and images.
- Per-field confidence scores and source pointers (document, page, bounding box, line text).
- Partial-success responses (HTTP 422) return the result alongside the failure reason in
details. - Default p50 latency targets: under 1.5 s (body only), under 4 s (PDF, < 5 pages), under 12 s (multi-page scan).
- Payloads over 10 MB or scans should use the async pattern with
Prefer: respond-asyncand optionally aFaction-Callback-Url.