Which scopes you need: scopes and endpoints by what you want to do
Last updated: 11 November 2026 · 27 min read
A scope says what an app is allowed to do. Find what you want to do in this article: next to it you see which scopes to ask for, the risk, what the review looks at and which endpoints to call. You create the app on developer.clomni.ai, see Create an app on developer.clomni.ai: step by step.
Steps
-
1
The main rule: ask only for the scopes you need
Every scope is checked on its own. The reviewer looks at whether each scope is tied to the feature you describe and asks why you need
writeif reading would do. An unneeded scope is rejected with "R01: this permission is not needed for the feature you describe".Why fewer scopes help:
- the review is faster: each scope needs its own explanation of at least 100 characters, a high risk scope also needs a video, and low risk scopes are looked at quickly;
- if a token leaks, the damage stays within those scopes;
- the administrator connecting a public app sees clearly on the consent screen what the app will do.
How to choose:
- If reading is enough, do not ask for
write.writeandmanagegrant thereadof the same resource, so a token withcontacts:writecan read contacts too. - If you use webhooks, ask for the topic's read scope (for example
contacts:read) explicitly: when you pick a topic, the portal checks that the read scope itself is approved. send,delete,publish,assignandrungrant nothing else. For example,messages:senddoes not allow reading messages.- You can add a scope later: a Live app stays Live, the old scopes keep working and only the new scope goes to review. In a public app a new scope does not reach existing installations by itself; the administrator has to connect the app again.
- Remove scopes you do not need: removing needs no review and takes effect at once.
- Before the review, try things on your workspace's test channel:
messages:sendandconversations:writework there before their review. See Test channel: try your app without real customers.
-
2
What risk and review mean
- Low risk: no customer personal data, configuration or totals. For example
reports:read,labels:read. - Medium risk: reads customer data or message text, or changes internal data only. For example
conversations:read,contacts:write. - High risk: sends to customers, deletes, exports in bulk, changes access or live AI, flow or rule settings. For example
messages:send,exports:run,agents:manage.
Every scope goes through review, low risk ones too. Low risk scopes are looked at quickly. High risk needs a detailed explanation and a short video of the feature; the target is 2 working days. In a public app every scope goes through review as well. More: Review: checking scopes and rejection reasons.
- Low risk: no customer personal data, configuration or totals. For example
-
3
Presets
When creating an app you can pick a preset: it selects the scopes for you, and you then remove the ones you do not need. You do not have to keep every scope in a preset.
- "Clomni in my own panel":
conversations:read,conversations:write,conversations:assign,messages:read,messages:send,notes:write,contacts:read,contacts:write,inboxes:read,agents:read,teams:read,labels:read,canned_responses:read,webhooks:write. - "CRM sync":
contacts:read,contacts:write,custom_attributes:read,conversations:read,messages:read,webhooks:write. - "BI and reporting":
reports:read,csat:read,conversations:read,agents:read,teams:read,inboxes:read. - "Data export":
exports:run,events:read. - "AI management":
ai_agents:read,ai_agents:write,ai_agents:train,knowledge:read,knowledge:write,ai_logs:read.
- "Clomni in my own panel":
-
4
1. Pull messages and conversations into another system
You copy conversations and messages into your own database for a warehouse, an archive or analytics. Load everything once with the sync endpoints, then fetch only what changed with
updated_since. Add themessage.createdwebhook to get new messages right away.- Minimal scopes:
conversations:read,messages:read. - Add if needed:
contacts:read(if you also need the contact's phone and email);events:read(to recover events missed while your server was down). - Risk: medium. In the review, say for each scope which data you use and why.
Main endpoints:
GET /v1/sync/conversations: Sync conversationsGET /v1/sync/messages: Sync messagesGET /v1/conversations/{conversation_id}/messages: List messages in a conversation
More: Recipe: export your history and keep it in sync, Scopes and endpoints: conversations and messages.
- Minimal scopes:
-
5
2. Move the whole history once
When moving to another system or keeping an archive, you get conversations, messages and contacts in one file. The export is built in the background and the file link works for 1 hour. An export is not an ongoing sync: for later changes use the sync path above.
- Minimal scopes:
exports:run. - Add if needed:
events:read(to catch events after the export, together with each topic's read scope). - Risk: high (
exports:run). The review needs a detailed explanation and a short video of the feature.
Main endpoints:
POST /v1/exports: Start an exportGET /v1/exports/{export_id}: Get an export
More: Recipe: export your history and keep it in sync, Scopes and endpoints: calls, webhooks, events, exports.
- Minimal scopes:
-
6
3. Keep contacts in sync with your CRM
You keep contacts aligned between Clomni and the CRM: the CRM ID goes into the contact's
identifier, changes come through sync and webhooks, and the CRM writes back to Clomni. If data only flows from Clomni to the CRM, do not ask forcontacts:write.- Minimal scopes:
contacts:read,contacts:write,custom_attributes:read. - Add if needed:
conversations:read(if the CRM shows the conversation list);messages:read(if the CRM shows the message text). - Risk: medium. In the review, say for each scope which data you use and why.
Main endpoints:
GET /v1/sync/contacts: Sync contactsGET /v1/contacts/search: Search contactsPOST /v1/contacts: Create a contactPATCH /v1/contacts/{contact_id}: Update a contactGET /v1/custom_attribute_definitions: List custom attribute definitions
More: Recipe: sync contacts with your CRM, Scopes and endpoints: contacts, labels, custom attributes, canned responses.
- Minimal scopes:
-
7
4. Send WhatsApp notifications and verification codes from your website or system
You send order, delivery and verification code messages from a WhatsApp Business API (Cloud) number. If the customer has not written in the last 24 hours, only an approved template goes out. A QR-linked number cannot send through this API. If you only send text inside an open window and never a template,
messages:sendis enough instead ofmessages:send.template.- Minimal scopes:
messages:send.template. - Add if needed:
channels:read(to findchannel_idthrough the API; the ID is also shown in the dashboard);messages:read(to check message status and the 24 hour window, and for themessage.*webhooks);messages:send(if you send text together withfallback_template). - Risk: high (
messages:send.template). The review needs a detailed explanation and a short video of the feature.
Main endpoints:
GET /v1/whatsapp/channels: List WhatsApp numbersGET /v1/whatsapp/templates: List approved WhatsApp templatesGET /v1/whatsapp/messages/window: Check the 24 hour window for a numberPOST /v1/whatsapp/messages: Send a WhatsApp message to a numberGET /v1/whatsapp/messages/{message_id}: Get a WhatsApp message's status
More: Recipe: send WhatsApp notifications and templates from your website, Scopes and endpoints: conversations and messages.
- Minimal scopes:
-
8
5. Reply in an open conversation from your own system
Your system writes into the customer's conversation, for example an order status. The message goes out on the conversation's channel: WhatsApp, Instagram, Messenger, email, chat. Sending happens in the background and the result arrives with the
message.updatedwebhook. A message sent through the API shows under the token owner's name.- Minimal scopes:
messages:send,conversations:read. - Add if needed:
messages:read(to read the chat before replying and for the status webhook). - Risk: high (
messages:send). The review needs a detailed explanation and a short video of the feature.
Main endpoints:
GET /v1/conversations/search: Search conversationsPOST /v1/conversations/{conversation_id}/messages: Send a message or add a private notePOST /v1/conversations/{conversation_id}/messages/{message_id}/retry: Retry a failed message
More: Recipe: show Clomni conversations in your own dashboard, Scopes and endpoints: conversations and messages.
- Minimal scopes:
-
9
6. Connect your own AI bot to Clomni conversations
Your bot gets new messages by webhook, writes the reply into the conversation and hands the conversation to an agent or a team when it cannot help. A bot can also be connected with just a webhook URL, without a developer app: see "Connect your own bot to a channel (agent bot)". Clomni's own AI agent needs no code at all.
- Minimal scopes:
messages:read,messages:send,conversations:assign. - Add if needed:
conversations:write(to change the conversation status:pendingwhile the bot talks,openwhen handing over);notes:write(to leave a private note for agents);contacts:read(to know the customer's name and custom attributes). - Risk: high (
messages:send). The review needs a detailed explanation and a short video of the feature.
Main endpoints:
GET /v1/conversations/{conversation_id}/messages: List messages in a conversationPOST /v1/conversations/{conversation_id}/messages: Send a message or add a private notePOST /v1/conversations/{conversation_id}/toggle_status: Change a conversation's statusPOST /v1/conversations/{conversation_id}/assignments: Assign a conversation
More: Recipe: AI agent answers, the knowledge base and your own bot, Connect your own bot to a channel (agent bot).
- Minimal scopes:
-
10
7. Use the Clomni AI agent on your own website or app
You ask the AI agent built in Clomni a question and show the answer in your own product. The agent answers with the same instructions and knowledge base and writes nothing into any conversation. Every answer is charged to the workspace's AI credit.
- Minimal scopes:
ai_agents:read,ai_agents:ask. - Add if needed:
billing:read(to watch the remaining AI credit). - Risk: medium. In the review, say for each scope which data you use and why.
Main endpoints:
GET /v1/ai_agents: List AI agentsPOST /v1/ai_agents/{ai_agent_id}/ask: Ask an AI agentGET /v1/ai_credits: Get the AI credit balance
More: Recipe: AI agent answers, the knowledge base and your own bot, Scopes and endpoints: AI agents, knowledge base, help center.
- Minimal scopes:
-
11
8. Keep the AI agent's knowledge base up to date automatically
When a policy, price or product page on your site changes, your system adds the new link or file to the knowledge base, removes the old one and writes FAQs. A document is read in the background and can take a few minutes.
- Minimal scopes:
knowledge:write,ai_agents:read. - Add if needed:
ai_agents:train(to add FAQs and check them with test runs). - Risk: medium. In the review, say for each scope which data you use and why.
Main endpoints:
GET /v1/knowledge: List knowledge base documentsPOST /v1/knowledge: Add a document or linkDELETE /v1/knowledge/{document_id}: Delete a knowledge base documentPOST /v1/ai_agent_faqs: Create a FAQ entry
More: Recipe: AI agent answers, the knowledge base and your own bot, Scopes and endpoints: AI agents, knowledge base, help center.
- Minimal scopes:
-
12
9. Monitor the AI agent's quality
You pull the questions the agent could not answer, answer reviews and results into your own dashboard or report. To test the agent regularly with test questions, add
ai_agents:train; test runs use AI credit.- Minimal scopes:
ai_logs:read,ai_agents:read. - Add if needed:
ai_agents:train(to run test questions). - Risk: medium. In the review, say for each scope which data you use and why.
Main endpoints:
GET /v1/ai_agents/{ai_agent_id}/gaps: List questions an AI agent could not answerGET /v1/ai_agents/{ai_agent_id}/reviews: List AI answer reviewsGET /v1/ai_agents/{ai_agent_id}/results: Get an AI agent's resultsPOST /v1/ai_agents/{ai_agent_id}/test_runs: Start a test run
More: Scopes and endpoints: AI agents, knowledge base, help center.
- Minimal scopes:
-
13
10. Pull reports into Power BI or another BI tool
You pull conversation counts, first response and resolution times, totals per agent, inbox and team into your BI tool. Totals hold no customer personal data, so
reports:readis low risk. To show names, read the agent, team and inbox lists. If you need a row per conversation, add the sync path (the first want).- Minimal scopes:
reports:read,agents:read,teams:read,inboxes:read. - Add if needed:
csat:read(if you also need satisfaction ratings);sla:read(to show SLA breaches). - Risk: low. All low risk, the review is quick.
Main endpoints:
GET /v1/reports: Get a report time seriesGET /v1/reports/summary: Get report totalsGET /v1/reports/agents: Get report totals per agentGET /v1/summary_reports/team: Get the summary report per teamGET /v1/csat_survey_responses/metrics: Get CSAT totals
More: Scopes and endpoints: reports, CSAT, SLA, Recipe: export your history and keep it in sync.
- Minimal scopes:
-
14
11. Show Clomni conversations in your own agent dashboard
Your agents read the customer chat inside your own internal system, reply, resolve and assign. When creating the app, pick the "Clomni in my own panel" preset and remove what you do not need.
- Minimal scopes:
conversations:read,conversations:write,conversations:assign,messages:read,messages:send. - Add if needed:
notes:write(for private notes);agents:read(for the list of agents to assign);teams:read(to assign to a team);canned_responses:read(for picking canned responses). - Risk: high (
messages:send). The review needs a detailed explanation and a short video of the feature.
Main endpoints:
GET /v1/conversations: List conversationsGET /v1/conversations/{conversation_id}/messages: List messages in a conversationPOST /v1/conversations/{conversation_id}/messages: Send a message or add a private notePOST /v1/conversations/{conversation_id}/toggle_status: Change a conversation's statusPOST /v1/conversations/{conversation_id}/assignments: Assign a conversation
More: Recipe: show Clomni conversations in your own dashboard, Scopes and endpoints: conversations and messages.
- Minimal scopes:
-
15
12. Prepare and send campaigns
You create the campaign from your system as a draft, then send it and read the results. If you only prepare drafts and a person sends from the dashboard, do not ask for
campaigns:sendand create withenabled: false.- Minimal scopes:
campaigns:write,campaigns:send. - Add if needed:
labels:read(to choose the audience by label);inboxes:read(to choose the inbox the campaign goes from). - Risk: high (
campaigns:send). The review needs a detailed explanation and a short video of the feature.
Main endpoints:
POST /v1/campaigns: Create a campaignPOST /v1/campaigns/{campaign_id}/publish: Publish a campaignGET /v1/campaign_results: List campaign resultsGET /v1/campaign_results/{campaign_result_id}/contacts: List a campaign's recipients and their status
- Minimal scopes:
-
16
13. Write call records into your CRM
You pull the log of phone and WhatsApp calls (direction, status, length, the agent who answered) into the CRM. If you need the data the moment a call ends, with its recording and transcript, set up the workspace's call webhooks instead of a developer app.
- Minimal scopes:
calls:read. - Add if needed:
conversations:read(to find the conversation a call belongs to). - Risk: high (
calls:read). The review needs a detailed explanation and a short video of the feature.
Main endpoints:
GET /v1/voice_calls: List phone callsGET /v1/whatsapp_calls: List WhatsApp callsGET /v1/whatsapp_calls/{call_id}: Get a WhatsApp call
More: Scopes and endpoints: calls, webhooks, events, exports, Call webhooks: send your calls to your own system.
- Minimal scopes:
-
17
14. Manage help center articles
The customer help site (portal) is not in any Clomni package since 5 November 2026 and is not shown in the dashboard. The
help_center:*scopes stay in the catalogue, but do not tie new integrations to them. If the goal is answering customer questions automatically, keep the knowledge base up to date (the want above).- Minimal scopes:
knowledge:write,ai_agents:read. - Risk: medium. In the review, say for each scope which data you use and why.
Main endpoints:
GET /v1/knowledge: List knowledge base documentsPOST /v1/knowledge: Add a document or link
More: Scopes and endpoints: AI agents, knowledge base, help center.
- Minimal scopes:
-
18
15. Manage and switch on flows from code
You create, check and switch on flows and read their statistics. There is no endpoint that starts a flow for a given customer: a trigger (keyword, event), an agent, the AI agent or the mobile app (
Clomni.startFlow) starts it. If you only need statistics,flows:readis enough.- Minimal scopes:
flows:write,flows:publish. - Risk: high (
flows:publish). The review needs a detailed explanation and a short video of the feature.
Main endpoints:
GET /v1/flows: List flowsGET /v1/flows/{flow_id}/check: Check a flow for problemsPOST /v1/flows/{flow_id}/publish: Turn a flow on or offGET /v1/flows/{flow_id}/analytics/funnel: Get a flow's step funnel
- Minimal scopes:
-
19
16. Keep automation rules in code
You create and change rules from your system. Create them with
active: false: the rule stays a draft andautomations:publishis not needed. If switching rules on is also your job, addautomations:publish.- Minimal scopes:
automations:write. - Add if needed:
automations:publish(to switch rules on and delete them). - Risk: medium. In the review, say for each scope which data you use and why.
Main endpoints:
GET /v1/automation_rules: List automation rulesPOST /v1/automation_rules: Create an automation rulePATCH /v1/automation_rules/{automation_rule_id}: Update an automation rule
- Minimal scopes:
-
20
17. Manage agents and teams from an HR system
When someone joins you invite them as an agent and add them to teams and inboxes; when they leave you remove them from the workspace. If you only read the lists,
agents:readandteams:readare enough.- Minimal scopes:
agents:manage,teams:write. - Add if needed:
inboxes:write(to add agents to inboxes and remove them). - Risk: high (
agents:manage). The review needs a detailed explanation and a short video of the feature.
Main endpoints:
POST /v1/agents: Invite an agentPATCH /v1/agents/{agent_id}: Change an agent's role or availabilityDELETE /v1/agents/{agent_id}: Remove an agent from the workspacePOST /v1/teams/{team_id}/team_members: Add agents to a teamPOST /v1/inbox_members: Add agents to an inbox
- Minimal scopes:
-
21
18. Get live notifications by webhook
Clomni sends a request to your server the moment a new message, a new conversation, a status change or a contact change happens. You set the webhook URL on the developer portal, in the app's "Webhooks" section. Each topic needs its own read scope:
messages:readformessage.*,conversations:readforconversation.*,contacts:readforcontact.*. Ask only for the scopes of the topics you use.- Minimal scopes:
messages:read. - Add if needed:
conversations:read(for theconversation.*topics);contacts:read(for thecontact.*topics);events:read(to fetch missed events from the feed within 30 days). - Risk: medium. In the review, say for each scope which data you use and why.
Main endpoints:
GET /v1/events: List events
More: App webhooks and events: setup, topics, signature verification, Scopes and endpoints: calls, webhooks, events, exports.
- Minimal scopes:
-
22
19. Get alerted when a channel drops
You check regularly whether a WhatsApp number or another channel is connected and raise an alert in your own monitoring. One low risk scope is enough.
- Minimal scopes:
channels:read. - Add if needed:
inboxes:read(to show inbox names). - Risk: low. All low risk, the review is quick.
Main endpoints:
GET /v1/whatsapp/channels: List WhatsApp numbersGET /v1/inboxes/{inbox_id}/health: Get the channel's health
- Minimal scopes:
-
23
20. Leave a private note for agents from your order system
When an order, payment or delivery changes, your system writes a note into the conversation that the customer never sees. The agent sees the situation while replying.
notes:writeis low risk and sends nothing to the customer.- Minimal scopes:
notes:write,conversations:read. - Risk: medium. In the review, say for each scope which data you use and why.
Main endpoints:
GET /v1/conversations/search: Search conversationsPOST /v1/conversations/{conversation_id}/messages: Send a message or add a private note
- Minimal scopes:
-
24
21. Bulk import contacts
You upload a CSV file from an old system or a spreadsheet in one request and the import runs in the background. If you create and update contacts one by one, you need
contacts:write, notcontacts:import.- Minimal scopes:
contacts:import. - Risk: medium. In the review, say for each scope which data you use and why.
Main endpoints:
POST /v1/contacts/import: Import contacts from a CSV file
More: Scopes and endpoints: contacts, labels, custom attributes, canned responses.
- Minimal scopes:
-
25
22. Copy the audit log into a security system
You read who changed what and when on a schedule and keep it in your security or compliance system.
- Minimal scopes:
audit_logs:read. - Risk: medium. In the review, say for each scope which data you use and why.
Main endpoints:
GET /v1/audit_logs: List audit log entries
- Minimal scopes:
-
26
What the API cannot do
These are closed to developer tokens on purpose. A request to such an endpoint returns 403
endpoint_not_available.- creating and deleting a workspace, changing the package and billing;
- reading channel secrets and connecting channels through the API (
channels:managehas no endpoint of its own); - agent bots and their tokens, integrations and their OAuth authorizations;
- profile, password, access tokens, signing in as another user;
- the workspace's own webhooks: a developer app has its own webhook with topics;
- bulk actions, notifications and each user's personal screens;
- placing calls from the API;
- the SSO company portal, AI apps (MCP) settings and tokens, managing developer apps themselves;
- WhatsApp bulk sending (
bulk_messages): it lives in the separate WhatsApp API that works with a profile API key, see Bulk sending with the WhatsApp API (bulk_messages); - starting a flow in a given conversation.
-
27
Related articles
- Scopes and endpoints: workspace, agents, teams
- Scopes and endpoints: inboxes and channels
- Scopes and endpoints: conversations and messages
- Scopes and endpoints: contacts, labels, custom attributes, canned responses
- Scopes and endpoints: reports, CSAT, SLA
- Scopes and endpoints: campaigns, flows, automations
- Scopes and endpoints: AI agents, knowledge base, help center
- Scopes and endpoints: calls, webhooks, events, exports
- Recipe: sync contacts with your CRM
- Recipe: send WhatsApp notifications and templates from your website
- Recipe: AI agent answers, the knowledge base and your own bot
- Recipe: export your history and keep it in sync
- Recipe: show Clomni conversations in your own dashboard
- Review: checking scopes and rejection reasons
- Tokens and authentication in the Developer API