Odoo API Pagination, Filtering & Errors
Odoo API pagination with limit and offset, filtering with where and sort, field selection, and stable error codes — one request shape via MindCloud.
Once your first Odoo request works, use this page to shape real production requests. MindCloud keeps the app-specific API details behind one REST format, so you can control arguments, pagination, filtering, fields, and errors without learning a separate convention for every provider. If you have not connected Odoo yet, start with Connect to Odoo.
Arguments
Arguments are the inputs an action needs. Put them in the JSON body under the arguments field. Each Odoo action page documents its exact argument keys and types. It also shows which arguments are required. Keys are case-sensitive. Requests with missing or invalid required arguments fail.
Request format
Choose a Odoo action and send a POST request to its Universal API run URL. Authenticate with your MindCloud API Key. Put the connection, arguments, and response controls in the JSON body.
| Piece | Where it goes |
|---|---|
arguments | An object in the JSON body. Put all action fields inside it. |
connectionId | An optional public connection id in the JSON body. The API selects the default or only valid connection when omitted. |
limit, offset, where, sort, fields | Response controls in the JSON body. |
Pagination
Paginated list actions accept limit and offset in the JSON body. Some providers use page numbers, and some use cursors. MindCloud translates the request for Odoo. Start at offset=0, add limit to the offset after each page, and stop when a page returns fewer rows than you asked for.
curl --request POST \
--url "https://connect.mindcloud.co/v2/universal/apps/odoo/actions/list-contacts/run" \
--header "Authorization: Bearer $MINDCLOUD_API_KEY" \
--header "Content-Type: application/json" \
--data '{
"connectionId": "$CONNECTION_ID",
"arguments": {},
"limit": "25",
"offset": "0"
}'These Odoo actions support pagination:
- List Access Controls
- List Access Rules
- List Action Windows
- List Activities
- List Activity Types
- List Attachments
- List Bank Accounts
- List Blacklisted Emails
- List Blacklisted Phone Numbers
- List Channel Members
- List Companies
- List Contact Tags
- List Contacts
- List Contract Types
- List Countries
- List Country Groups
- List Country States
- List Currencies
- List Currency Rates
- List Departments
- List Departure Reasons
- List Discussion Categories
- List Discussion Channels
- List Email Aliases
- List Email Domains
- List Email Templates
- List Employee Categories
- List Employee Locations
- List Employee Skills
- List Employees
- List Field Selections
- List Groups
- List Industries
- List Job Positions
- List Languages
- List Logs
- List Mail Servers
- List Menus
- List Message Notifications
- List Message Subtypes
- List Messages
- List Model Constraints
- List Model Data
- List Model Fields
- List Models
- List Module Categories
- List Modules
- List Planning Roles
- List Planning Shifts
- List Resource Calendars
- List Resume Line Types
- List Resume Lines
- List Scheduled Actions
- List Sequences
- List Server Actions
- List Shift Templates
- List Skill Levels
- List Skill Types
- List Skills
- List System Parameters
- List Users
- List Views
- List Work Details
- List Work Locations
Filtering
Filterable list actions accept a where body field written as an RSQL expression. MindCloud translates it into the filtering shape Odoo supports. Each action page lists its filterable fields.
| Operator | Meaning | Example |
|---|---|---|
== / != | Equals / does not equal | status==active |
> >= < <= | Comparisons | createdAt>=2026-01-01 |
=like= | Contains text, with * wildcards | name=like=*dan* |
Combine conditions with ; for AND and , for OR: status==active;createdAt>=2026-01-01.
These Odoo actions support filtering:
- List Access Controls
- List Access Rules
- List Action Windows
- List Activities
- List Activity Types
- List Attachments
- List Bank Accounts
- List Blacklisted Emails
- List Blacklisted Phone Numbers
- List Channel Members
- List Companies
- List Contact Tags
- List Contacts
- List Contract Types
- List Countries
- List Country Groups
- List Country States
- List Currencies
- List Currency Rates
- List Departments
- List Departure Reasons
- List Discussion Categories
- List Discussion Channels
- List Email Aliases
- List Email Domains
- List Email Templates
- List Employee Categories
- List Employee Locations
- List Employee Skills
- List Employees
- List Field Selections
- List Groups
- List Industries
- List Job Positions
- List Languages
- List Logs
- List Mail Servers
- List Menus
- List Message Notifications
- List Message Subtypes
- List Messages
- List Model Constraints
- List Model Data
- List Model Fields
- List Models
- List Module Categories
- List Modules
- List Planning Roles
- List Planning Shifts
- List Resource Calendars
- List Resume Line Types
- List Resume Lines
- List Scheduled Actions
- List Sequences
- List Server Actions
- List Shift Templates
- List Skill Levels
- List Skill Types
- List Skills
- List System Parameters
- List Users
- List Views
- List Work Details
- List Work Locations
Sorting
Sortable list actions accept a sort body field. Use a comma-separated list of fields with a - prefix for descending order, such as sort=-createdAt,name. MindCloud maps it into the sorting format Odoo supports, and the sortable fields are listed on each action page.
These Odoo actions support sorting:
- List Access Controls
- List Access Rules
- List Action Windows
- List Activities
- List Activity Types
- List Attachments
- List Bank Accounts
- List Blacklisted Emails
- List Blacklisted Phone Numbers
- List Channel Members
- List Companies
- List Contact Tags
- List Contacts
- List Contract Types
- List Countries
- List Country Groups
- List Country States
- List Currencies
- List Currency Rates
- List Departments
- List Departure Reasons
- List Discussion Categories
- List Discussion Channels
- List Email Aliases
- List Email Domains
- List Email Templates
- List Employee Categories
- List Employee Locations
- List Employee Skills
- List Employees
- List Field Selections
- List Groups
- List Industries
- List Job Positions
- List Languages
- List Logs
- List Mail Servers
- List Menus
- List Message Notifications
- List Message Subtypes
- List Messages
- List Model Constraints
- List Model Data
- List Model Fields
- List Models
- List Module Categories
- List Modules
- List Planning Roles
- List Planning Shifts
- List Resource Calendars
- List Resume Line Types
- List Resume Lines
- List Scheduled Actions
- List Sequences
- List Server Actions
- List Shift Templates
- List Skill Levels
- List Skill Types
- List Skills
- List System Parameters
- List Users
- List Views
- List Work Details
- List Work Locations
Field selection
Use the fields body field to return only the response fields your code reads. Use dot notation for nested objects: fields=id,name,profile.email. Selection is applied to each row in data after the response is mapped, and id is kept whenever it exists so rows stay identifiable.
Responses and errors
Every Odoo response is mapped into the same public envelope before it reaches your code: success, your rows in a data array (single-row actions return an array with one item), and optional meta. Failed requests return success: false with a stable code to branch on and a human-readable message:
{
"success": false,
"code": "CONNECTION_APP_MISMATCH",
"message": "Connection \"conn_123\" is not configured for this app."
}Check the HTTP status first: 401 or 403 for authentication and authorization, 400 for invalid request shape, and 5xx when MindCloud cannot complete the action upstream. Most failures come from a missing API Key, a missing or mismatched connection, or arguments that do not match the action page.