Upload Customer PO Document
POST/api/sales-orders/ocr/upload
Upload a customer PO PDF to start the OCR extraction process. Returns the extraction ID and a tracked-job ID; the actual OCR work runs asynchronously via Azure Document Intelligence. Poll GET /sales-orders/ocr/{id} until status is 'pending_review' (or 'failed' / 'duplicate_detected').
orders:writeGrant this scope to your token under Settings → Developer → Personal Access Tokens.
Response 201 includes:
- extraction_id
- tracked_job_log_id (for the JobProgressTray)
- status: 'processing'
Request
Responses
- 200
- 401
- 403
- 422
- 429
Successful response
Unauthenticated — the bearer token is missing, revoked, expired, or malformed. Never retry automatically; fix the credential. See the Errors guide.
Forbidden — the token lacks a required scope, the endpoint is not available to API tokens, or the user behind the token lacks the permission. A human must adjust the token scopes or user permissions; do not retry.
Validation failed — the body is a field → messages map (Laravel shape) or the platform envelope with a stable machine-readable code. Fix the payload and resubmit.
Rate limited — platform limit is 1,000 requests/min; individual tokens may carry lower limits. Honor the Retry-After header before retrying. See the Rate Limits guide.