PUBLIC API v1
Re-run OCR on an attachment (optionally a cropped region)
POST /api/v1/companies/{company_pk}/attachments/{public_id}/re-extract/
Re-extracts document fields. If an `image` is provided (e.g. the user selected the region containing the amount), OCR runs against that crop synchronously and the corrected fields are returned. The original attachment file is never replaced (GoBD). Without an `image`, a full re-OCR is queued and 202 is returned.
Permission: write_documents · Direct link
Company-scoped. Account permissions, plan limits and document state still apply.
Path and query parameters
| Parameter | Location / type | Description |
|---|---|---|
company_pkRequired | path · string (uuid) | Not specified |
public_idRequired | path · string (uuid) | A UUID string identifying this Attachment. |
Request body
application/json
| Field | Type / accepted values | Description |
|---|---|---|
image | string (binary) | Not specified |
multipart/form-data
| Field | Type / accepted values | Description |
|---|---|---|
image | string (binary) | Not specified |
application/x-www-form-urlencoded
| Field | Type / accepted values | Description |
|---|---|---|
image | string (binary) | Not specified |
Responses
200 Response fields
application/json
| Field | Type / accepted values | Description |
|---|---|---|
publicIdRequiredRead only | string (uuid) | Not specified |
createdRequiredRead only | string (date-time) | Not specified |
file | string (uri) | null | Not specified |
transactionsRequired | string (uuid)[] | Not specified |
companyRequired | string (uuid) | Not specified |
attachmentType | "invoice" | "receipt" | "contract" | "other" | * `invoice` - Invoice * `receipt` - Receipt * `contract` - Contract * `other` - Other |
amount | string (decimal) | null | Not specified |
amountExchanged | string (decimal) | null | Not specified |
attachmentNumber | string | Not specified |
brandName | string | Not specified |
currency | string | Not specified |
currencyExchanged | string | null | Not specified |
description | string | Not specified |
supplierCountry | "DE" | "PL" | "DOMESTIC" | "INSIDE_EU" | "OUTSIDE_EU" | "" | Not specified |
valueDate | string (date-time) | null | Not specified |
vatSumAmount | string (decimal) | null | Not specified |
vatSumAmountExchanged | string (decimal) | null | Not specified |
fileName | string | Not specified |
saleType | "GOODS" | "SERVICES" | "" | Not specified |
vatRate | 23 | 19 | 8 | 7 | 5 | 0 | -1 | -2 | * `23` - 23% * `19` - 19% * `8` - 8% * `7` - 7% * `5` - 5% * `0` - 0% * `-1` - CUSTOM % * `-2` - Reverse charge |
extractedItems | object | null | Per-item OCR extraction results: [{description, amount, vat_rate, ...}] |
fileHash | string | Not specified |
retentionUntil | string (date) | null | Not specified |
externalSource | string | Not specified |
externalId | string | Not specified |
202 Response fields
application/json
| Field | Type / accepted values | Description |
|---|---|---|
queuedRequired | boolean | Not specified |
400 Response fields
application/json
| Field | Type / accepted values | Description |
|---|---|---|
detailRequired | string | Not specified |
code | integer | Not specified |
type_ | string | Not specified |
fieldRequired | string | Not specified |
401 Response fields
application/json
| Field | Type / accepted values | Description |
|---|---|---|
detailRequiredRead only | string | Not specified |
403 Missing scope, company mismatch, unsupported operation, or a plan/account restriction.
429 Rate limit exceeded. Wait for the Retry-After header before retrying.
Use the base URL https://api.norman.finance/api/v1. Sign up or log in to Norman to create an API key, then send it as a Bearer token. For an OpenAPI JSON file, contact support.