Arina Document Intelligence API
This library provides convenient access to the Arina Document Intelligence API from Python.
The full API of this library can be found in api.md.
Contents
- Installation
- Usage
- Waiting for a run
- API Reference
- Async
- Authentication
- Errors
- Client Options
- Retries and Timeouts
- Helpers
- Logging
- Requirements
Installation
pip install arina-grid-di
Usage
You need the base URL of the service you are using (Arina-hosted, or your organisation's own deployment) and the API key that goes with it. Both are required: the client has no default host.
import json
from arina_grid_di import ArinaDocumentIntelligenceAPI
client = ArinaDocumentIntelligenceAPI(
api_key_auth="<your key>",
base_url="https://<your base url>",
)
# Runs are asynchronous: POST returns 202 with a run id, then you poll.
# `config` is the ExtractRunRequest object as a JSON string (one multipart form field).
run = client.extraction.create_extract_run(
file=open("invoice.pdf", "rb"),
config=json.dumps({
"organizationId": "org_123",
"config": {
"jsonSchema": {
"type": "object",
"properties": {
"invoiceNumber": {"type": ["string", "null"]},
"invoiceTotal": {"type": ["number", "null"], "description": "Total amount due"},
},
},
"citationsEnabled": True,
},
}),
)
print(run.id, run.status) # exr_..., PROCESSING
The examples in the following sections assume a client configured as shown above.
See the API reference for every available operation.
Waiting for a run
arina_grid_di.lib adds helpers that poll a run until it reaches a
terminal status (PROCESSED, FAILED, CANCELLED), with backoff and a timeout:
from arina_grid_di.lib import wait_for_extract_run
run = wait_for_extract_run(client, run.id, timeout=120)
total = run.output.value["invoiceTotal"]
# `citations` is a list when the value was located, [] when it was found but not
# located, and None when citations were disabled — so guard before iterating.
field = run.output.metadata["invoiceTotal"]
for citation in field.citations or []:
print(citation.page.number, citation.polygon, citation.reference_text)
# The page image the polygons were measured against:
with open("page.jpg", "wb") as fh:
fh.write(client.extraction.list_extract_run_page(run.id).read())
wait_for_parse_run does the same for parse runs, and both have async counterparts
(await wait_for_extract_run_async(...)). A FAILED or CANCELLED run raises
RunFailedError (the run is on .run); pass raise_on_failure=False to get it back
instead. Exceeding timeout raises RunTimeoutError. Unknown statuses are treated as
still running, because status is an open string.
Async
Every client has an Async counterpart (AsyncArinaDocumentIntelligenceAPI) exposing the same resource tree with await.
import asyncio
from arina_grid_di import AsyncArinaDocumentIntelligenceAPI
async def main() -> None:
client = AsyncArinaDocumentIntelligenceAPI()
extraction = await client.extraction.create_extract_run(
file=b"file",
config='{"organizationId": "org_123", "config": {"jsonSchema": {"type": "object", "properties": {"invoiceNumber": {"type": ["string", "null"]}, "invoiceTotal": {"type": ["number", "null"], "description": "Total amount due"}}}, "citationsEnabled": true}}',
)
asyncio.run(main())
Authentication
Pass credentials to the generated client constructor. Environment variables are read automatically when supported by the target runtime.
| Option | Type | Default | Description |
|---|---|---|---|
api_key_auth |
string | provider |
- | Credential for the ApiKeyAuth scheme. Defaults to API_KEY_AUTH. |
Declared schemes:
ApiKeyAuthAPI key in headerX-API-Key
Errors
Non-success responses throw generated API errors. Error objects expose status, headers, response body, and request metadata where the target runtime supports it.
from arina_grid_di import APIStatusError
try:
extraction = client.extraction.create_extract_run(
file=b"file",
config='{"organizationId": "org_123", "config": {"jsonSchema": {"type": "object", "properties": {"invoiceNumber": {"type": ["string", "null"]}, "invoiceTotal": {"type": ["number", "null"], "description": "Total amount due"}}}, "citationsEnabled": true}}',
)
except APIStatusError as err:
print(err.status_code, err.message)
raise
Documented error statuses: 400, 404, 409, 422, 503.
Client Options
Configure the generated client by setting any of these options when you create it.
from arina_grid_di import ArinaDocumentIntelligenceAPI
client = ArinaDocumentIntelligenceAPI(
timeout=60.0,
max_retries=2,
)
| Option | Type | Default | Description |
|---|---|---|---|
api_key_auth |
str | None |
os.environ.get("API_KEY_AUTH") |
Credential for the ApiKeyAuth scheme. |
base_url |
str | httpx.URL | None |
- | Override the default API base URL. |
timeout |
float | Timeout | None |
60.0 |
Maximum time in seconds to wait for a response before aborting a request. |
max_retries |
int |
2 |
Number of retries for temporary failures. |
default_headers |
Mapping[str, str] | None |
- | Headers sent with every request. |
default_query |
Mapping[str, object] | None |
- | Query parameters sent with every request. |
Retries and Timeouts
Generated clients support request timeouts and retry temporary failures such as network errors, 408, 409, 429, and 5xx responses. Retry delays honor Retry-After headers when present. Tune the retry and timeout client options shown above, or override them per request.
Helpers
- Use
client.with_raw_response.<resource>.<method>(...)to access the rawhttpx.Responseand parse it yourself. - Use
client.with_streaming_response.<resource>.<method>(...)to stream a response body without buffering it.
Logging
- Set the
ARINA_LOGenvironment variable toinfoordebugto enable HTTP logging. - Logs are emitted through the standard
loggingmodule under thearina_grid_dilogger.
Requirements
- Python 3.9 or newer
Contributing
Client code under src/arina_grid_di/ (except lib/) is generated from the
API's OpenAPI document; helpers, tests and release automation are maintained here. See
CONTRIBUTING.md. Security reports: SECURITY.md.
Client generated with Scalar.
Metadata
Release files for arina-grid-di 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| arina_grid_di-0.1.0.tar.gz | 79.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| arina_grid_di-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 189.4 kB
Release files / arina_grid_di-0.1.0.tar.gz
| Download URL | arina_grid_di-0.1.0.tar.gz |
|---|---|
| Size | 79.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
45b68d7072411ca2d6ab2ef9dffec581a076eccbfc943ee8613c202e665da971
|
|
BLAKE2b-256 checksum How to use checksums |
66941ff6c945c8c996fd979defd0f9e9e6838e8d7f3de4a1c21dd7a3a2faa92b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.
Transparency logRelease files / arina_grid_di-0.1.0-py3-none-any.whl
| Download URL | arina_grid_di-0.1.0-py3-none-any.whl |
|---|---|
| Size | 109.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0485a33acb3bca15fefcb19eb261bdbc2fb20d1f9126e52042f67bad0ff766f4
|
|
BLAKE2b-256 checksum How to use checksums |
bfe63bf1d5a683b97cb9a3d68eabb8c6b7cf1971555c8432fab922002f6729b3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.
Transparency log