Curvo API
Your deals, meetings, actions and transcripts, over a read-only REST API.
/api/v1Quickstart
Three steps to your first response.
- 1
Get an API key
A company admin creates keys in Company Settings, under Public API.
Shellexport CURVO_API_KEY="curvo_api_..." - 2
Make a request
List your five most recently created deals.
curl "/api/v1/deals?limit=5" \ -H "Authorization: Bearer $CURVO_API_KEY" - 3
Explore
Send live requests from the console, or import the OpenAPI spec into Postman, Insomnia or a client generator.
Authentication
Send your key as a bearer token on every request.
Authorization: Bearer curvo_api_...Server-side only
A key reads company-wide data. Never ship it in a browser or mobile app.
One per integration
Revoke a single integration without breaking the others.
Rotate without downtime
Keys do not expire. Create a new one, deploy it, then revoke the old one.
Pagination and limits
List endpoints take limit and offset and return pagination.hasMore. Each key can make 60 requests per rolling minute; a 429 says how many seconds to wait in Retry-After. This loop handles both.
# Page 1, then keep adding the page size to offset while pagination.hasMore is true
curl "/api/v1/deals?limit=200&offset=0" -H "Authorization: Bearer $CURVO_API_KEY"
curl "/api/v1/deals?limit=200&offset=200" -H "Authorization: Bearer $CURVO_API_KEY"Errors
Errors come back as JSON with a message, for example { "message": "Invalid API key" }.
| Status | Meaning | What to do |
|---|---|---|
| 400 | A query parameter is invalid. | Check the types and allowed values. |
| 401 | The key is missing, malformed or revoked. | Send Authorization: Bearer curvo_api_.... |
| 403 | The Public API is off or the company is suspended. | Ask a company admin or Curvo support. |
| 404 | Unknown route, or the record is not in your company. | Check the path and ID. |
| 405 | The API is read-only. | Use GET. |
| 429 | More than 60 requests in 60 seconds on this key. | Wait Retry-After seconds, then retry. |
| 500 | Something failed on our side. | Retry with backoff. Contact support if it persists. |
| 503 | Transcript search is temporarily unavailable. | Retry later. Empty results are not a "no match". |
Data and access
What a key can see, and what Curvo records.
- Read-only. Every write method returns 405.
- Scoped to your company. Other companies' records return 404.
- Meeting and transcript results can be cached for up to 7 days.
- Each request is logged with its key, route and outcome for auditing.
Endpoints
GETAll endpoints are relative to /api/v1 and return JSON.
Deals
Meetings
Actions
Transcripts
Stuck? Email support@curvo.ai with the endpoint, the time and the status you got.