> ## Documentation Index
> Fetch the complete documentation index at: https://nango.dev/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Odoo (API Key)

> Integrate your application with the Odoo JSON-2 API using an API key

## 🚀 Quickstart

Connect to Odoo with Nango and see data flow in 2 minutes.

**1. Create the integration**

In Nango ([free signup](https://app.nango.dev)), go to [Integrations](https://app.nango.dev/dev/integrations) -> *Configure New Integration* -> *Odoo (API Key)*.

**2. Authorize Odoo**

Go to [Connections](https://app.nango.dev/dev/connections) -> *Add Test Connection* -> *Authorize*, then enter your Odoo domain and API key. Later, you'll let your users do the same directly from your app.

**3. Call the Odoo API**

Let's make your first request to the Odoo API (search and read partner records). Odoo's JSON-2 API takes the model and method in the URL path, and any arguments in the request body. Replace the placeholders below with your [Environment API key](https://nango.dev/docs/reference/backend/http-api/api-keys.md), [integration ID](https://app.nango.dev/dev/integrations), and [connection ID](https://app.nango.dev/dev/connections):

> [tab] cURL
>
> ```bash theme={null}
> curl "https://api.nango.dev/proxy/2/res.partner/search_read" \
>   -X POST \
>   -H "Authorization: Bearer <NANGO-API-KEY>" \
>   -H "Provider-Config-Key: <INTEGRATION-ID>" \
>   -H "Connection-Id: <CONNECTION-ID>" \
>   -H "Content-Type: application/json" \
>   -d '{"domain": [["is_company", "=", true]], "fields": ["name"]}'
> ```

> [tab] Node
>
> Install Nango's backend SDK with `npm i @nangohq/node`. Then run:
>
> ```typescript theme={null}
> import { Nango } from '@nangohq/node';
>
> const nango = new Nango({ apiKey: '<NANGO-API-KEY>' });
>
> const res = await nango.post({
>     endpoint: '/2/res.partner/search_read',
>     data: { domain: [['is_company', '=', true]], fields: ['name'] },
>     providerConfigKey: '<INTEGRATION-ID>',
>     connectionId: '<CONNECTION-ID>'
> });
>
> console.log(res.data);
> ```

Or fetch credentials with the [Node SDK](https://nango.dev/docs/reference/backend/backend-sdk/node.md#get-a-connection-with-credentials) or [API](https://nango.dev/docs/reference/backend/http-api/connections/get.md).

✅ You're connected! Check the [Logs](https://app.nango.dev/dev/logs) tab in Nango to inspect requests.

**4. Implement Nango in your app**

Follow our [Auth implementation guide](https://nango.dev/docs/guides/primitives/auth.md) to integrate Nango in your app.

To obtain your own credentials, follow the setup guide linked below.

## 📚 Odoo (API Key) integration guides

Nango-maintained guides for common use cases.

* [How do I link my Odoo account?](https://nango.dev/docs/api-integrations/odoo-api-key/connect)\
  Connect your Odoo account using the Connect UI

Official docs: [Odoo JSON-2 API](https://www.odoo.com/documentation/latest/developer/reference/external_api.html)

> [!NOTE]
>
> This integration uses Odoo's native JSON-2 API (`/json/2/<model>/<method>`) with a personal API key. If your Odoo instance instead exposes the third-party OCA REST API module, use the [Odoo (OAuth)](https://nango.dev/docs/integrations/all/odoo.md) or [Odoo (Client Credentials)](https://nango.dev/docs/integrations/all/odoo-cc.md) integration instead.

## 🧩 Pre-built syncs & tools for Odoo (API Key)

Explore Nango-provided tools in your dashboard. Extend and customize them to fit your needs.

### Others

| Function name | Description | Type |
| - | - | - |
| `call-method` | Call an arbitrary Odoo model method through the JSON-2 API. | [Tool](https://nango.dev/docs/guides/functions/tools.md) |
| `count-records` | Count Odoo records matching a domain, without fetching them. | [Tool](https://nango.dev/docs/guides/functions/tools.md) |
| `create-record` | Create an Odoo model record | [Tool](https://nango.dev/docs/guides/functions/tools.md) |
| `delete-record` | Delete an Odoo model record. | [Tool](https://nango.dev/docs/guides/functions/tools.md) |
| `duplicate-record` | Duplicate an existing Odoo model record. | [Tool](https://nango.dev/docs/guides/functions/tools.md) |
| `find-records-by-name` | Find Odoo records by a partial name match, as used for autocomplete/dropdown lookups. | [Tool](https://nango.dev/docs/guides/functions/tools.md) |
| `get-record-fields` | Fetch Odoo fields metadata for a model. | [Tool](https://nango.dev/docs/guides/functions/tools.md) |
| `read-record` | Fetch specific Odoo records by ID. | [Tool](https://nango.dev/docs/guides/functions/tools.md) |
| `search-read-records` | Search and read records from any Odoo model. | [Tool](https://nango.dev/docs/guides/functions/tools.md) |
| `search-records` | Search for Odoo record IDs matching a domain, without reading their fields. | [Tool](https://nango.dev/docs/guides/functions/tools.md) |
| `update-record` | Update an Odoo model record | [Tool](https://nango.dev/docs/guides/functions/tools.md) |
| `contacts` | Sync Odoo contacts and companies. | [Sync](https://nango.dev/docs/guides/functions/syncs/sync-functions.md) |
| `crm-leads` | Sync Odoo CRM leads and opportunities. | [Sync](https://nango.dev/docs/guides/functions/syncs/sync-functions.md) |
| `invoices` | Sync Odoo invoices and bills | [Sync](https://nango.dev/docs/guides/functions/syncs/sync-functions.md) |
| `payments` | Sync Odoo customer and vendor payments | [Sync](https://nango.dev/docs/guides/functions/syncs/sync-functions.md) |
| `products` | Sync Odoo products. | [Sync](https://nango.dev/docs/guides/functions/syncs/sync-functions.md) |
| `project-tasks` | Sync Odoo project tasks. | [Sync](https://nango.dev/docs/guides/functions/syncs/sync-functions.md) |
| `sale-orders` | Sync Odoo sale orders. | [Sync](https://nango.dev/docs/guides/functions/syncs/sync-functions.md) |

***


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.