> For the complete documentation index, see [llms.txt](https://docs.mindee.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.mindee.com/integrations/api-overview.md).

# Integration Overview

Overview of connecting your system to the Mindee API.

## General Description

Mindee is ideal for handling large amounts of documents. The vast majority of our users will want to connect Mindee to their systems using our APIs.

It's possible to design any number of different use cases around document processing. These can be for purely internal processing or to provide final end users with a polished experience.

The API is asynchronous, RESTful, and returns objects.

## Before Starting

You'll need at least one model configured, see the [Models Overview](/models/models-overview.md) section for more details. This can be any model type (extraction or utility model), all models are integrated in a very similar way.

We recommend using the [Live Test](/models/live-test.md) feature before attempting to integrate the API.

You'll also need at least one API key, see the [Manage API Keys](/integrations/api-keys.md) section for more info.

## How to Integrate

All file processing routes are asynchronous, no synchronous routes are provided. You can either use a polling or webhook workflow.

If using our SDK integrations polling is abstracted away for you, meaning you can use a single synchronous method within the SDK to receive processing results.

These are are the fastest and easiest way to call our APIs, and allow our support teams to better help you.

### Client Libraries / SDKs

For a quick introduction and copy-paste ready code, look in the [Extraction Quick Start](/extraction-models/sdk-integration/quick-start.md) section.

{% hint style="success" %}
**Ask for Code Samples**

You can ask for specific code samples from the documentation AI.

Use the "Ask" button at the top of any page, or click below:

<button type="button" class="button primary" data-action="ask" data-query="List available model types and a brief description (Extraction, Split, Crop, Classify, OCR), allow to pick one. Then list available SDK languages and allow to pick one. Finally ask for model ID, and generate the code sample for polling." data-icon="gitbook-assistant">Ask "Write a code sample for me."</button>
{% endhint %}

Supported languages/frameworks: **Python**, **Node.js** (JS/TS), **PHP**, **Ruby**, **Java**, **.NET** (C#).

We provide full support for Client Libraries regardless of your plan. You can report any issues on our [bug tracker](https://feedback.mindee.com/?b=685c08afd7a1d2e47b124cbb) or directly on [GitHub](https://github.com/orgs/mindee/repositories).

### No-Code or Low-Code

If you're integrating using a no-code or low-code platform, take a look at the [No-Code Integration](/extraction-models/no-code-integration.md) section.

### Manual Integration

{% hint style="warning" %}
**We do not recommend manually integrating**, and cannot guarantee full support.

Pro plans and above benefit from extended integration support.
{% endhint %}

Only if it's not possible to integrate using an SDK or no-code, take a look at the [Manual Integration](/integrations/api-reference.md) section.

## What to Send

You can send either a local file or an URL, it makes no difference for server-side processing.

However, when using our client libraries, you can [Load and Adjust a File](/integrations/client-libraries-sdk/load-and-adjust-a-file.md#adjust-the-source-file) if you have it locally.

## Retrieving Results

Processing is always asynchronous, meaning that retrieving results is separated from sending the file to the server.

Once a request has been sent, it is not possible to stop or cancel the processing.

You can decide on using either the polling flow or the webhook flow to retrieve results.

Polling - poll the server until results are ready. When using an SDK, the polling requests are handled for you in a single method call. Better suited for testing and small volumes.&#x20;

[Webhooks](/integrations/webhooks.md) - send results directly to your server. When using an SDK, response deserialization is handled for you, just pass the raw request body. Better suited for heavy production use.

## Developing and Testing

A typical development process will require testing before deploying to production, to ensure a given model works correctly with a specific code version.

Mindee models are not versioned, rather they can be locked and/or copied as needed. This provides more flexibility in how you organize and manage your models, to better fit your development process.

Your development release cycle could look like this:

1. Start with a new model. If you are making adjustments to an existing production model, copy it and only make changes to the copy.\
   Consider adding versioning info to the copied model's name, i.e. "Invoice v1.1" or "Receipt 2026-05-17".
2. Adjust your code as needed and test.
3. When deploying your code to testing or production environments, use the new model's ID.
4. After deployment, [lock your production model](/models/model-settings.md#locking-the-data-schema) to avoid accidental changes.
5. `GOTO 1`

## Frequently Asked Questions

<details>

<summary><strong>Can I use the same V1 API keys in the V2?</strong></summary>

No, V1 and V2 do not share API key information.

</details>

<details>

<summary><strong>Can I run V1 and V2 in parallel?</strong></summary>

Yes, absolutely.

Running both platforms in parallel is not only supported but recommended if you are migrating from V1 to V2.

All SDKs have full support for V1 and V2 running in parallel, more information here: [Client Libraries / SDKs](/integrations/client-libraries-sdk.md)

</details>

<details>

<summary><strong>Do you provide a testing or staging environment?</strong></summary>

We do not provide separate environments for development, staging, production, etc.

For information on testing your models and code before deploying to production, take a look at: [#developing-and-testing](#developing-and-testing "mention")

</details>

<details>

<summary><strong>How can I export the results to CSV?</strong></summary>

The Mindee API return contains lists of nested fields, it is an object-based format.\
The CSV format has no provisions for objects, it only has rows and columns.

To convert from Mindee's object format to a CSV format, you can either remove information or output to several CSV files (or sheets).

Since each model is different, and each use case is different, there is no universal way to do this conversion.

It's up to you to make a mapping that conforms to your needs. You can use the [SDKs](/extraction-models/sdk-integration.md) for easy manipulation of objects, or set up mapping rules in your [no-code](/extraction-models/no-code-integration.md) solution.

</details>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.mindee.com/integrations/api-overview.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `build a script that syncs our docs to a CMS` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
