Carom API
The Carom API reads and updates the records Carom keeps for your team: contacts, organizations, deals, threads, files, tasks, and the rest. API keys can call every operation in this reference. A few operations are available only in the Carom app; Authentication lists them.
Every request is made over HTTPS to https://api.carom.io and authenticated with an API key that acts as the user who created it. The OpenAPI 3.1 specification describes the same operations in machine-readable form.
#Make a first request
Create an API key in the Carom app under Settings › API keys. Carom shows the key once, when you create it. Keep it somewhere safe, such as an environment variable:
export CAROM_API_KEY=carom_sk_…
Then send it as a bearer token. Retrieve your key’s user is a good first call: it needs only a read key, and its response shows which user the key acts as.
A 401 unauthorized means the key is missing, mistyped, revoked, or expired. A 403 api_access_disabled means an admin has turned API access off for your account. Authentication covers keys in full.
Next steps
Read Authentication to choose a key tier, then Errors and Pagination. A good second call is List contacts.
curl https://api.carom.io/users/current \
-H "Authorization: Bearer $CAROM_API_KEY"
{
"user": {
"id": "9c41d2e8-3f6a-4b7c-8d1e-5a2f7b9c0d3e",
"first_name": "Dana",
"last_name": "Whitfield",
"email_address": "dana@harborline.example",
"is_admin": true,
"is_owner": false,
"status": "active",
…
}
}
#Conventions
JSON in, JSON out
Request and response bodies are JSON. Send Content-Type: application/json with any request that has a body; any other content type gets 415 unsupported_media_type. An Accept header, if you send one, must allow application/json, or the request gets 406 not_acceptable. Most bodies wrap the attributes in a key named after the resource, such as {"contact": {…}}, and single-record responses are wrapped the same way.
Identifiers
Every id is a UUID string. References to other records use the same ids, in attributes named after the record, such as contact_id or pipeline_id. An id in the path that isn’t a valid UUID returns 404 record_not_found, the same as an id that doesn’t exist. The path names the record an operation acts on; a body key with the same name as a path parameter must match it or be left out.
Dates and times
Dates are ISO 8601 calendar dates, such as 2026-09-04. Timestamps are ISO 8601 date-times in UTC, such as 2026-09-04T21:17:09.332Z. Send dates and timestamps in ISO 8601 as well.
Empty values
Unless an attribute is marked as appearing only in some responses, it is always present, and null when it has no value.
Lists
List endpoints return a collection object with the page of records and the information you need to fetch the next page. Some lists page with an opaque cursor, others by page number, and a few return every record in one response. Pagination explains each.
Key tiers
Each operation is marked Read key or Write key. A read key can call operations marked Read key. A read/write key can call both. See Read and write keys. An account admin can limit every key in the account to reading, or turn API access off; see Account API access.
Status codes
A successful request answers 200, or 201 when it creates a record. Most deletes answer 204 with no body. An operation that starts work Carom finishes later, such as generating a briefing, answers 202. HTTP statuses lists every status.
Rate limit
Each API key can make 600 requests a minute. Over the limit, requests get 429 rate_limited; wait the number of seconds in the Retry-After header, then try again. See Rate limits.
Test mode
There is no test mode: every request reads and changes your account’s real data, so use a read key while you build.
Versions
The API has a single version; there is no version parameter or header.
Errors
A failed request returns a 4xx or 5xx status and an error object with a stable code and a readable message. Branch on the code. Errors lists the codes any request can return; each operation lists its own.
#Resources
Each page documents one resource: its object, its operations, and the errors they return.
Start here
Records
- ContactsPeople your team corresponds with, assembled from connected mailboxes.
- DuplicatesContacts Carom suspects are the same person, and the pairs you’ve rejected.
- OrganizationsCompanies your contacts work for.
- DealsOpportunities with one contact or organization, moved through a pipeline’s stages.
- PipelinesOrdered sets of stages, each open, won, or lost, that deals move through.
- MilestonesGoals that group tasks, with a due date and a visibility setting.
- SpacesWorkspaces that collect records by tag, contact, or organization.
- TasksAction items, linked to a contact, organization, deal, or other record.
Correspondence
- ThreadsEmail conversations from connected mailboxes.
- DraftsUnsent emails, either new messages or replies to a thread.
- MailboxesConnected email accounts, who can use them, and imports of their mail.
- Calendar eventsMeetings from connected calendars, with the briefs Carom writes for them and their transcripts.
- CalendarsThe calendars of connected mailboxes, and whether Carom syncs each one.
- FilesEmail attachments Carom keeps as files, with download links.
Collaboration
- CommentsInternal notes your team leaves on records, and reactions to them.
- TagsLabels for contacts, organizations, deals, threads, files, and calendar events.
- PinsPer-user bookmarks on contacts, organizations, deals, and other records.
- SharesAccess to a record granted to another user or group.
- Share requestsRequests asking teammates to share their correspondence with a contact.
- GroupsNamed sets of users, used when sharing records and assigning tasks.
Intelligence
- SearchText search across contacts, organizations, deals, threads, and files.
- TimelineA feed of activity across your records, or for one contact, organization, deal, or space.
- DashboardYour incomplete tasks due by the end of the week, grouped as overdue, today, tomorrow, and later.
- Daily briefingThe briefing Carom writes for your key’s user each day, and on request.
- ProposalsChanges Carom’s agents suggest, such as advancing a deal’s stage, for you to accept or reject.
- ConversationsChats with Ask Carom, the assistant that answers questions about your records.
- Agent configurationsAccount-wide settings for Carom’s background agents. Admins only.