Almost every integration question comes down to one thing: how does Odoo let another system read and write its data? The answer is a well-defined API that has been stable for years. Understanding how it works, at a level you do not need to be a developer to follow, makes it far easier to scope an integration and to tell a solid one from a fragile one.
How Odoo exposes its data
Odoo ships with a built-in external API. Out of the box it speaks two protocols, XML-RPC and JSON-RPC, and almost anything you can do in the Odoo interface can also be done through them: read records, create them, update them, delete them, and run business methods. Where a partner system prefers plain REST, a small custom controller adds REST-style endpoints on top of the same models. So the practical answer to "does Odoo have an API?" is yes, a complete one, and REST is a thin layer away when it is needed.
The building blocks of any Odoo integration
Under the hood, an integration almost always follows the same shape:
- Authenticate. The external system logs in with a database name, a user and an API key, and gets back a user id it uses for the rest of the session.
- Search and read. It queries records with a domain filter, for example "orders created since yesterday", and reads back just the fields it needs.
- Create and update. It writes new records or updates existing ones, the same way a user would, but programmatically.
- Call business methods. Beyond raw data, it can trigger real Odoo actions, confirming an order or validating a delivery, so the integration respects the same logic a human would.
The important part is that the API is not a back door. Every call runs as a specific Odoo user and obeys that user's access rights and record rules. An integration user that should only touch sales orders can be scoped so it genuinely cannot read payroll.
Which direction does the data flow?
Three patterns cover almost every case, and naming yours up front avoids most integration pain:
- Pull into Odoo. Odoo, or a scheduled job, fetches data from another system on a timer.
- Push out of Odoo. Odoo sends data outward when something happens, often triggered by an automated action on a record change.
- Two-way sync. Both systems stay in step, which is the most useful and the most demanding, because you must decide which side wins when the same record changes in both.
For anything close to real time, webhooks and Odoo's automated actions beat polling on a timer. Our Shopify, WhatsApp and payment gateway guides each walk through one of these patterns end to end.
What separates a robust integration from a fragile one
The API is the easy part. The engineering that makes an integration trustworthy is everything around it:
- Authentication with API keys, not a shared password, and a dedicated, scoped integration user.
- Batching, so thousands of records move in efficient chunks rather than one slow call at a time.
- Idempotency, so a retried message does not create the same order twice.
- Error handling, retries and logging, so a temporary outage on either side fails safe and surfaces clearly, instead of silently dropping data.
An integration that skips these looks fine in a demo and corrupts data in month three. One that includes them is boring in the best way: it just keeps working.
Ready-made connector or custom build?
Some integrations already exist as apps, including several we publish on the Odoo Apps Store, so connecting a common system can be a configuration job rather than a development one. Where no standard connector fits, or the logic is specific to your business, a custom module built to Odoo conventions is the reliable route. Which one is cheaper depends entirely on the systems involved, which is exactly what our guide to Odoo integration cost breaks down.
Frequently asked questions
Does Odoo have an API?
Yes. Odoo includes a full external API over XML-RPC and JSON-RPC that can read, create, update and delete records and run business methods. REST-style endpoints can be added with a small custom controller when a partner system needs them.
Is the Odoo API secure?
It is as secure as the user it runs as. Calls authenticate with an API key and execute under a specific Odoo user, obeying that user's access rights and record rules. Scoping a dedicated integration user tightly is what keeps an integration safe.
Can Odoo integrate in real time, or only on a schedule?
Both. Scheduled jobs handle periodic syncs; webhooks and automated actions handle near real-time updates when a record changes. The right choice depends on how fresh the data needs to be and what the other system supports.
Do I need a developer to build an Odoo integration?
For a common system with an existing connector, often no, it can be configured. For a custom or two-way integration with real business logic, yes, you want a developer who builds to Odoo conventions and handles authentication, batching and error handling properly.
Have a system you need Odoo to talk to? Tell us about it and we will scope the connection.
Need Odoo connected to another system? See our Odoo integration services.