Skip to content

Upload one file for a hosted workflow capture session

POST/v1/vision/file-submit

Authenticates with client credentials — no bearer token required.

Forwards the request to identity-kyc's internal file route, which stores the image against the case's field: the proof-of-address capture block (`field_id: proof_of_address`) or a programme-defined upload field (its `f_` id). A thin passthrough — which fields take a file is identity-kyc's business rule, answered with 400 `field_not_uploadable`. No OAuth bearer token: `capture_session_token` in the body is the entire authorization, verified downstream. `image_base64` is standard base64 of at most 11 000 000 characters (about 8 MB decoded); a larger one is refused with 413 `file_too_large` before anything is forwarded. `content_type` is `image/jpeg`, `image/png` or `image/webp` (otherwise 400 `unsupported_file_type`). Served by the vision host — the hosted capture widget's own surface, not the primary API host (see this operation's `servers` entry), same as documentScan/detailsSubmit. Rate-limited per-source-IP and per-session-token (both fixed 60s windows); a 429 carries a `Retry-After` header.

Request body

capture_session_tokenstringrequired
field_idstringrequired
image_base64stringrequired
content_typestringrequired

Example

curl -X POST https://vision.dev.rigid.fi/v1/vision/file-submit \
  -H "Authorization: Bearer $RIGID_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "capture_session_token": "string",
  "field_id": "string",
  "image_base64": "string",
  "content_type": "string"
}'

Responses

204

The file was stored against the field.

400

Validation error

typestringrequired
titlestringrequired
statusintegerrequired
detailstring
instancestring
404

Capture session not found or expired

typestringrequired
titlestringrequired
statusintegerrequired
detailstring
instancestring
413

The file is over the size ceiling (`code: file_too_large`)

typestringrequired
titlestringrequired
statusintegerrequired
detailstring
instancestring
429

Too many file uploads — a rate limit was exceeded

typestringrequired
titlestringrequired
statusintegerrequired
detailstring
instancestring
500

Internal server error

typestringrequired
titlestringrequired
statusintegerrequired
detailstring
instancestring