---
title: "Analyze Document"
method: POST
path: "/v1/upload/analyze"
tags: ["Upload"]
---

# Analyze Document

`POST /v1/upload/analyze`

## Query parameters

- `instance_id` string — Instance ID. When provided, the request must be authenticated with an API key scoped to this instance. When omitted, a dashboard (Clerk) session is required.

## Response `200`

Document analyzed successfully

- UploadAnalyzeOut
  - `approval_rate` 'low' | 'medium' | 'high', required — Confidence that the document should be approved.
  - `description` string, required — Short explanation of why the document should or should not be approved.

## Other responses

- `400` — Possible error codes: `FILES_EMPTY`, `FILES_TOO_LARGE`, `FILES_TYPE_NOT_ALLOWED`, `VALIDATION_FAILED`. See the Error responses section for retry semantics.
- `401` — Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.
- `403` — Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.
- `422` — Possible error codes: `FILES_ANALYSIS_FAILED`. See the Error responses section for retry semantics.
- `429` — Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.
- `500` — Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.
- `503` — Possible error codes: `FILES_ANALYSIS_FAILED`. See the Error responses section for retry semantics.

---

[API](https://skmtc.dev/blindpay/apis/blindpay-api.md) · [All operations](https://skmtc.dev/blindpay/apis/blindpay-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/blindpay/blindpay-api/revisions/470de27afb7b/schema)
