Connect ChatGPT to Odoo
Use GPT Actions to give ChatGPT secure, audited access to your Odoo data through the KMEE REST API.
How it works
ChatGPT → GPT Action (OpenAPI) → KMEE REST API → XML-RPC → Odoo
ChatGPT uses GPT Actions (formerly Plugins) to call external APIs. KMEE provides a REST API with an OpenAPI schema that ChatGPT understands natively.
Step 1: Get the OpenAPI schema
The KMEE Gateway automatically generates an OpenAPI 3.0 schema at:
https://gateway.kmee.ai/api/v1/openapi.json
This schema describes all available endpoints: search_read, read_group, count, fields_get, execute, and more.
Step 2: Create a Custom GPT
- Go to chat.openai.com → Explore GPTs → Create
- Give it a name: e.g., "My Odoo Assistant"
- In the Instructions, describe what it should do:
GPT Instructions (example) text
You are an Odoo ERP assistant for [Company Name]. You can search, read, and analyze data from the company's Odoo instance. Available data: - Sales orders (sale.order) - Customers (res.partner) - Products (product.product) - Invoices (account.move) - Inventory (stock.quant) Always present data in clear tables. When asked about sales, include totals and trends. For inventory, highlight low-stock items. Respect that you have read-only access unless specified.
- Scroll to Actions → Create new action
- Click "Import from URL" and paste:
https://gateway.kmee.ai/api/v1/openapi.json
- Under Authentication, select "API Key":
- Auth Type:
API Key - Header name:
X-API-Key - Value:
your-kmee-api-key
- Auth Type:
- Click Save
Step 3: Test it
Try these prompts in your Custom GPT:
Prompt
"Show me the last 10 sales orders with amounts"
What happens
ChatGPT calls search_read on sale.order with fields [name, partner_id, amount_total, state, date_order], limit 10, ordered by date_order desc.
Prompt
"What's our total revenue this month?"
What happens
ChatGPT calls read_group on account.move with domain [["move_type","=","out_invoice"],["date",">=","2026-04-01"]], groupby date, aggregating amount_total.
Prompt
"Which products have less than 10 units in stock?"
What happens
ChatGPT calls search_read on stock.quant with domain [["quantity","<",10]], joined with product info.
Tips for better results
- ✓ Be specific in instructions — list which Odoo models and fields are available. ChatGPT performs better when it knows the schema.
- ✓ Use read_group for aggregations — instead of fetching all records and summing, use read_group which does it server-side.
- ✓ Set limits — always mention "last 10" or "top 5" to avoid fetching too much data.
- ✓ Create focused API keys — one key for sales (sale.order, crm.lead), another for accounting. Principle of least privilege.
Share with your team
In ChatGPT, you can share your Custom GPT with your team:
- Open your Custom GPT → Edit → Share
- Choose "Anyone with the link" or "Only people in my workspace"
- Share the link with your team
Everyone uses the same KMEE API key, so all requests are logged in your audit trail. For per-user tracking, create separate keys for each team member (Pro plan).