Skip to main content

Scopes

Scopes control what an API key can do. They are chosen at key-create time and cannot be changed later. rotate the key to change scopes. Start with the least-privilege scope set that your integration needs.

Available scopes

ScopeGrants
crm.contacts.readList and retrieve CRM contacts
crm.contacts.writeCreate and update CRM contacts
crm.contacts.deleteSoft-delete CRM contacts (30-day recycle bin, restore possible)
crm.companies.readList and retrieve CRM companies
crm.companies.writeCreate and update CRM companies
crm.companies.deleteSoft-delete CRM companies (30-day recycle bin, restore possible)
crm.deals.readList and retrieve CRM deals
crm.deals.writeCreate and update CRM deals
crm.deals.deleteSoft-delete CRM deals (30-day recycle bin, restore possible)
crm.tasks.readList and retrieve CRM tasks
crm.tasks.writeCreate, update and complete CRM tasks
crm.tasks.deleteSoft-delete CRM tasks (30-day recycle bin)
crm.notes.readList and retrieve CRM notes
crm.notes.writeCreate and update CRM notes
crm.notes.deleteSoft-delete CRM notes (30-day recycle bin)
crm.segments.readList and retrieve CRM segments
crm.segments.writeCreate/update segments, manage static-segment membership
crm.segments.deleteSoft-delete CRM segments (30-day recycle bin)
sales.quotes.readList and retrieve sales quotes
sales.quotes.writeCreate, update, send and cancel sales quotes
sales.quotes.deleteSoft-delete sales quotes (30-day recycle bin, restore possible)
sales.invoices.readList and retrieve sales invoices
sales.invoices.writeCreate, update, send, mark paid, void, credit-note and send reminders on invoices
sales.invoices.deleteSoft-delete draft invoices only (30-day recycle bin, restore possible)
sales.products.readList and retrieve products in the sales catalog
sales.products.writeCreate and update products
sales.products.deleteSoft-delete products (30-day recycle bin, restore possible)
bookings.entries.readList and retrieve Advanced Booking entries
bookings.entries.writeCreate, update and change status on bookings
bookings.entries.deleteSoft-delete bookings (30-day recycle bin)
bookings.customers.readList and retrieve Advanced Booking customers
bookings.customers.writeCreate and update booking customers
bookings.customers.deleteSoft-delete booking customers (30-day recycle bin, GDPR-anonymized rows preserved)
webhooks.readList webhook endpoints and delivery logs (via /api/caller/webhooks)
webhooks.writeCreate, update, and delete webhook endpoints (via /api/caller/webhooks)

Meta-scopes

Wildcards let you grant broader access without listing every scope. Match by module or action.

Meta-scopeGrants
*Grants everything. Use with caution. audit the key regularly.
crm.*Grants all crm.* scopes (contacts + companies + deals + tasks + notes + segments, read + write + delete)
sales.*Grants all sales.* scopes (quotes + invoices + products, read + write + delete)
bookings.*Grants all bookings.* scopes (entries + customers, read + write + delete)
*.readGrants every .read scope across modules. safe for reporting integrations
*.writeGrants every .write scope
*.deleteGrants every .delete scope (destructive — audit key usage regularly)
crm.contacts.*Grants read + write + delete for one specific resource. Any resource pattern works.

Scope-check errors

When a request needs a scope that the key doesn't grant, we return:

HTTP 403 Forbidden
{
  "error": {
    "type": "permission_denied",
    "code": "SCOPE_INSUFFICIENT",
    "message": "This API key is missing required scope: crm.contacts.write",
    "param": "crm.contacts.write"
  }
}

Recommended scope patterns

Website form → CRM
crm.contacts.write

Only creates contacts. Can't read your CRM data if compromised.

BI / reporting tool
*.read

Read-only across all modules. Safe for analytics pulls.

Full-sync CRM integration (e.g. Zapier)
crm.*

CRUD on contacts, companies and deals. Excludes sales/marketing/bookings.

Scopes - Workspace API - Staffify