Skip to content

Integrations

HighLevel

Set up HighLevel (GoHighLevel) OAuth for CRM, messaging, and marketing automation

Connect end users’ HighLevel sub-accounts and agencies for contacts, conversations, calendars, opportunities, invoices, and marketing automation. HighLevel was formerly called GoHighLevel; its API is served from services.leadconnectorhq.com.

This page covers a HighLevel Marketplace app (OAuth). To store a token a HighLevel account creates for itself, see HighLevel Private Integration Token.

PropertyValue
Provider IDgohighlevel
CategoryCRM
PKCENot supported
Token refreshAutomatic
Redirect URIShown in Developer Portal

Step 1: Create a HighLevel Marketplace app

Section titled “Step 1: Create a HighLevel Marketplace app”

Go to the HighLevel Marketplace

Sign in to the HighLevel Marketplace developer portal, open My Apps, and click Create App.

Choose the target user

Set Target User to Sub-account, HighLevel’s recommendation for most apps. It cannot be changed later. New apps can be bulk-installed by agencies, and that setting cannot be turned off, so an agency user who connects the app gives an agency-level token while a sub-account user gives a sub-account token (see The connected account).

Add the redirect URL

Under Advanced Settings → Auth, paste the Alter callback URL from the Developer Portal into Redirect URL and click Add.

Select scopes

On the same Auth page, open Select Scope and choose the scopes the application needs. Select the same scopes in Alter in Step 2.

Get credentials

On the same Auth page, under Client Keys, click Add, name the key pair, and copy the Client ID and Client Secret. HighLevel shows the secret only once.

Open the Developer Portal

Go to portal.alterauth.com and navigate to the application.

Add HighLevel provider

Go to OAuth Providers > Add Provider > HighLevel.

Enter credentials

  • Client ID: the HighLevel app’s Client ID
  • Client Secret: the HighLevel app’s Client Secret

Select scopes

Choose the same scopes you selected on the HighLevel app.

Save

Click Save. The provider is now active.

Every HighLevel API call needs a Version header: v3 (the current version), or a date version such as 2021-07-28. Alter injects the access token; send Version with each request.

response = await alter_app.request(
HttpMethod.GET,
"https://services.leadconnectorhq.com/locations/LOCATION_ID",
grant_id="YOUR_GRANT_ID",
extra_headers={"Version": "v3"},
)

A call without Version, a call that needs a scope the connection lacks, and an agency token calling a sub-account API all come back from HighLevel as 401. Alter returns these to the caller as HighLevel’s response and does not treat them as a revoked connection; only a rejected access token marks the connection for reconnect.

request hands the token to the application, which then calls HighLevel itself, so Alter never sees the request. Alter can only enforce an approval rule, a method and endpoint restriction, or a content rule (one that names an operation, a family, or a request field) on a call it makes itself. Once any such rule applies to the grant, at any level, every request on that grant is refused with RestrictedGrantRequiresProxyError (errors). Use proxy_request for a grant that carries the rules in Policy: it sends the whole request to Alter, which checks it against the rules, injects the token, and calls HighLevel.

result = await alter_app.proxy_request(
HttpMethod.POST,
"https://services.leadconnectorhq.com/conversations/messages",
grant_id="YOUR_GRANT_ID",
extra_headers={"Version": "v3"},
json={
"type": "SMS",
"contactId": "CONTACT_ID",
"toNumber": "+15555550100",
"message": "The appointment is confirmed for 3 PM.",
},
reason="Confirm the contact's appointment by SMS",
)

proxy_request returns an ApprovalResult with HighLevel’s status_code and body (result.body_json()), or a PendingApproval when a rule requires a person to approve the call first; see human-in-the-loop approvals. A recipients rule judges the body Alter sends, so it works only through proxy_request.

Who connects the app decides the kind of token, and therefore the connected account:

  • A sub-account user gives a sub-account (Location) token, bound to that sub-account. Alter records the connection as location:<locationId>, with the locationId as its account identifier.
  • An agency user gives an agency (Company) token. Alter records the connection as company:<companyId>, with the companyId as its account identifier. Agency APIs (such as creating a sub-account) take this token directly; sub-account APIs refuse it.

HighLevel’s way to reach a sub-account from an agency token, POST /oauth/location-token (/oauth/locationToken in earlier API versions), returns a new HighLevel access token and refresh token to the caller. Alter always refuses it through the proxy, together with the token exchange POST /oauth/token, because an agent holding those tokens would act outside Alter’s storage, policy, and revocation. To call a sub-account’s APIs, have a user of that sub-account connect it.

Reconnecting the same sub-account or agency reuses its connection.

Every call made with a HighLevel grant runs through Alter’s policy rules: method and endpoint restrictions, IP allowlists, time windows, quotas, human approval, AI review, and content rules that deny, redact, or require step-up. Rules can be attached to the organization, the application, an agent, a grant, an end user, or the HighLevel provider configuration. Content rules can name a HighLevel operation from the table below, a family, or a request field:

FamilyHighLevel operations it covers
readEvery GET, plus the read-only POST searches and lookups (contacts, opportunities, object records, tasks, users by email, Social Planner lists and statistics, shipping-rate quotes, keyword ideas, calendar-group slug validation)
writeEvery create and update
deleteEvery DELETE, plus bulk deletion of social posts and media files, the bulk product update (its type can delete products), and the bulk contact tag update (it can remove tags)
sendCalls that themselves deliver something to a person: sending a conversation message, review replies (Google and product reviews), live-chat typing, adding a contact to a campaign or workflow, scheduling or editing an email campaign, sending invoices and estimates (including saving an estimate with sendEstimateDetails), order fulfillments (notifyCustomer), sending documents for signature, booking, rescheduling, or cancelling appointments and service bookings, Social Planner posts, comments, likes, and publishing queues, blog posts, publishing or resuming ads (including Google and LinkedIn campaign upserts, which can publish, LinkedIn ad status changes, and LinkedIn lead forms), and running an AI agent
paymentWrites that bill, charge, or change what anyone pays: invoices (create, update, delete, void, send, record payment), estimates (which can auto-invoice), recurring invoice schedules and auto-payment, invoice templates and their late-fee and payment-method settings, order payments, coupons, product prices (including a product update that changes them) and the bulk product update, service and calendar payment settings, shipping rates, wallet charges, billed email verification, payment providers, SaaS subscriptions and rebilling, phone-number purchases, and ad campaigns, budgets, and audiences
adminSub-accounts and their permissions, custom fields and values, users, custom menus, chat widgets, snapshots, app installations, OAuth tokens, SaaS configuration, payment providers (including reading the stored payment-provider keys), the phone system, Conversation AI and Voice AI agents, AI Agent Studio agent definitions and promotion, store settings, who is notified about bookings (calendar notification settings and the notification fields of a calendar), the social accounts Social Planner publishes to, funnel redirects, custom-object schemas, and association definitions

send covers what a call delivers itself. Any HighLevel write can also start a workflow the sub-account has configured: the usual triggers are adding or removing a contact tag (POST /contacts/{contactId}/tags, DELETE /contacts/{contactId}/tags, POST /contacts/bulk/tags/update/{type}), creating or updating a contact (POST /contacts/, POST /contacts/upsert, PUT /contacts/{contactId}), moving an opportunity (PUT /opportunities/{id}, PUT /opportunities/{id}/status), and recording an inbound message (POST /conversations/messages/inbound). Those are write; to require approval for them, name the operations in the rule.

