The Trama API
A REST API over your organization's data: what it reaches, what it deliberately doesn't, and where to get a key.
Trama's REST API gives you your own operation's data — opportunities, customers, conversations, quotes, catalogue and team — from outside the dashboard. It's the same data your team sees, with the same organization boundary.
It's available on every plan, at no extra cost, the free one included.
Get a key
Two minutes, from Developers in the dashboard.
Try it live
Every endpoint page has a playground: send the request from here, with your own key.
The basics
| Base URL | https://api.trama.so |
| Version | Everything hangs off /v1 |
| Format | JSON in, JSON out. Content-Type: application/json on any request with a body |
| Auth | An organization API key, as a bearer token — see Authentication |
| Spec | api.trama.so/v1/openapi.json, OpenAPI 3.1, generated from the code that serves the traffic |
curl https://api.trama.so/v1/opportunities \
-H "Authorization: Bearer $TRAMA_API_KEY"What it can do today
Read: opportunities, customers, conversations and their transcripts, quotes and their attachments, catalogue products, team members.
Write: customers (create, update, archive) and catalogue products (create, update, archive).
Everything else is read-only on purpose. The paths that create an opportunity or move a card are the ones the agent and the automations write to, and a second writer with no notion of the qualification cycle would put the board out of sync with the conversation. If you need to write there, the door is the MCP server, which goes through the Trama Agent and respects the same rules the dashboard does.
What isn't there yet
Worth knowing before you design your integration around it:
- No webhooks. Nothing calls you: you poll.
updatedAton every resource and theRetry-Afteron a 429 are what make polite polling possible. - You can't send a message. Not on WhatsApp, not on any channel. Replying to a customer goes through Trama.
- No cursor pagination. It's
limit/offsetwith atotal— see Pagination.
Conventions
- Timestamps are ISO 8601 in UTC (
2026-08-29T14:03:11.000Z). Dates without a time (a check-in, for example) are plainYYYY-MM-DDstrings. - IDs are opaque strings. Don't parse them and don't assume a format.
- Optional fields come back as
null, not absent. A field that exists in the schema is always in the response. stageis a key, not a title. Every agency renames its board columns, so the key is the stable thing to branch on.- Amounts travel with their currency next to them. Nothing is normalized for you.
Every key is bound to one organization. No request names an organization, and nothing you read or write ever leaves the one that issued the key. If you operate several, you need one key per organization.