Scopes and endpoints: contacts, labels, custom attributes, canned responses
Last updated: 11 November 2026 · 13 min read
Scopes for contacts, their labels, notes and companies, the label catalogue, custom attributes and canned responses. Put the ID from your own system in the contact's identifier: it is unique within the workspace.
Steps
-
1
How to read this article
- Paths follow
https://api.clomni.ai/v1:GET /v1/agentsmeanshttps://api.clomni.ai/v1/agents. Paths have no workspace ID, because a token belongs to one workspace. - Every request carries the
Authorization: Bearer clomni_pat_xxxheader. How to get a token: Tokens and authentication in the Developer API. - Risk: low (no personal data), medium (reads customer data or changes internal data), high (sends to customers, deletes, bulk exports, changes live settings).
- Every scope goes through review, in public apps too. More: Review: checking scopes and rejection reasons.
- "Also grants":
writeandmanagegrant thereadof the same resource.send,delete,publish,assignandrungrant nothing. - When an endpoint lists several scopes, any one of them is enough. Without the scope the API answers 403
insufficient_scopewithrequired_scopesin the body. - Every POST takes an
Idempotency-Keyheader, so a repeated request is not run twice.
- Paths follow
-
2
Read contacts (contacts:read)
Reads contacts: name, phone, email,
identifier(the ID in your system), custom attributes, labels, notes. List, search, filter, contacts online now, possible duplicates, the inboxes that can reach a contact and sync (/v1/sync/contacts) use it. Thecontact.*webhooks need it too.- Risk: medium.
- Review: goes through review. Say exactly which data you use with it, when and why.
- Also grants: nothing else.
Endpoints:
GET /v1/companies: List companiesGET /v1/companies/search: Search companiesGET /v1/companies/{company_id}: Get a companyPOST /v1/contact_inboxes/filter: Find a contact inbox by source IDGET /v1/contacts: List contactsGET /v1/contacts/active: List contacts online nowPOST /v1/contacts/filter: Filter contactsGET /v1/contacts/search: Search contactsGET /v1/contacts/{contact_id}: Get a contactGET /v1/contacts/{contact_id}/contactable_inboxes: List inboxes that can reach a contactGET /v1/contacts/{contact_id}/labels: List a contact's labelsGET /v1/contacts/{contact_id}/merge_suggestions: List possible duplicates of a contactGET /v1/contacts/{contact_id}/notes: List notesGET /v1/contacts/{contact_id}/notes/{note_id}: Get a noteGET /v1/search/contacts: Search contacts (global search)GET /v1/sync/contacts: Sync contacts
Example:
curl "https://api.clomni.ai/v1/contacts/search?q=crm-10422" \ -H "Authorization: Bearer clomni_pat_xxx"
curl "https://api.clomni.ai/v1/sync/contacts?updated_since=2026-11-10T00:00:00Z&limit=100" \ -H "Authorization: Bearer clomni_pat_xxx"
-
3
Edit contacts (contacts:write)
Creates and updates contacts, merges two contacts, writes labels and notes, links a contact to an inbox. In
PATCH,custom_attributesare merged with the existing ones; keys you do not send are kept. Deleting needscontacts:delete.- Risk: medium.
- Review: goes through review. Say exactly which data you use with it, when and why.
- Also grants:
contacts:read.
Endpoints:
POST /v1/actions/contact_merge: Merge two contactsPOST /v1/companies: Create a companyPATCH /v1/companies/{company_id}: Update a companyPOST /v1/contacts: Create a contactPATCH /v1/contacts/{contact_id}: Update a contactDELETE /v1/contacts/{contact_id}/avatar: Remove a contact's avatarPOST /v1/contacts/{contact_id}/contact_inboxes: Link a contact to an inboxPOST /v1/contacts/{contact_id}/destroy_custom_attributes: Remove custom attributes from a contactPOST /v1/contacts/{contact_id}/labels: Set a contact's labelsPOST /v1/contacts/{contact_id}/notes: Create a notePATCH /v1/contacts/{contact_id}/notes/{note_id}: Update a noteDELETE /v1/contacts/{contact_id}/notes/{note_id}: Delete a note
Example:
curl -X POST "https://api.clomni.ai/v1/contacts" \ -H "Authorization: Bearer clomni_pat_xxx" \ -H "Content-Type: application/json" \ -d '{"name": "Leyla Hasanova", "email": "[email protected]", "phone_number": "+994501234567", "identifier": "crm-10422", "custom_attributes": {"customer_tier": "gold"}}'curl -X PATCH "https://api.clomni.ai/v1/contacts/981" \ -H "Authorization: Bearer clomni_pat_xxx" \ -H "Content-Type: application/json" \ -d '{"custom_attributes": {"customer_tier": "platinum"}}' -
4
Import contacts (contacts:import)
Bulk imports contacts from a CSV file: the file goes as
multipart/form-datain theimport_filefield and the import runs in the background. To create contacts one by one,contacts:writeis enough.- Risk: medium.
- Review: goes through review. Say exactly which data you use with it, when and why.
- Also grants: nothing else.
Endpoints:
POST /v1/contacts/import: Import contacts from a CSV file
Example:
curl -X POST "https://api.clomni.ai/v1/contacts/import" \ -H "Authorization: Bearer clomni_pat_xxx" \ -F "[email protected]"
-
5
Delete contacts (contacts:delete)
Deletes a contact together with its conversations; it cannot be undone. Deleting a company also uses this scope.
- Risk: high.
- Review: goes through review and gets a closer look. A detailed explanation and a short video of the feature are needed; the target is 2 working days.
- Also grants: nothing else.
Endpoints:
DELETE /v1/companies/{company_id}: Delete a companyDELETE /v1/contacts/{contact_id}: Delete a contact
Example:
curl -X DELETE "https://api.clomni.ai/v1/contacts/981" \ -H "Authorization: Bearer clomni_pat_xxx"
-
6
Read labels (labels:read)
Reads the list of labels. For showing conversation and contact labels and building filters.
- Risk: low.
- Review: goes through review; low risk scopes are looked at quickly.
- Also grants: nothing else.
Endpoints:
GET /v1/labels: List labelsGET /v1/labels/{label_id}: Get a label
Example:
curl "https://api.clomni.ai/v1/labels" \ -H "Authorization: Bearer clomni_pat_xxx"
-
7
Edit labels (labels:write)
Creates, changes and deletes labels. Putting a label on a conversation or a contact is not this scope: that needs
conversations:writeorcontacts:write.- Risk: low.
- Review: goes through review; low risk scopes are looked at quickly.
- Also grants:
labels:read.
Endpoints:
POST /v1/labels: Create a labelPATCH /v1/labels/{label_id}: Update a labelDELETE /v1/labels/{label_id}: Delete a label
Example:
curl -X POST "https://api.clomni.ai/v1/labels" \ -H "Authorization: Bearer clomni_pat_xxx" \ -H "Content-Type: application/json" \ -d '{"title": "vip", "description": "Key customers", "color": "#ff9f1c", "show_on_sidebar": true}' -
8
Read canned responses (canned_responses:read)
Reads canned responses: short code and text. For offering agents canned responses in your own dashboard.
- Risk: low.
- Review: goes through review; low risk scopes are looked at quickly.
- Also grants: nothing else.
Endpoints:
GET /v1/canned_responses: List canned responses
Example:
curl "https://api.clomni.ai/v1/canned_responses" \ -H "Authorization: Bearer clomni_pat_xxx"
-
9
Edit canned responses (canned_responses:write)
Creates, changes and deletes canned responses. For example, keeping them up to date from your own knowledge system.
- Risk: medium.
- Review: goes through review. Say exactly which data you use with it, when and why.
- Also grants:
canned_responses:read.
Endpoints:
POST /v1/canned_responses: Create a canned responsePATCH /v1/canned_responses/{canned_response_id}: Update a canned responseDELETE /v1/canned_responses/{canned_response_id}: Delete a canned response
Example:
curl -X POST "https://api.clomni.ai/v1/canned_responses" \ -H "Authorization: Bearer clomni_pat_xxx" \ -H "Content-Type: application/json" \ -d '{"short_code": "hello", "content": "Hello! How can we help you?"}' -
10
Read custom attributes (custom_attributes:read)
Reads custom attribute definitions: key, name, type, allowed values, whether it is a contact or a conversation field. The values themselves come in the contact and conversation objects.
- Risk: low.
- Review: goes through review; low risk scopes are looked at quickly.
- Also grants: nothing else.
Endpoints:
GET /v1/custom_attribute_definitions: List custom attribute definitionsGET /v1/custom_attribute_definitions/{custom_attribute_definition_id}: Get a custom attribute definition
Example:
curl "https://api.clomni.ai/v1/custom_attribute_definitions?attribute_model=contact_attribute" \ -H "Authorization: Bearer clomni_pat_xxx"
-
11
Edit custom attributes (custom_attributes:write)
Creates, changes and deletes custom attributes. For example, adding a key in Clomni for a field from your CRM.
- Risk: medium.
- Review: goes through review. Say exactly which data you use with it, when and why.
- Also grants:
custom_attributes:read.
Endpoints:
POST /v1/custom_attribute_definitions: Create a custom attribute definitionPATCH /v1/custom_attribute_definitions/{custom_attribute_definition_id}: Update a custom attribute definitionDELETE /v1/custom_attribute_definitions/{custom_attribute_definition_id}: Delete a custom attribute definition
Example:
curl -X POST "https://api.clomni.ai/v1/custom_attribute_definitions" \ -H "Authorization: Bearer clomni_pat_xxx" \ -H "Content-Type: application/json" \ -d '{"attribute_display_name": "Customer tier", "attribute_key": "customer_tier", "attribute_display_type": "list", "attribute_values": ["silver", "gold", "platinum"], "attribute_model": "contact_attribute"}' -
12
About companies
The company endpoints (
/v1/companies) open with thecontacts:*scopes and stay in the catalogue. The Companies section, however, is no longer in the dashboard since 5 November 2026, so do not build new integrations on it. Keeping company details in a contact custom attribute is safer. - 13