Zuva Fields Catalog API
List and manage the catalog of available extraction fields, including creating custom fields and reading or updating field metadata such as name and description.
List and manage the catalog of available extraction fields, including creating custom fields and reading or updating field metadata such as name and description.
openapi: 3.0.1
info:
title: Zuva DocAI API
description: >-
The Zuva DocAI API is a RESTful contract and document AI API for extracting
structured data from unstructured documents. It provides asynchronous file
submission, OCR, field extraction across 1,400+ pre-built fields, multi-level
document classification across 220+ document types, language detection, and a
searchable fields catalog. All requests are authenticated with a Bearer API
token and served from regional hosts (US and EU).
termsOfService: https://zuva.ai/terms/zuva/
contact:
name: Zuva Support
url: https://zuva.ai/
version: '2.0'
servers:
- url: https://{region}.app.zuva.ai/api/v2
description: Zuva DocAI regional API server
variables:
region:
default: us
description: Deployment region for the Zuva DocAI API.
enum:
- us
- eu
security:
- bearerAuth: []
tags:
- name: Files
description: Upload and manage document files.
- name: Field Extraction
description: Extract field values from documents.
- name: Classification
description: Multi-level document classification.
- name: OCR
description: Optical character recognition.
- name: Fields
description: Field catalog management.
paths:
/files:
post:
operationId: createFile
tags:
- Files
summary: Upload a document file.
description: >-
Upload the binary content of a document to Zuva. Returns a file_id used
by the OCR, extraction, and classification services.
requestBody:
required: true
content:
application/octet-stream:
schema:
type: string
format: binary
responses:
'201':
description: File created.
content:
application/json:
schema:
$ref: '#/components/schemas/File'
delete:
operationId: deleteFiles
tags:
- Files
summary: Delete multiple files.
description: Delete multiple uploaded files by their file IDs.
parameters:
- name: file_ids
in: query
required: true
description: Comma-separated list of file IDs to delete.
schema:
type: string
responses:
'204':
description: Files deleted.
/files/{file_id}:
delete:
operationId: deleteFile
tags:
- Files
summary: Delete a single file.
parameters:
- $ref: '#/components/parameters/FileId'
responses:
'204':
description: File deleted.
/files/{file_id}/expiration:
put:
operationId: updateFileExpiration
tags:
- Files
summary: Update a file's expiration.
description: Update the retention period (expiration) of an uploaded file.
parameters:
- $ref: '#/components/parameters/FileId'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
expiration:
type: string
format: date-time
description: New expiration timestamp for the file.
responses:
'200':
description: Expiration updated.
content:
application/json:
schema:
$ref: '#/components/schemas/File'
/extraction:
post:
operationId: createExtraction
tags:
- Field Extraction
summary: Create field extraction requests.
description: >-
Submit one or more files and field IDs to extract. Accepts up to 100
file IDs and 100 field IDs per request. Returns one request per file.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ExtractionRequest'
responses:
'202':
description: Extraction requests accepted and queued.
content:
application/json:
schema:
type: object
properties:
file_ids:
type: array
items:
type: string
field_ids:
type: array
items:
type: string
status:
type: string
/extractions:
get:
operationId: getExtractions
tags:
- Field Extraction
summary: Query multiple extraction requests.
parameters:
- name: request_id
in: query
required: false
description: Comma-separated list of extraction request IDs.
schema:
type: string
responses:
'200':
description: Extraction request statuses.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Request'
/extraction/{request_id}:
get:
operationId: getExtraction
tags:
- Field Extraction
summary: Retrieve an extraction request status.
parameters:
- $ref: '#/components/parameters/RequestId'
responses:
'200':
description: Extraction request status.
content:
application/json:
schema:
$ref: '#/components/schemas/Request'
/extraction/{request_id}/results/text:
get:
operationId: getExtractionResultsText
tags:
- Field Extraction
summary: Retrieve extraction text results.
description: Fetch extracted field values with text spans and locations.
parameters:
- $ref: '#/components/parameters/RequestId'
responses:
'200':
description: Extraction results.
content:
application/json:
schema:
$ref: '#/components/schemas/ExtractionResults'
/mlc:
post:
operationId: createClassification
tags:
- Classification
summary: Create a document classification request.
description: >-
Submit files to the multi-level classification (MLC) service, which
classifies documents across 220+ document types and returns the
document language and amendment status.
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- file_ids
properties:
file_ids:
type: array
items:
type: string
responses:
'202':
description: Classification requests accepted and queued.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/ClassificationResult'
/mlcs:
get:
operationId: getClassifications
tags:
- Classification
summary: Query multiple classification requests.
parameters:
- name: request_id
in: query
required: false
description: Comma-separated list of classification request IDs.
schema:
type: string
responses:
'200':
description: Classification request statuses.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/ClassificationResult'
/mlc/{request_id}:
get:
operationId: getClassification
tags:
- Classification
summary: Retrieve classification status and results.
description: >-
Retrieve the classification result for a request, including the
document type, detected language, and whether the document is an
amendment.
parameters:
- $ref: '#/components/parameters/RequestId'
responses:
'200':
description: Classification result.
content:
application/json:
schema:
$ref: '#/components/schemas/ClassificationResult'
/ocr:
post:
operationId: createOcr
tags:
- OCR
summary: Create an OCR request.
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- file_ids
properties:
file_ids:
type: array
items:
type: string
responses:
'202':
description: OCR requests accepted and queued.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/OcrResult'
/ocrs:
get:
operationId: getOcrs
tags:
- OCR
summary: Query multiple OCR requests.
parameters:
- name: request_id
in: query
required: false
description: Comma-separated list of OCR request IDs.
schema:
type: string
responses:
'200':
description: OCR request statuses.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/OcrResult'
/ocr/{request_id}:
get:
operationId: getOcr
tags:
- OCR
summary: Retrieve an OCR request status.
parameters:
- $ref: '#/components/parameters/RequestId'
responses:
'200':
description: OCR request status.
content:
application/json:
schema:
$ref: '#/components/schemas/OcrResult'
/ocr/{request_id}/text:
get:
operationId: getOcrText
tags:
- OCR
summary: Retrieve OCR extracted text.
parameters:
- $ref: '#/components/parameters/RequestId'
responses:
'200':
description: Extracted text.
content:
text/plain:
schema:
type: string
/ocr/{request_id}/images:
get:
operationId: getOcrImages
tags:
- OCR
summary: Download all page images as a zip.
parameters:
- $ref: '#/components/parameters/RequestId'
responses:
'200':
description: Zip archive of page PNG images.
content:
application/zip:
schema:
type: string
format: binary
/ocr/{request_id}/images/{page_number}:
get:
operationId: getOcrImagePage
tags:
- OCR
summary: Download a single page image.
parameters:
- $ref: '#/components/parameters/RequestId'
- name: page_number
in: path
required: true
schema:
type: integer
responses:
'200':
description: PNG image of the requested page.
content:
image/png:
schema:
type: string
format: binary
/ocr/{request_id}/layouts:
get:
operationId: getOcrLayouts
tags:
- OCR
summary: Retrieve layout protobuf binary.
parameters:
- $ref: '#/components/parameters/RequestId'
responses:
'200':
description: Layout protobuf binary.
content:
application/octet-stream:
schema:
type: string
format: binary
/fields:
get:
operationId: getFields
tags:
- Fields
summary: List available fields.
description: List all available extraction fields with their metadata.
responses:
'200':
description: List of fields.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Field'
post:
operationId: createField
tags:
- Fields
summary: Create a custom extraction field.
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
field_name:
type: string
description:
type: string
responses:
'201':
description: Field created.
content:
application/json:
schema:
$ref: '#/components/schemas/Field'
/fields/{field_id}/metadata:
get:
operationId: getFieldMetadata
tags:
- Fields
summary: Retrieve field metadata.
parameters:
- $ref: '#/components/parameters/FieldId'
responses:
'200':
description: Field metadata.
content:
application/json:
schema:
$ref: '#/components/schemas/Field'
put:
operationId: updateFieldMetadata
tags:
- Fields
summary: Update field metadata.
description: Update a field's name and description.
parameters:
- $ref: '#/components/parameters/FieldId'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
field_name:
type: string
description:
type: string
responses:
'200':
description: Field metadata updated.
content:
application/json:
schema:
$ref: '#/components/schemas/Field'
components:
securitySchemes:
bearerAuth:
type: http
scheme: bearer
description: >-
Zuva API token passed in the Authorization header as
`Authorization: Bearer <token>`.
parameters:
FileId:
name: file_id
in: path
required: true
description: The unique identifier of an uploaded file.
schema:
type: string
RequestId:
name: request_id
in: path
required: true
description: The unique identifier of an asynchronous request.
schema:
type: string
FieldId:
name: field_id
in: path
required: true
description: The unique identifier of a field.
schema:
type: string
schemas:
File:
type: object
properties:
file_id:
type: string
expiration:
type: string
format: date-time
attributes:
type: array
items:
type: string
size:
type: integer
permissions:
type: array
items:
type: string
ExtractionRequest:
type: object
required:
- file_ids
- field_ids
properties:
file_ids:
type: array
description: Up to 100 file IDs.
items:
type: string
field_ids:
type: array
description: Up to 100 field IDs.
items:
type: string
options:
type: object
properties:
field_heuristics:
type: array
items:
type: object
Request:
type: object
properties:
request_id:
type: string
file_id:
type: string
field_ids:
type: array
items:
type: string
status:
type: string
enum:
- queued
- processing
- complete
- failed
ExtractionResults:
type: object
properties:
request_id:
type: string
file_id:
type: string
results:
type: array
items:
type: object
properties:
field_id:
type: string
text:
type: string
spans:
type: array
items:
type: object
properties:
start:
type: integer
end:
type: integer
ClassificationResult:
type: object
properties:
request_id:
type: string
file_id:
type: string
status:
type: string
classification:
type: string
language:
type: string
is_amendment:
type: boolean
OcrResult:
type: object
properties:
request_id:
type: string
file_id:
type: string
status:
type: string
page_count:
type: integer
character_count:
type: integer
scan_quality:
type: string
scan_score:
type: number
Field:
type: object
properties:
field_id:
type: string
name:
type: string
description:
type: string
bias:
type: number
f_score:
type: number
precision:
type: number
recall:
type: number
is_custom:
type: boolean