Typical rules:

  • Require human approval for the send family, so no message, invoice, estimate, or post a call sends reaches a customer without a person approving it.
  • Require approval for the payment family on agent grants.
  • Restrict a grant to GET on /contacts/* for a read-only reporting agent.

Sending a conversation message, an invoice, or an estimate projects a recipients parameter that folds every address and number the request names (emailTo, emailCc, emailBcc, toNumber, and the forwarding address for a message; sentTo and the contact details for an invoice or estimate), so a rule such as “require approval when recipients fall outside @example.com” judges them. A message also reaches people the request does not name unless it names its destination: an Email goes to the contact’s own address unless emailTo is set, an SMS, RCS, or WhatsApp message to the contact’s own number unless toNumber is set, and other types to the contact’s channel identity; a reply_all reaches every participant in the thread; a forward can name its recipient by contact or conversation id. In those cases the recipients cannot be judged, and any rule that names recipients refuses the message. Sending a document for signature delivers to the recipients stored on the document, so it projects no recipients and a rule that names them refuses it.

HighLevel scopes are a second, separate check. Alter records the granted scopes on every connection, and a grant can be narrowed to some of them — for example contacts.readonly for one agent. Alter then refuses any call that needs a scope outside the narrowed set with insufficient_scope, before the call reaches HighLevel. A call must pass both policy and scopes. A narrowed grant also refuses, with scope_narrowing_unenforceable, every call whose scope Alter cannot determine:

  • 94 of HighLevel’s 627 operations name no scope in HighLevel’s API reference or scopes page, or name one HighLevel does not grant to apps (for example knowledge bases, brand voices, recurring tasks, SaaS routes, and the media and invoice-template settings routes). alter policy simulate and Explain a request show when a request’s scope cannot be determined.
  • A few paths match two operations equally well (for example /calendars/resources/free-slots, which is both a calendar resource type and a calendar’s free slots).
  • Some scopes in the table below cover only HighLevel endpoints its v3 API reference does not document (the workflows.*, emails/builder.*, emails/schedule.readonly, saas/location.*, and socialplanner/oauth.* scopes), so a grant narrowed to them can call no cataloged operation.

To let a narrowed grant make such a call, attach a method and endpoint restriction that pins it to the grant or agent.

Use alter policy simulate or Explain a request in the Developer Portal to see which operation, family, and scope a HighLevel request classifies as. See Policies and Set policies.

  • Access tokens last about 24 hours. Refresh tokens are single-use and valid for a year; Alter refreshes and stores the replacement automatically.
  • HighLevel has no token revocation endpoint. Disconnecting in Alter removes Alter’s copy of the tokens; uninstall the app in HighLevel to cut off its access there.
  • HighLevel’s burst limit is 100 requests per 10 seconds, and its daily limit 200,000 requests, per app per sub-account or agency.
  • Alter’s policy catalog covers HighLevel’s v3 API reference. A route that exists only in an earlier date version is unclassified, so a rule that names operations or families refuses it.
  • See the HighLevel OAuth documentation for more details.

The scopes a HighLevel app can request: every scope on HighLevel’s scopes reference, and the scopes its v3 API reference names for an operation that HighLevel’s authorization server also lists. Scopes marked Requested by default are requested when a connection names no scopes.

ScopeDescription
adPublishing.readonlyView adPublishing (Sub-Account). Used by: Get Facebook integration; Get Facebook pages; Get Google ad accounts
adPublishing.writeManage adPublishing (Sub-Account). Used by: Add custom audience member; Batch update audience members; Create Facebook integration
affiliate-manager.readonlyView affiliate manager. Used by: Get Affiliate; List Affiliates; List Commissions
agent-studio.readonlyView agent studio. Used by: Get Agent; Get Agent (Deprecated); List Agents
agent-studio.writeManage agent studio. Used by: Create Agent; Delete Agent; Execute Agent
associations.readonlyView associations (Sub-Account). Used by: Get all associations for a sub-account / location; Get association by ID; Get association by object keys
associations.writeManage associations (Sub-Account). Used by: Create Association; Delete Association; Update Association By Id
associations/relation.readonlyView associations relation (Sub-Account). Used by: Get all relations By record Id
associations/relation.writeManage associations relation (Sub-Account). Used by: Create Relation for you associated entities.; Delete Relation
blogs/author.readonlyView blogs author (Sub-Account). Used by: Get all authors
blogs/category.readonlyView blogs category (Sub-Account). Used by: Get all categories
blogs/check-slug.readonlyView blogs check slug (Sub-Account). Used by: Check url slug
blogs/list.readonlyView blogs list (Sub-Account). Used by: Get Blogs by Location ID
blogs/post-update.writeManage blogs post update (Sub-Account). Used by: Update Blog Post
blogs/post.writeManage blogs post (Sub-Account). Used by: Create Blog Post
blogs/posts.readonlyView blogs posts (Sub-Account). Used by: Get Blog posts by Blog ID
brand-boards/design-kit.readonlyView brand boards design kit. Used by: Get Brand Board; Get Brand Boards
brand-boards/design-kit.writeManage brand boards design kit. Used by: Create a new brand board; Delete a Brand Board; Update a Brand Board
businesses.readonlyView businesses (Sub-Account). Used by: Get Business; Get Businesses by Location
businesses.writeManage businesses (Sub-Account). Used by: Create Business; Delete Business; Update Business
calendars.readonlyView calendars (Sub-Account). Used by: Get Calendar; Get Calendars; Get Free Slots
calendars.writeManage calendars (Sub-Account). Used by: Apply user availability schedule to a calendar; Create Calendar; Create Service
calendars/events.readonlyView calendars events (Sub-Account). Used by: Get Appointment; Get Blocked Slots; Get Calendar Events
calendars/events.writeManage calendars events (Sub-Account). Used by: Create Block Slot; Create Note; Create Service Booking
calendars/groups.readonlyView calendars groups (Sub-Account). Used by: Get Groups
calendars/groups.writeManage calendars groups (Sub-Account). Used by: Create Calendar Group; Delete Group; Disable Group
calendars/resources.readonlyView calendars resources (Sub-Account). Used by: Get Calendar Resource; List Calendar Resources
calendars/resources.writeManage calendars resources (Sub-Account). Used by: Create Calendar Resource; Delete Calendar Resource; Update Calendar Resource
campaigns.readonlyView campaigns (Sub-Account). Used by: Get Campaigns
charges.readonlyView charges (Sub-Account). Used by: Check if account has sufficient funds; Get all wallet charges; Get specific wallet charge details
charges.writeManage charges (Sub-Account). Used by: Create a new wallet charge; Delete a wallet charge
chat-widget.readonlyView chat widget. Used by: Get Chat Widget; List Chat Widgets
chat-widget.writeManage chat widget. Used by: Clone Chat Widget; Create Chat Widget; Delete Chat Widget
companies.readonlyView companies (Agency). Used by: Get Company
contacts.readonlyRequested by default. View contacts (Sub-Account). Used by: Get All Notes; Get Appointments for Contact; Get Contact
contacts.writeManage contacts (Sub-Account). Used by: Add Contact to Campaign; Add Contact to Workflow; Add Followers
conversation-ai.readonlyView conversation ai. Used by: Get Action by ID; Get Agent; Get the generation details
conversation-ai.writeManage conversation ai. Used by: Attach Action to Agent; Create an Agent; Delete Agent
conversations.readonlyView conversations (Sub-Account). Used by: Get Conversation; Search Conversations
conversations.writeManage conversations (Sub-Account). Used by: Create Conversation; Delete Conversation; Update Conversation
conversations/livechat.writeManage conversations livechat. Used by: Agent/Ai-Bot is typing a message indicator for live chat
conversations/message.readonlyView conversations message (Sub-Account). Used by: Download transcription by Message ID; Export messages by location ID; Get Recording by Message ID
conversations/message.writeManage conversations message (Sub-Account). Used by: Add an external outbound call; Add an inbound message; Add message attachments
courses.writeManage courses (Sub-Account). Used by: Import Courses
custom-menu-link.readonlyView custom menu link (Agency). Used by: Get Custom Menu Link; Get Custom Menu Links
custom-menu-link.writeManage custom menu link (Agency). Used by: Create Custom Menu Link; Delete Custom Menu Link; Update Custom Menu Link
documents_contracts/list.readonlyView documents contracts list (Sub-Account, Agency). Used by: List documents
documents_contracts/sendLink.writeManage documents contracts sendLink (Sub-Account, Agency). Used by: Send document
documents_contracts_template/list.readonlyView documents contracts template list (Sub-Account, Agency). Used by: List templates
documents_contracts_template/sendLink.writeManage documents contracts template sendLink (Sub-Account, Agency). Used by: Send template
emails/builder.readonlyView emails builder (Sub-Account)
emails/builder.writeManage emails builder (Sub-Account)
emails/campaigns.readonlyView emails campaigns. Used by: Get Bulk Action Campaign by ID; Get Email Campaign by ID; Get Workflow Campaign by ID
emails/campaigns.writeManage emails campaigns. Used by: Create Email Campaign; Delete Campaign; Schedule Campaign
emails/schedule.readonlyView emails schedule (Sub-Account)
emails/stats.readonlyView emails stats. Used by: Get Campaign Statistics
emails/templates.readonlyView emails templates. Used by: Get Email Template by ID; List templates
emails/templates.writeManage emails templates. Used by: Create a template folder; Create an email template; Delete a template
forms.readonlyView forms (Sub-Account). Used by: Get Forms; Get Forms Submissions
forms.writeManage forms (Sub-Account). Used by: Upload files to custom fields
funnels/funnel.readonlyView funnels funnel (Sub-Account). Used by: Fetch List of Funnels
funnels/page.readonlyView funnels page (Sub-Account). Used by: Fetch list of funnel pages
funnels/pagecount.readonlyView funnels pagecount (Sub-Account). Used by: Fetch count of funnel pages
funnels/redirect.readonlyView funnels redirect (Sub-Account). Used by: Fetch List of Redirects
funnels/redirect.writeManage funnels redirect (Sub-Account). Used by: Create Redirect; Delete Redirect By Id; Update Redirect By Id
invoices.readonlyView invoices (Sub-Account). Used by: Generate Invoice Number; Get Invoice Settings; Get invoice
invoices.writeManage invoices (Sub-Account). Used by: Create & Send; Create Invoice; Delete invoice
invoices/estimate.readonlyView invoices estimate (Sub-Account). Used by: Generate Estimate Number; List Estimate Templates; List Estimates
invoices/estimate.writeManage invoices estimate (Sub-Account). Used by: Create Estimate Template; Create Invoice from Estimate; Create New Estimate
invoices/schedule.readonlyView invoices schedule (Sub-Account). Used by: Get an schedule; List schedules
invoices/schedule.writeManage invoices schedule (Sub-Account). Used by: Cancel an scheduled invoice; Create Invoice Schedule; Delete schedule
invoices/template.readonlyView invoices template (Sub-Account). Used by: Get an template; List templates
invoices/template.writeManage invoices template (Sub-Account). Used by: Create template; Delete template; Update template
lc-email.readonlyView lc email. Used by: Email Verification
links.readonlyView links (Sub-Account). Used by: Get Link by ID; Get Links; Search Trigger Links
links.writeManage links (Sub-Account). Used by: Create Link; Delete Link; Update Link
locations.readonlyRequested by default. View locations (Sub-Account, Agency). Used by: Fetch Timezones; Get Conversation Channel; Get Sub-Account (Formerly Location)
locations.writeManage locations (Agency). Used by: Create Sub-Account (Formerly Location); Put Sub-Account (Formerly Location)
locations/customFields.readonlyView locations customFields (Sub-Account). Used by: Get Custom Field; Get Custom Field / Folder By Id; Get Custom Fields
locations/customFields.writeManage locations customFields (Sub-Account). Used by: Create Custom Field; Create Custom Field Folder; Delete Custom Field
locations/customValues.readonlyView locations customValues (Sub-Account). Used by: Get Custom Value; Get Custom Values
locations/customValues.writeManage locations customValues (Sub-Account). Used by: Create Custom Value; Delete Custom Value; Update Custom Value
locations/tags.readonlyView locations tags (Sub-Account). Used by: Get Tags; Get tag by id
locations/tags.writeManage locations tags (Sub-Account). Used by: Create Tag; Delete tag; Update tag
locations/tasks.readonlyView locations tasks (Sub-Account). Used by: Task Search Filter
locations/templates.readonlyView locations templates (Sub-Account). Used by: GET all or email/sms templates
marketplace-installer-details.readonlyView marketplace installer details (Sub-Account, Agency). Used by: Get Installer Details
medias.readonlyView medias (Sub-Account). Used by: Get List of Files/ Folders
medias.writeManage medias (Sub-Account). Used by: Delete File or Folder; Upload File into Media Storage
numberpools.readView numberpools (Sub-Account). Used by: List number pools
oauth.readonlyView oauth (Agency). Used by: Get Location where app is installed; Get rebilling config for an app subscription and usage plans
oauth.writeManage oauth (Agency, Sub-Account). Used by: Get Location Access Token from Agency Token; Uninstall an application
objects/record.readonlyView objects record (Sub-Account). Used by: Get Record By Id; Search Object Records
objects/record.writeManage objects record (Sub-Account). Used by: Create Record; Delete Record; Update Record
objects/schema.readonlyView objects schema (Sub-Account). Used by: Get Object Schema by key / id; Get all objects for a location
objects/schema.writeManage objects schema (Sub-Account). Used by: Create Custom Object; Update Object Schema By Key / Id
opportunities.readonlyView opportunities (Sub-Account). Used by: Get Opportunity; Get Pipelines; Get lost reason
opportunities.writeManage opportunities (Sub-Account). Used by: Add Followers; Create Opportunity; Delete Opportunity
payments/coupons.readonlyView payments coupons (Sub-Account). Used by: Fetch Coupon; List Coupons
payments/coupons.writeManage payments coupons (Sub-Account). Used by: Create Coupon; Delete Coupon; Update Coupon
payments/custom-provider.readonlyView payments custom provider (Sub-Account). Used by: Fetch given provider config
payments/custom-provider.writeManage payments custom provider (Sub-Account). Used by: Create new integration; Create new provider config; Custom-provider marketplace app update capabilities
payments/integration.readonlyView payments integration (Sub-Account). Used by: List White-label Integration Providers
payments/integration.writeManage payments integration (Sub-Account). Used by: Create White-label Integration Provider
payments/orders.collectPaymentPayments orders: collectPayment. Used by: Record Order Payment
payments/orders.readonlyView payments orders (Sub-Account). Used by: Get Order by ID; List Orders; List fulfillment
payments/orders.writeManage payments orders (Sub-Account). Used by: Create order fulfillment
payments/subscriptions.readonlyView payments subscriptions (Sub-Account). Used by: Get Subscription by ID; List Subscriptions
payments/transactions.readonlyView payments transactions (Sub-Account). Used by: Get Transaction by ID; List Transactions
phonenumbers.readView phonenumbers (Sub-Account). Used by: List active numbers; List available phone numbers
phonenumbers.writeManage phonenumbers. Used by: Purchase number for location
products.readonlyView products (Sub-Account). Used by: Fetch Product Reviews; Fetch Product Store Stats; Fetch Review Count as per status
products.writeManage products (Sub-Account). Used by: Action to include/exclude the product in store; Bulk Update Products; Create Product
products/collection.readonlyView products collection (Sub-Account). Used by: Fetch Product Collections; Get Details about individual product collection
products/collection.writeManage products collection (Sub-Account). Used by: Create Product Collection; Delete Product Collection; Update Product Collection
products/prices.readonlyView products prices (Sub-Account). Used by: Get Price by ID for a Product; List Inventory; List Prices for a Product
products/prices.writeManage products prices (Sub-Account). Used by: Create Price for a Product; Delete Price by ID for a Product; Update Inventory
saas/company.writeManage saas company (Sub-Account, Agency). Used by: Update Location Wallet Balance
saas/location.readView saas location (Sub-Account, Agency)
saas/location.writeManage saas location (Agency, Sub-Account)
snapshots.readonlyView snapshots (Agency). Used by: Get Last Snapshot Push; Get Snapshot Push between Dates; Get Snapshots
snapshots.writeManage snapshots (Agency). Used by: Create Snapshot Share Link
socialplanner/account.readonlyView socialplanner account (Sub-Account). Used by: Get Accounts
socialplanner/account.writeManage socialplanner account (Sub-Account). Used by: Delete Account
socialplanner/category.readonlyView socialplanner category (Sub-Account). Used by: Fetch a category queue by ID; Fetch calendar view for an edit session; Fetch category queues for a location
socialplanner/category.writeManage socialplanner category. Used by: Clone a queue item; Create a new category queue; Create a new item in the queue
socialplanner/csv.readonlyView socialplanner csv (Sub-Account). Used by: Get CSV Post; Get Upload Status
socialplanner/csv.writeManage socialplanner csv (Sub-Account). Used by: Delete CSV; Delete CSV Post; Set Accounts
socialplanner/oauth.readonlyView socialplanner oauth (Sub-Account)
socialplanner/oauth.writeManage socialplanner oauth (Sub-Account)
socialplanner/post.readonlyView socialplanner post (Sub-Account). Used by: Get post; Get posts
socialplanner/post.writeManage socialplanner post (Sub-Account). Used by: Create post; Delete Post; Edit post
socialplanner/statistics.readonlyView socialplanner statistics (Sub-Account). Used by: Get Social Media Statistics
socialplanner/tag.readonlyView socialplanner tag (Sub-Account). Used by: Get tags by ids; Get tags by location id
surveys.readonlyView surveys (Sub-Account). Used by: Get Surveys; Get Surveys Submissions
users.readonlyView users (Sub-Account, Agency). Used by: Filter Users by Email; Get User; Search Users
users.writeManage users (Sub-Account, Agency). Used by: Create User; Delete User; Update User
voice-ai-agent-goals.readonlyView voice ai agent goals (Sub-Account). Used by: Get Agent Action
voice-ai-agent-goals.writeManage voice ai agent goals (Sub-Account). Used by: Create Agent Action; Delete Agent Action; Update Agent Action
voice-ai-agents.readonlyView voice ai agents (Sub-Account). Used by: Get Agent; List Agents
voice-ai-agents.writeManage voice ai agents (Sub-Account). Used by: Create Agent; Delete Agent; Patch Agent
voice-ai-dashboard.readonlyView voice ai dashboard (Sub-Account). Used by: Get Call Log; List Call Logs
workflows.deleteDelete workflows (Sub-Account)
workflows.logsWorkflows: logs (Sub-Account)
workflows.publishWorkflows: publish (Sub-Account)
workflows.readonlyView workflows (Sub-Account). Used by: Get Workflow
workflows.writeManage workflows (Sub-Account)

Alter policy rules can target these attested operations and families for operation-level and parameter-aware controls.

Operation IDFamiliesMethodProvider pathNotes
fb-get-ad-accountsreadGET/ad-publishing/facebook/ad-accounts—
fb-delete-ad-accountdelete, paymentDELETE/ad-publishing/facebook/ad-accounts/{adAccountId}—
fb-get-ad-accountreadGET/ad-publishing/facebook/ad-accounts/{adAccountId}—
fb-upsert-adpayment, writePUT/ad-publishing/facebook/ads—
fb-delete-addelete, paymentDELETE/ad-publishing/facebook/ads/{adId}—
fb-duplicate-adpayment, writePOST/ad-publishing/facebook/ads/{adId}/duplicate—
fb-pause-adpayment, writePOST/ad-publishing/facebook/ads/{adId}/pause—
fb-resume-adpayment, send, writePOST/ad-publishing/facebook/ads/{adId}/resume—
fb-upsert-adsetpayment, writePUT/ad-publishing/facebook/adsets—
fb-delete-adsetdelete, paymentDELETE/ad-publishing/facebook/adsets/{adSetId}—
fb-duplicate-adsetpayment, writePOST/ad-publishing/facebook/adsets/{adSetId}/duplicate—
fb-pause-adsetpayment, writePOST/ad-publishing/facebook/adsets/{adSetId}/pause—
fb-resume-adsetpayment, send, writePOST/ad-publishing/facebook/adsets/{adSetId}/resume—
fb-get-campaignreadGET/ad-publishing/facebook/campaign/{campaignId}—
fb-upsert-campaignpayment, writePUT/ad-publishing/facebook/campaigns—
fb-delete-campaigndelete, paymentDELETE/ad-publishing/facebook/campaigns/{campaignId}—
fb-duplicate-campaignpayment, writePOST/ad-publishing/facebook/campaigns/{campaignId}/duplicate—
fb-pause-campaignpayment, writePOST/ad-publishing/facebook/campaigns/{campaignId}/pause—
fb-publish-campaignpayment, send, writePOST/ad-publishing/facebook/campaigns/{campaignId}/publish—
fb-get-campaign-publishing-progressreadGET/ad-publishing/facebook/campaigns/{campaignId}/publishing-progress—
fb-resume-campaignpayment, send, writePOST/ad-publishing/facebook/campaigns/{campaignId}/resume—
fb-get-conversation-formsreadGET/ad-publishing/facebook/conversation-forms—
fb-create-conversation-formpayment, writePOST/ad-publishing/facebook/conversation-forms—
fb-get-custom-audiencesreadGET/ad-publishing/facebook/custom-audience—
fb-delete-custom-audiencedelete, paymentDELETE/ad-publishing/facebook/custom-audience/{audienceId}—
fb-get-custom-audience-by-idreadGET/ad-publishing/facebook/custom-audience/{audienceId}—
fb-update-custom-audiencepayment, writePUT/ad-publishing/facebook/custom-audience/{audienceId}—
fb-remove-custom-audience-memberdelete, paymentDELETE/ad-publishing/facebook/custom-audience/{audienceId}/member—
fb-add-custom-audience-memberpayment, writePUT/ad-publishing/facebook/custom-audience/{audienceId}/member—
fb-batch-update-audience-memberspayment, writePUT/ad-publishing/facebook/custom-audience/{audienceId}/member/batch—
fb-get-entityreadGET/ad-publishing/facebook/entity—
fb-delete-integrationdelete, paymentDELETE/ad-publishing/facebook/integration—
fb-get-integrationreadGET/ad-publishing/facebook/integration—
fb-create-integrationpayment, writePOST/ad-publishing/facebook/integration—
fb-get-lead-formreadGET/ad-publishing/facebook/lead-form/{leadFormId}—
fb-get-current-userreadGET/ad-publishing/facebook/me—
fb-delete-pagedelete, paymentDELETE/ad-publishing/facebook/page—
fb-set-default-pagepayment, writePUT/ad-publishing/facebook/page/default—
fb-get-page-lead-formsreadGET/ad-publishing/facebook/page/{pageId}/forms—
fb-create-page-lead-formpayment, writePOST/ad-publishing/facebook/page/{pageId}/forms—
fb-get-instagram-accountsreadGET/ad-publishing/facebook/page/{pageId}/instagram—
fb-get-pagesreadGET/ad-publishing/facebook/pages—
fb-get-pixelsreadGET/ad-publishing/facebook/pixels—
fb-upsert-pixelpayment, writePUT/ad-publishing/facebook/pixels—
fb-get-reportingreadGET/ad-publishing/facebook/reporting—
fb-get-campaign-reportingreadGET/ad-publishing/facebook/reporting/campaign/{campaignId}—
fb-get-reporting-listreadGET/ad-publishing/facebook/reporting/list—
fb-search-targetingreadGET/ad-publishing/facebook/targeting/search—
google-get-ad-accountsreadGET/ad-publishing/google/ad-accounts—
google-delete-ad-accountdelete, paymentDELETE/ad-publishing/google/ad-accounts/{adAccountId}—
google-get-ad-account-detailsreadGET/ad-publishing/google/ad-accounts/{adAccountId}—
google-upsert-campaignpayment, send, writePUT/ad-publishing/google/ads—
google-get-campaign-by-idreadGET/ad-publishing/google/ads/{adId}—
google-publish-adpayment, send, writePOST/ad-publishing/google/ads/{adId}/publish—
google-get-assetsreadGET/ad-publishing/google/assets—
google-upsert-assetspayment, writePOST/ad-publishing/google/assets—
google-get-audiencesreadGET/ad-publishing/google/audiences—
google-upsert-audiencepayment, writePUT/ad-publishing/google/audiences—
google-get-audience-by-idreadGET/ad-publishing/google/audiences/{audienceId}—
google-get-conversion-goalsreadGET/ad-publishing/google/conversion-goals—
google-get-conversionsreadGET/ad-publishing/google/conversions—
google-upsert-conversionpayment, writePUT/ad-publishing/google/conversions—
google-delete-conversiondelete, paymentDELETE/ad-publishing/google/conversions/{conversionId}—
google-get-conversion-by-idreadGET/ad-publishing/google/conversions/{conversionId}—
google-get-entityreadGET/ad-publishing/google/entity—
google-get-integrationreadGET/ad-publishing/google/integration—
google-create-integrationpayment, writePOST/ad-publishing/google/integration—
google-get-keyword-ideasreadPOST/ad-publishing/google/keyword-ideas—
google-get-current-userreadGET/ad-publishing/google/me—
google-get-reportingreadGET/ad-publishing/google/reporting—
google-get-campaign-reportingreadGET/ad-publishing/google/reporting/campaign/{campaignId}—
google-get-reporting-listreadGET/ad-publishing/google/reporting/list—
google-get-segmentsreadGET/ad-publishing/google/segments—
google-upsert-segmentpayment, writePUT/ad-publishing/google/segments—
google-create-offline-user-list-jobpayment, writePOST/ad-publishing/google/segments/offline-user-list-job—
google-delete-segmentdelete, paymentDELETE/ad-publishing/google/segments/{segmentId}—
google-get-segment-by-idreadGET/ad-publishing/google/segments/{segmentId}—
google-get-target-interestsreadGET/ad-publishing/google/target-interests—
google-search-targetingreadGET/ad-publishing/google/targeting/search—
li-delete-ad-accountdelete, paymentDELETE/ad-publishing/linkedin/ad-account—
li-get-ad-account-detailsreadGET/ad-publishing/linkedin/ad-account—
li-get-ad-accountsreadGET/ad-publishing/linkedin/ad-accounts—
li-upsert-campaign-grouppayment, send, writePUT/ad-publishing/linkedin/ads—
li-get-campaign-groupreadGET/ad-publishing/linkedin/ads/{adId}—
li-publish-campaign-grouppayment, send, writePOST/ad-publishing/linkedin/ads/{adId}/publish—
li-get-integrationreadGET/ad-publishing/linkedin/integration—
li-create-integrationpayment, writePOST/ad-publishing/linkedin/integration—
li-get-current-userreadGET/ad-publishing/linkedin/me—
li-get-ad-analyticsreadGET/ad-publishing/linkedin/reporting—
li-get-campaign-group-reportingreadGET/ad-publishing/linkedin/reporting/campaign-group/{campaignGroupId}—
li-get-reporting-listreadGET/ad-publishing/linkedin/reporting/list—
li-search-targetingreadGET/ad-publishing/linkedin/targeting/search—
li-create-lead-formpayment, send, writePOST/ad-publishing/linkedin/{accountId}/form—
li-get-lead-formsreadGET/ad-publishing/linkedin/{accountId}/forms—
li-update-ad-statuspayment, send, writePATCH/ad-publishing/linkedin/{adId}/status—
list-affiliatesreadGET/affiliate-manager/{locationId}/affiliates—
get-affiliatereadGET/affiliate-manager/{locationId}/affiliates/{affiliateId}—
list-commissionsreadGET/affiliate-manager/{locationId}/commissions—
list-payoutsreadGET/affiliate-manager/{locationId}/payouts—
getAgentsreadGET/agent-studio/agent—
createAgentadmin, writePOST/agent-studio/agent—
updateAgentVersionadmin, writePATCH/agent-studio/agent/versions/{versionId}—
promoteAndPublishadmin, writePOST/agent-studio/agent/versions/{versionId}/publish—
deleteAgentadmin, deleteDELETE/agent-studio/agent/{agentId}—
getAgentByIdreadGET/agent-studio/agent/{agentId}—
updateAgentMetadataadmin, writePATCH/agent-studio/agent/{agentId}—
executeAgentsend, writePOST/agent-studio/agent/{agentId}/execute—
getAgents-deprecatedreadGET/agent-studio/public-api/agents—
getAgentById-deprecatedreadGET/agent-studio/public-api/agents/{agentId}—
executeAgent-deprecatedsend, writePOST/agent-studio/public-api/agents/{agentId}/execute—
find-associationsreadGET/associations/—
associations.create-associationadmin, writePOST/associations/—
get-association-key-by-key-namereadGET/associations/key/{key_name}—
get-association-by-object-keysreadGET/associations/objectKey/{objectKey}—
create-relationwritePOST/associations/relations—
get-relations-by-record-idreadGET/associations/relations/{recordId}—
delete-relationdeleteDELETE/associations/relations/{relationId}—
delete-associationadmin, deleteDELETE/associations/{associationId}—
get-association-by-IDreadGET/associations/{associationId}—
update-associationadmin, writePUT/associations/{associationId}—
get-all-blog-authors-by-locationreadGET/blogs/authors—
get-all-categories-by-locationreadGET/blogs/categories—
create-blog-postsend, writePOST/blogs/posts—
get-blog-postreadGET/blogs/posts/all—
check-url-slug-existsreadGET/blogs/posts/url-slug-exists—
update-blog-postsend, writePUT/blogs/posts/{postId}—
get-blogsreadGET/blogs/site/all—
createBrandBoardwritePOST/brand-boards/—
list-brand-voicesreadGET/brand-boards/locations/{locationId}/brand-voices—
create-brand-voicewritePOST/brand-boards/locations/{locationId}/brand-voices—
delete-brand-voicedeleteDELETE/brand-boards/locations/{locationId}/brand-voices/{brandVoiceId}—
get-brand-voicereadGET/brand-boards/locations/{locationId}/brand-voices/{brandVoiceId}—
update-brand-voicewritePATCH/brand-boards/locations/{locationId}/brand-voices/{brandVoiceId}—
set-default-brand-voicewritePOST/brand-boards/locations/{locationId}/brand-voices/{brandVoiceId}/default—
getBrandBoardsByLocationreadGET/brand-boards/{locationId}—
deleteBrandBoarddeleteDELETE/brand-boards/{locationId}/{id}—
getBrandBoardByIdreadGET/brand-boards/{locationId}/{id}—
updateBrandBoardwritePATCH/brand-boards/{locationId}/{id}—
get-businesses-by-locationreadGET/businesses/—
create-businesswritePOST/businesses/—
delete-BusinessdeleteDELETE/businesses/{businessId}—
get-businessreadGET/businesses/{businessId}—
update-businesswritePUT/businesses/{businessId}—
get-calendarsreadGET/calendars/—
create-calendaradmin, payment, writePOST/calendars/—
get-appointment-notesreadGET/calendars/appointments/{appointmentId}/notes—
create-appointment-notewritePOST/calendars/appointments/{appointmentId}/notes—
delete-appointment-notedeleteDELETE/calendars/appointments/{appointmentId}/notes/{noteId}—
update-appointment-notewritePUT/calendars/appointments/{appointmentId}/notes/{noteId}—
get-blocked-slotsreadGET/calendars/blocked-slots—
get-calendar-eventsreadGET/calendars/events—
create-appointmentsend, writePOST/calendars/events/appointments—
get-appointmentreadGET/calendars/events/appointments/{eventId}—
edit-appointmentsend, writePUT/calendars/events/appointments/{eventId}—
create-block-slotwritePOST/calendars/events/block-slots—
edit-block-slotwritePUT/calendars/events/block-slots/{eventId}—
delete-eventdelete, sendDELETE/calendars/events/{eventId}—
get-groupsreadGET/calendars/groups—
create-calendar-groupwritePOST/calendars/groups—
validate-groups-slugreadPOST/calendars/groups/validate-slug—
delete-groupdeleteDELETE/calendars/groups/{groupId}—
edit-groupwritePUT/calendars/groups/{groupId}—
disable-groupwritePUT/calendars/groups/{groupId}/status—
fetch-calendar-resourcesreadGET/calendars/resources/{resourceType}—
create-calendar-resourcewritePOST/calendars/resources/{resourceType}—
delete-calendar-resourcedeleteDELETE/calendars/resources/{resourceType}/{id}—
get-calendar-resourcereadGET/calendars/resources/{resourceType}/{id}—
update-calendar-resourcewritePUT/calendars/resources/{resourceType}/{id}—
createSchedulewritePOST/calendars/schedules—
getCalendarSchedulereadGET/calendars/schedules/event-calendar/{calendarId}—
createCalendarSchedulewritePOST/calendars/schedules/event-calendar/{calendarId}—
updateCalendarSchedulewritePUT/calendars/schedules/event-calendar/{calendarId}—
getAllSchedulesreadGET/calendars/schedules/search—
deleteScheduledeleteDELETE/calendars/schedules/{id}—
getScheduleByIdreadGET/calendars/schedules/{id}—
updateSchedulewritePUT/calendars/schedules/{id}—
remove-calendar-from-scheduledeleteDELETE/calendars/schedules/{id}/associations/{calendarId}—
add-calendar-to-schedulewritePUT/calendars/schedules/{id}/associations/{calendarId}—
get-service-bookingsreadGET/calendars/services/bookings—
create-service-bookingsend, writePOST/calendars/services/bookings—
delete-service-bookingdelete, sendDELETE/calendars/services/bookings/{bookingId}—
get-service-booking-by-idreadGET/calendars/services/bookings/{bookingId}—
update-service-bookingsend, writePUT/calendars/services/bookings/{bookingId}—
get-services-catalogreadGET/calendars/services/catalog—
create-service-catalogpayment, writePOST/calendars/services/catalog—
delete-service-catalogdeleteDELETE/calendars/services/catalog/{serviceId}—
get-service-catalog-by-idreadGET/calendars/services/catalog/{serviceId}—
update-service-catalogpayment, writePUT/calendars/services/catalog/{serviceId}—
get-service-locationsreadGET/calendars/services/locations—
create-service-locationwritePOST/calendars/services/locations—
delete-service-locationdeleteDELETE/calendars/services/locations/{serviceLocationId}—
get-service-location-by-idreadGET/calendars/services/locations/{serviceLocationId}—
update-service-locationwritePUT/calendars/services/locations/{serviceLocationId}—
delete-calendardeleteDELETE/calendars/{calendarId}—
get-calendarreadGET/calendars/{calendarId}—
update-calendaradmin, payment, writePUT/calendars/{calendarId}—
get-slotsreadGET/calendars/{calendarId}/free-slots—
get-event-notificationreadGET/calendars/{calendarId}/notifications—
create-event-notificationadmin, writePOST/calendars/{calendarId}/notifications—
delete-event-notificationadmin, deleteDELETE/calendars/{calendarId}/notifications/{notificationId}—
find-event-notificationreadGET/calendars/{calendarId}/notifications/{notificationId}—
update-event-notificationadmin, writePUT/calendars/{calendarId}/notifications/{notificationId}—
get-campaignsreadGET/campaigns/—
createChatWidgetadmin, writePOST/chat-widget/—
cloneChatWidgetadmin, writePOST/chat-widget/clone—
getChatWidgetreadGET/chat-widget/data/{locationId}/{id}—
patchChatWidgetadmin, writePATCH/chat-widget/data/{locationId}/{id}—
updateChatWidgetadmin, writePUT/chat-widget/data/{locationId}/{id}—
listChatWidgetreadGET/chat-widget/list—
getWidgetreadGET/chat-widget/public/config/{id}—
chat-widget.deleteadmin, deleteDELETE/chat-widget/{locationId}/{id}—
get-companyreadGET/companies/{companyId}—
create-contactwritePOST/contacts/—
add-remove-contact-from-businesswritePOST/contacts/bulk/business—
contacts.bulk-update-tagsdelete, writePOST/contacts/bulk/tags/update/{type}—
get-contacts-by-businessIdreadGET/contacts/business/{businessId}—
search-contacts-advancedreadPOST/contacts/search—
get-duplicate-contactreadGET/contacts/search/duplicate—
upsert-contactwritePOST/contacts/upsert—
delete-contactdeleteDELETE/contacts/{contactId}—
get-contactreadGET/contacts/{contactId}—
update-contactwritePUT/contacts/{contactId}—
get-appointments-for-contactreadGET/contacts/{contactId}/appointments—
remove-contact-from-every-campaigndeleteDELETE/contacts/{contactId}/campaigns/remove-allalso served at /contacts/{contactId}/campaigns/removeAll
remove-contact-from-campaigndeleteDELETE/contacts/{contactId}/campaigns/{campaignId}—
add-contact-to-campaignsend, writePOST/contacts/{contactId}/campaigns/{campaignId}—
remove-followers-contactdeleteDELETE/contacts/{contactId}/followers—
add-followers-contactwritePOST/contacts/{contactId}/followers—
get-all-notesreadGET/contacts/{contactId}/notes—
create-notewritePOST/contacts/{contactId}/notes—
delete-notedeleteDELETE/contacts/{contactId}/notes/{id}—
get-notereadGET/contacts/{contactId}/notes/{id}—
update-notewritePUT/contacts/{contactId}/notes/{id}—
remove-tagsdeleteDELETE/contacts/{contactId}/tags—
add-tagswritePOST/contacts/{contactId}/tags—
get-all-tasksreadGET/contacts/{contactId}/tasks—
create-taskwritePOST/contacts/{contactId}/tasks—
delete-taskdeleteDELETE/contacts/{contactId}/tasks/{taskId}—
get-taskreadGET/contacts/{contactId}/tasks/{taskId}—
update-taskwritePUT/contacts/{contactId}/tasks/{taskId}—
update-task-completedwritePUT/contacts/{contactId}/tasks/{taskId}/completed—
delete-contact-from-workflowdeleteDELETE/contacts/{contactId}/workflow/{workflowId}—
add-contact-to-workflowsend, writePOST/contacts/{contactId}/workflow/{workflowId}—
conversation-ai.create-agentadmin, writePOST/conversation-ai/agents—
search-agentreadGET/conversation-ai/agents/search—
conversation-ai.delete-agentadmin, deleteDELETE/conversation-ai/agents/{agentId}—
conversation-ai.get-agentreadGET/conversation-ai/agents/{agentId}—
update-agentadmin, writePUT/conversation-ai/agents/{agentId}—
conversation-ai.create-actionadmin, writePOST/conversation-ai/agents/{agentId}/actions—
list-actionsreadGET/conversation-ai/agents/{agentId}/actions/list—
conversation-ai.delete-actionadmin, deleteDELETE/conversation-ai/agents/{agentId}/actions/{actionId}—
get-action-by-idreadGET/conversation-ai/agents/{agentId}/actions/{actionId}—
conversation-ai.update-actionadmin, writePUT/conversation-ai/agents/{agentId}/actions/{actionId}—
update-followup-settingsadmin, writePATCH/conversation-ai/agents/{agentId}/followup-settings—
get-generation-detailsreadGET/conversation-ai/generations—
create-conversationwritePOST/conversations/—
get-message-transcriptionreadGET/conversations/locations/{locationId}/messages/{messageId}/transcription—
download-message-transcriptionreadGET/conversations/locations/{locationId}/messages/{messageId}/transcription/download—
send-a-new-messagesend, writePOST/conversations/messages—
cancel-scheduled-email-messagedeleteDELETE/conversations/messages/email/{emailMessageId}/schedule—
get-email-by-idreadGET/conversations/messages/email/{id}—
update-email-message-statuswritePUT/conversations/messages/email/{id}/status—
export-messages-by-locationreadGET/conversations/messages/export—
add-an-inbound-messagewritePOST/conversations/messages/inbound—
add-an-outbound-messagewritePOST/conversations/messages/outbound—
send-review-replysend, writePOST/conversations/messages/review-reply—
upload-file-attachmentswritePOST/conversations/messages/upload—
complete-file-uploadwritePOST/conversations/messages/upload/complete—
initiate-file-uploadwritePOST/conversations/messages/upload/initiate—
get-messagereadGET/conversations/messages/{id}—
add-message-attachmentswritePUT/conversations/messages/{messageId}/attachments—
get-message-recordingreadGET/conversations/messages/{messageId}/locations/{locationId}/recording—
cancel-scheduled-messagedeleteDELETE/conversations/messages/{messageId}/schedule—
update-message-statuswritePUT/conversations/messages/{messageId}/status—
live-chat-agent-typingsend, writePOST/conversations/providers/live-chat/typing—
search-conversationreadGET/conversations/search—
delete-conversationdeleteDELETE/conversations/{conversationId}—
get-conversationreadGET/conversations/{conversationId}—
update-conversationwritePUT/conversations/{conversationId}—
get-messagesreadGET/conversations/{conversationId}/messages—
import-courseswritePOST/courses/courses-exporter/public/import—
custom-fields.create-custom-fieldadmin, writePOST/custom-fields/—
create-custom-field-folderadmin, writePOST/custom-fields/folder—
delete-custom-field-folderadmin, deleteDELETE/custom-fields/folder/{id}—
update-custom-field-folderadmin, writePUT/custom-fields/folder/{id}—
get-custom-fields-by-object-keyreadGET/custom-fields/object-key/{objectKey}—
custom-fields.delete-custom-fieldadmin, deleteDELETE/custom-fields/{id}—
get-custom-field-by-idreadGET/custom-fields/{id}—
custom-fields.update-custom-fieldadmin, writePUT/custom-fields/{id}—
get-custom-menusreadGET/custom-menus/—
create-custom-menuadmin, writePOST/custom-menus/—
delete-custom-menuadmin, deleteDELETE/custom-menus/{customMenuId}—
get-custom-menu-by-idreadGET/custom-menus/{customMenuId}—
update-custom-menuadmin, writePUT/custom-menus/{customMenuId}—
verify-emailpayment, writePOST/email/verify—
list-bulk-action-campaignsreadGET/emails/locations/{locationId}/campaigns/bulk-actions—
get-bulk-action-campaignreadGET/emails/locations/{locationId}/campaigns/bulk-actions/{campaignId}—
list-email-campaignsreadGET/emails/locations/{locationId}/campaigns/emails—
create-email-campaignwritePOST/emails/locations/{locationId}/campaigns/emails—
delete-campaigndeleteDELETE/emails/locations/{locationId}/campaigns/emails/{campaignId}—
get-email-campaignreadGET/emails/locations/{locationId}/campaigns/emails/{campaignId}—
update-email-campaignsend, writePATCH/emails/locations/{locationId}/campaigns/emails/{campaignId}—
schedule-campaignsend, writePOST/emails/locations/{locationId}/campaigns/emails/{campaignId}/schedule—
get-campaign-statsreadGET/emails/locations/{locationId}/campaigns/stats/{source}/{sourceId}—
list-workflow-campaignsreadGET/emails/locations/{locationId}/campaigns/workflows—
get-workflow-campaignreadGET/emails/locations/{locationId}/campaigns/workflows/{campaignId}—
list-email-templatesreadGET/emails/locations/{locationId}/templates—
create-email-templatewritePOST/emails/locations/{locationId}/templates—
create-template-folderwritePOST/emails/locations/{locationId}/templates/folders—
import-email-templatewritePOST/emails/locations/{locationId}/templates/import—
delete-email-templatedeleteDELETE/emails/locations/{locationId}/templates/{templateId}—
get-email-templatereadGET/emails/locations/{locationId}/templates/{templateId}—
update-email-templatewritePATCH/emails/locations/{locationId}/templates/{templateId}—
get-formsreadGET/forms/—
get-forms-submissionsreadGET/forms/submissions—
upload-to-custom-fieldswritePOST/forms/upload-custom-files—
getFunnelsreadGET/funnels/funnel/list—
create-redirectadmin, writePOST/funnels/lookup/redirect—
fetch-redirects-listreadGET/funnels/lookup/redirect/list—
delete-redirect-by-idadmin, deleteDELETE/funnels/lookup/redirect/{id}—
update-redirect-by-idadmin, writePATCH/funnels/lookup/redirect/{id}—
getPagesByFunnelIdreadGET/funnels/page—
getPagesCountByFunnelIdreadGET/funnels/page/count—
invoices.list-invoicesreadGET/invoices/—
create-invoicepayment, writePOST/invoices/—
create-new-estimatepayment, send, writePOST/invoices/estimate—
list-estimatesreadGET/invoices/estimate/list—
generate-estimate-numberreadGET/invoices/estimate/number/generate—
update-estimate-last-visited-atwritePATCH/invoices/estimate/stats/last-visited-at—
list-estimate-templatesreadGET/invoices/estimate/template—
create-estimate-templatewritePOST/invoices/estimate/template—
preview-estimate-templatereadGET/invoices/estimate/template/preview—
delete-estimate-templatedeleteDELETE/invoices/estimate/template/{templateId}—
update-estimate-templatewritePUT/invoices/estimate/template/{templateId}—
delete-estimatedeleteDELETE/invoices/estimate/{estimateId}—
update-estimatepayment, send, writePUT/invoices/estimate/{estimateId}—
create-invoice-from-estimatepayment, writePOST/invoices/estimate/{estimateId}/invoice—
send-estimatesend, writePOST/invoices/estimate/{estimateId}/send—
generate-invoice-numberreadGET/invoices/generate-invoice-number—
list-invoice-schedulesreadGET/invoices/schedule—
create-invoice-schedulepayment, writePOST/invoices/schedule—
delete-invoice-scheduledelete, paymentDELETE/invoices/schedule/{scheduleId}—
get-invoice-schedulereadGET/invoices/schedule/{scheduleId}—
update-invoice-schedulepayment, writePUT/invoices/schedule/{scheduleId}—
auto-payment-invoice-schedulepayment, writePOST/invoices/schedule/{scheduleId}/auto-payment—
cancel-invoice-schedulepayment, writePOST/invoices/schedule/{scheduleId}/cancel—
schedule-invoice-schedulepayment, send, writePOST/invoices/schedule/{scheduleId}/schedule—
update-and-schedule-invoice-schedulepayment, send, writePOST/invoices/schedule/{scheduleId}/updateAndSchedule—
get-invoice-settingsreadGET/invoices/settings—
update-invoice-last-visited-atwritePATCH/invoices/stats/last-visited-at—
list-invoice-templatesreadGET/invoices/template—
create-invoice-templatepayment, writePOST/invoices/template—
delete-invoice-templatedeleteDELETE/invoices/template/{templateId}—
get-invoice-templatereadGET/invoices/template/{templateId}—
update-invoice-templatewritePUT/invoices/template/{templateId}—
update-invoice-template-late-fees-configurationpayment, writePATCH/invoices/template/{templateId}/late-fees-configuration—
update-invoice-payment-methods-configurationpayment, writePATCH/invoices/template/{templateId}/payment-methods-configuration—
text2pay-invoicepayment, send, writePOST/invoices/text2pay—
delete-invoicedelete, paymentDELETE/invoices/{invoiceId}—
get-invoicereadGET/invoices/{invoiceId}—
update-invoicepayment, writePUT/invoices/{invoiceId}—
update-invoice-late-fees-configurationpayment, writePATCH/invoices/{invoiceId}/late-fees-configuration—
record-invoicepayment, writePOST/invoices/{invoiceId}/record-payment—
send-invoicepayment, send, writePOST/invoices/{invoiceId}/send—
void-invoicepayment, writePOST/invoices/{invoiceId}/void—
listAllKnowledgeBasesPaginatedreadGET/knowledge-bases/—
createKnowledgeBasewritePOST/knowledge-bases/—
deleteTrainedUrlsForKnowledgeBasedeleteDELETE/knowledge-bases/crawler—
getAllWebsiteUrlsDataByKnowledgeBasereadGET/knowledge-bases/crawler—
discoverWebsitewritePOST/knowledge-bases/crawler—
getCrawlingStatusForLatestOperationreadGET/knowledge-bases/crawler/status—
trainDiscoveredUrlswritePOST/knowledge-bases/crawler/train—
listreadGET/knowledge-bases/faqs—
createwritePOST/knowledge-bases/faqs—
knowledge-base.deletedeleteDELETE/knowledge-bases/faqs/{id}—
updatewritePUT/knowledge-bases/faqs/{id}—
updateKnowledgeBasewritePUT/knowledge-bases/{id}—
deleteKnowledgeBasedeleteDELETE/knowledge-bases/{knowledgeBaseId}—
getKnowledgeBaseByIdreadGET/knowledge-bases/{knowledgeBaseId}—
get-linksreadGET/links/—
create-linkwritePOST/links/—
get-link-by-idreadGET/links/id/{linkId}—
search-trigger-linksreadGET/links/search—
delete-linkdeleteDELETE/links/{linkId}—
update-linkwritePUT/links/{linkId}—
create-locationadmin, writePOST/locations/—
search-locationsreadGET/locations/search—
delete-locationadmin, deleteDELETE/locations/{locationId}—
get-locationreadGET/locations/{locationId}—
put-locationadmin, writePUT/locations/{locationId}—
get-conversation-channelreadGET/locations/{locationId}/conversationChannels/{type}—
get-custom-fieldsreadGET/locations/{locationId}/customFields—
locations.create-custom-fieldadmin, writePOST/locations/{locationId}/customFields—
upload-file-customFieldsadmin, writePOST/locations/{locationId}/customFields/upload—
locations.delete-custom-fieldadmin, deleteDELETE/locations/{locationId}/customFields/{id}—
get-custom-fieldreadGET/locations/{locationId}/customFields/{id}—
locations.update-custom-fieldadmin, writePUT/locations/{locationId}/customFields/{id}—
get-custom-valuesreadGET/locations/{locationId}/customValues—
create-custom-valueadmin, writePOST/locations/{locationId}/customValues—
delete-custom-valueadmin, deleteDELETE/locations/{locationId}/customValues/{id}—
get-custom-valuereadGET/locations/{locationId}/customValues/{id}—
update-custom-valueadmin, writePUT/locations/{locationId}/customValues/{id}—
get-location-permissionsreadGET/locations/{locationId}/permissions—
update-location-permissionsadmin, writePUT/locations/{locationId}/permissions—
create-recurring-taskwritePOST/locations/{locationId}/recurring-tasks—
delete-recurring-taskdeleteDELETE/locations/{locationId}/recurring-tasks/{id}—
get-recurring-task-by-idreadGET/locations/{locationId}/recurring-tasks/{id}—
update-recurring-taskwritePUT/locations/{locationId}/recurring-tasks/{id}—
get-location-tagsreadGET/locations/{locationId}/tags—
create-tagwritePOST/locations/{locationId}/tags—
delete-tagdeleteDELETE/locations/{locationId}/tags/{tagId}—
get-tag-by-idreadGET/locations/{locationId}/tags/{tagId}—
update-tagwritePUT/locations/{locationId}/tags/{tagId}—
task-searchreadPOST/locations/{locationId}/tasks/search—
GET-all-or-email-sms-templatesreadGET/locations/{locationId}/templates—
DELETE-an-email-sms-templatedeleteDELETE/locations/{locationId}/templates/{id}—
get-timezonesreadGET/locations/{locationId}/timezones—
uninstall-applicationadmin, deleteDELETE/marketplace/app/{appId}/installations—
get-installer-detailsreadGET/marketplace/app/{appId}/installations—
get-rebilling-config-for-appreadGET/marketplace/app/{appId}/rebilling-config/location/{locationId}—
getChargesreadGET/marketplace/billing/charges—
chargepayment, writePOST/marketplace/billing/charges—
hasFundsreadGET/marketplace/billing/charges/has-funds—
deleteChargedelete, paymentDELETE/marketplace/billing/charges/{chargeId}—
getSpecificChargereadGET/marketplace/billing/charges/{chargeId}—
migrateConnectionadmin, writePOST/marketplace/external-auth/migration—
bulk-delete-media-objectsdeletePUT/medias/delete-files—
fetch-media-contentreadGET/medias/files—
create-media-folderwritePOST/medias/folder—
bulk-update-media-objectswritePUT/medias/update-files—
upload-media-contentwritePOST/medias/upload-file—
delete-media-contentdeleteDELETE/medias/{id}—
update-media-objectwritePOST/medias/{id}—
get-installed-locationreadGET/oauth/installed-locationsalso served at /oauth/installedLocations
get-location-access-tokenadmin, writePOST/oauth/location-tokenrefused by default: leaves the caller holding a provider credential (a credential_minting rule can allow it); also served at /oauth/locationToken
get-access-tokenadmin, writePOST/oauth/tokenrefused by default: leaves the caller holding a provider credential (a credential_minting rule can allow it)
get-object-by-location-idreadGET/objects/—
create-custom-object-schemaadmin, writePOST/objects/—
get-object-schema-by-keyreadGET/objects/{key}—
update-custom-objectadmin, writePUT/objects/{key}—
create-object-recordwritePOST/objects/{schemaKey}/records—
search-object-recordsreadPOST/objects/{schemaKey}/records/search—
delete-object-recorddeleteDELETE/objects/{schemaKey}/records/{id}—
get-record-by-idreadGET/objects/{schemaKey}/records/{id}—
update-object-recordwritePUT/objects/{schemaKey}/records/{id}—
create-opportunitywritePOST/opportunities/—
get-lost-reasonreadGET/opportunities/lost-reason—
get-pipelinesreadGET/opportunities/pipelines—
search-opportunityreadGET/opportunities/search—
search-opportunities-advancedreadPOST/opportunities/search—
Upsert-opportunitywritePOST/opportunities/upsert—
delete-opportunitydeleteDELETE/opportunities/{id}—
get-opportunityreadGET/opportunities/{id}—
update-opportunitywritePUT/opportunities/{id}—
remove-followers-opportunitydeleteDELETE/opportunities/{id}/followers—
add-followers-opportunitywritePOST/opportunities/{id}/followers—
update-opportunity-statuswritePUT/opportunities/{id}/status—
delete-coupondelete, paymentDELETE/payments/coupon—
get-couponreadGET/payments/coupon—
create-couponpayment, writePOST/payments/coupon—
update-couponpayment, writePUT/payments/coupon—
list-couponsreadGET/payments/coupon/list—
custom-provider-marketplace-app-update-capabilitiesadmin, payment, writePUT/payments/custom-provider/capabilities—
fetch-configadmin, readGET/payments/custom-provider/connect—
create-configadmin, payment, writePOST/payments/custom-provider/connect—
disconnect-configadmin, payment, writePOST/payments/custom-provider/disconnect—
delete-integrationadmin, delete, paymentDELETE/payments/custom-provider/provider—
create-integrationadmin, payment, writePOST/payments/custom-provider/provider—
list-integration-providersreadGET/payments/integrations/provider/whitelabel—
create-integration provideradmin, payment, writePOST/payments/integrations/provider/whitelabel—
list-ordersreadGET/payments/orders—
get-order-by-idreadGET/payments/orders/{orderId}—
list-order-fulfillmentreadGET/payments/orders/{orderId}/fulfillments—
create-order-fulfillmentsend, writePOST/payments/orders/{orderId}/fulfillments—
list-order-notesreadGET/payments/orders/{orderId}/notes—
record-order-paymentpayment, writePOST/payments/orders/{orderId}/record-payment—
list-subscriptionsreadGET/payments/subscriptions—
get-subscription-by-idreadGET/payments/subscriptions/{subscriptionId}—
list-transactionsreadGET/payments/transactions—
get-transaction-by-idreadGET/payments/transactions/{transactionId}—
getNumberPoolListreadGET/phone-system/number-pools—
active-numbersreadGET/phone-system/numbers/location/{locationId}—
listAvailableNumbersForACountryreadGET/phone-system/numbers/location/{locationId}/available—
purchase-number-for-locationadmin, payment, writePOST/phone-system/numbers/location/{locationId}/purchase—
products.list-invoicesreadGET/products/—
create-productwritePOST/products/—
bulkUpdatedelete, payment, writePOST/products/bulk-update—
bulkEditpayment, writePOST/products/bulk-update/edit—
get-product-collectionreadGET/products/collections—
create-product-collectionwritePOST/products/collections—
delete-product-collectiondeleteDELETE/products/collections/{collectionId}—
get-product-collection-idreadGET/products/collections/{collectionId}—
update-product-collectionwritePUT/products/collections/{collectionId}—
get-list-inventoryreadGET/products/inventory—
update-inventorywritePOST/products/inventory—
get-product-reviewsreadGET/products/reviews—
bulk-update-product-reviewsend, writePOST/products/reviews/bulk-update—
get-reviews-countreadGET/products/reviews/count—
delete-product-reviewdeleteDELETE/products/reviews/{reviewId}—
update-product-reviewsend, writePUT/products/reviews/{reviewId}—
update-store-statuswritePOST/products/store/{storeId}—
update-display-prioritywritePOST/products/store/{storeId}/priority—
get-product-store-statsreadGET/products/store/{storeId}/stats—
delete-product-by-iddeleteDELETE/products/{productId}—
get-product-by-idreadGET/products/{productId}—
update-product-by-idpayment, writePUT/products/{productId}—
list-prices-for-productreadGET/products/{productId}/price—
create-price-for-productpayment, writePOST/products/{productId}/price—
delete-price-by-id-for-productdelete, paymentDELETE/products/{productId}/price/{priceId}—
get-price-by-id-for-productreadGET/products/{productId}/price/{priceId}—
update-price-by-id-for-productpayment, writePUT/products/{productId}/price/{priceId}—
list-documents-contractsreadGET/proposals/document—
send-documents-contractssend, writePOST/proposals/document/send—
list-documents-contracts-templatesreadGET/proposals/templates—
send-documents-contracts-templatesend, writePOST/proposals/templates/send—
get-agency-plans-deprecatedreadGET/saas-api/public-api/agency-plans/{companyId}—
bulk-disable-saas-deprecatedadmin, payment, writePOST/saas-api/public-api/bulk-disable-saas/{companyId}—
bulk-enable-saas-deprecatedadmin, payment, writePOST/saas-api/public-api/bulk-enable-saas/{companyId}—
getLocationWalletBalancereadGET/saas-api/public-api/companies/{companyId}/locations/{locationId}/wallet-balance—
updateLocationWalletBalanceadmin, payment, writePOST/saas-api/public-api/companies/{companyId}/locations/{locationId}/wallet-balance/complimentary-credits—
enable-saas-location-deprecatedadmin, payment, writePOST/saas-api/public-api/enable-saas/{locationId}—
get-location-subscription-deprecatedreadGET/saas-api/public-api/get-saas-subscription/{locationId}—
locations-deprecatedreadGET/saas-api/public-api/locations—
pause-location-deprecatedadmin, payment, writePOST/saas-api/public-api/pause/{locationId}—
get-saas-locations-deprecatedreadGET/saas-api/public-api/saas-locations/{companyId}—
get-saas-plan-deprecatedreadGET/saas-api/public-api/saas-plan/{planId}—
update-rebilling-deprecatedadmin, payment, writePOST/saas-api/public-api/update-rebilling/{companyId}—
generate-payment-link-deprecatedadmin, payment, writePUT/saas-api/public-api/update-saas-subscription/{locationId}—
get-agency-plansreadGET/saas/agency-plans/{companyId}—
allow-attach-rebillingadmin, payment, writePOST/saas/allow-attach-rebilling/{locationId}—
bulk-disable-saasadmin, payment, writePOST/saas/bulk-disable-saas/{companyId}—
bulk-enable-saasadmin, payment, writePOST/saas/bulk-enable-saas/{companyId}—
enable-saas-locationadmin, payment, writePOST/saas/enable-saas/{locationId}—
get-location-subscriptionreadGET/saas/get-saas-subscription/{locationId}—
locationsreadGET/saas/locations—
pause-locationadmin, payment, writePOST/saas/pause/{locationId}—
get-saas-locationsreadGET/saas/saas-locations/{companyId}—
get-saas-planreadGET/saas/saas-plan/{planId}—
update-rebillingadmin, payment, writePOST/saas/update-rebilling/{companyId}—
generate-payment-linkadmin, payment, writePUT/saas/update-saas-subscription/{locationId}—
get-custom-snapshotsreadGET/snapshots/—
create-snapshot-share-linkadmin, writePOST/snapshots/share/link—
get-snapshot-pushreadGET/snapshots/snapshot-status/{snapshotId}—
get-latest-snapshot-pushreadGET/snapshots/snapshot-status/{snapshotId}/location/{locationId}—
createQueuesend, writePOST/social-media-posting/category/queues—
fetchAvailableCategoriesreadGET/social-media-posting/category/queues/available-categories—
fetchQueuesreadPOST/social-media-posting/category/queues/list—
fetchCalendarListreadPOST/social-media-posting/category/queues/list/calendar—
deleteCurrentActivePostAndScheduleNextdelete, sendDELETE/social-media-posting/category/queues/{postId}/active-post—
fetchQueueByIdreadGET/social-media-posting/category/queues/{queueId}—
updateQueuesend, writePUT/social-media-posting/category/queues/{queueId}—
createQueueItemsend, writePOST/social-media-posting/category/queues/{queueId}/create/item—
fetchEditSessionCalendarreadPOST/social-media-posting/category/queues/{queueId}/edit/calendar—
discardEditSessionwritePOST/social-media-posting/category/queues/{queueId}/edit/discard—
saveEditSessionsend, writePOST/social-media-posting/category/queues/{queueId}/edit/save—
startEditSessionwritePOST/social-media-posting/category/queues/{queueId}/edit/start—
fetchQueueItemsreadPOST/social-media-posting/category/queues/{queueId}/items—
deleteQueueItemdeleteDELETE/social-media-posting/category/queues/{queueId}/items/{itemId}—
updateQueueItemsend, writePUT/social-media-posting/category/queues/{queueId}/items/{itemId}—
cloneQueueItemsend, writePOST/social-media-posting/category/queues/{queueId}/items/{itemId}/clone—
resetQueueItemsend, writePUT/social-media-posting/category/queues/{queueId}/items/{itemId}/reset—
fetchSlotsreadPOST/social-media-posting/category/queues/{queueId}/slots—
create-commentsend, writePOST/social-media-posting/comments/{platform}—
get-comment-listreadPOST/social-media-posting/comments/{platform}/list—
delete-likedelete, sendDELETE/social-media-posting/comments/{platform}/{id}/like—
create-likesend, writePOST/social-media-posting/comments/{platform}/{id}/like—
get-oauth-accountsreadGET/social-media-posting/oauth/{locationId}/{platform}/accounts/{accountId}—
attach-oauth-accountsadmin, writePOST/social-media-posting/oauth/{locationId}/{platform}/accounts/{accountId}—
start-oauthreadGET/social-media-posting/oauth/{platform}/start—
get-statisticsreadPOST/social-media-posting/statistics—
get-accountreadGET/social-media-posting/{locationId}/accounts—
delete-accountadmin, deleteDELETE/social-media-posting/{locationId}/accounts/{id}—
get-categories-location-idreadGET/social-media-posting/{locationId}/categories—
get-categories-idreadGET/social-media-posting/{locationId}/categories/{id}—
get-upload-statusreadGET/social-media-posting/{locationId}/csv—
upload-csvwritePOST/social-media-posting/{locationId}/csv—
delete-csv-postdeleteDELETE/social-media-posting/{locationId}/csv/{csvId}/post/{postId}—
delete-csvdeleteDELETE/social-media-posting/{locationId}/csv/{id}—
get-csv-postreadGET/social-media-posting/{locationId}/csv/{id}—
start-csv-finalizesend, writePATCH/social-media-posting/{locationId}/csv/{id}—
create-postsend, writePOST/social-media-posting/{locationId}/posts—
bulk-delete-social-planner-postsdeletePOST/social-media-posting/{locationId}/posts/bulk-delete—
get-postsreadPOST/social-media-posting/{locationId}/posts/list—
delete-postdeleteDELETE/social-media-posting/{locationId}/posts/{id}—
get-postreadGET/social-media-posting/{locationId}/posts/{id}—
edit-postsend, writePUT/social-media-posting/{locationId}/posts/{id}—
set-accountsadmin, writePOST/social-media-posting/{locationId}/set-accounts—
get-tags-location-idreadGET/social-media-posting/{locationId}/tags—
get-tags-by-idsreadPOST/social-media-posting/{locationId}/tags/details—
list-shipping-carriersreadGET/store/shipping-carrier—
create-shipping-carrierwritePOST/store/shipping-carrier—
delete-shipping-carrierdeleteDELETE/store/shipping-carrier/{shippingCarrierId}—
get-shipping-carriersreadGET/store/shipping-carrier/{shippingCarrierId}—
update-shipping-carrierwritePUT/store/shipping-carrier/{shippingCarrierId}—
list-shipping-zonesreadGET/store/shipping-zone—
create-shipping-zonewritePOST/store/shipping-zone—
get-available-shipping-zonesreadPOST/store/shipping-zone/shipping-rates—
delete-shipping-zonedeleteDELETE/store/shipping-zone/{shippingZoneId}—
get-shipping-zonesreadGET/store/shipping-zone/{shippingZoneId}—
update-shipping-zonewritePUT/store/shipping-zone/{shippingZoneId}—
list-shipping-ratesreadGET/store/shipping-zone/{shippingZoneId}/shipping-rate—
create-shipping-ratepayment, writePOST/store/shipping-zone/{shippingZoneId}/shipping-rate—
delete-shipping-ratedelete, paymentDELETE/store/shipping-zone/{shippingZoneId}/shipping-rate/{shippingRateId}—
get-shipping-ratesreadGET/store/shipping-zone/{shippingZoneId}/shipping-rate/{shippingRateId}—
update-shipping-ratepayment, writePUT/store/shipping-zone/{shippingZoneId}/shipping-rate/{shippingRateId}—
get-store-settingsreadGET/store/store-setting—
create-store-settingadmin, writePOST/store/store-setting—
get-surveysreadGET/surveys/—
get-surveys-submissionsreadGET/surveys/submissions—
create-useradmin, writePOST/users/—
search-usersreadGET/users/search—
filter-users-by-emailreadPOST/users/search/filter-by-email—
delete-useradmin, deleteDELETE/users/{userId}—
get-userreadGET/users/{userId}—
update-useradmin, writePUT/users/{userId}—
voice-ai.create-actionadmin, writePOST/voice-ai/actions—
voice-ai.delete-actionadmin, deleteDELETE/voice-ai/actions/{actionId}—
get-actionreadGET/voice-ai/actions/{actionId}—
voice-ai.update-actionadmin, writePUT/voice-ai/actions/{actionId}—
get-agentsreadGET/voice-ai/agents—
voice-ai.create-agentadmin, writePOST/voice-ai/agents—
voice-ai.delete-agentadmin, deleteDELETE/voice-ai/agents/{agentId}—
voice-ai.get-agentreadGET/voice-ai/agents/{agentId}—
patch-agentadmin, writePATCH/voice-ai/agents/{agentId}—
get-call-logsreadGET/voice-ai/dashboard/call-logs—
getCallLogreadGET/voice-ai/dashboard/call-logs/{callId}—
get-workflowreadGET/workflows/—

Report an issue with this page

Necessary

Required for sign-in, security, authorization, and remembering your choices.

Always active

Analytics

Helps us understand which product and documentation features are useful.

Performance diagnostics

Uses performance tracing and privacy-masked session replay to diagnose problems.

You can change these choices at any time from Cookie settings.