API reference

This reference is rendered from packages/shared/contracts/openapi.v1.yaml.

Operation contract

Every operation documents:

  • Method and route.
  • Operation ID.
  • Required scopes.
  • Resource group.
  • Whether a JSON request body is required.
  • Whether idempotency_key is supported in the JSON body for safe retries.

The OpenAPI file is the shared REST contract. Backend checks validate implemented routes against this contract as the API evolves.

OpenAPI operations

GET/workspace

Get workspace summary

getWorkspace

MVP
Required scopes
crm:readsupport:readtasks:readactivity:readcms:readassets:readintegrations:readanalytics:readbi:read
Resource group
Workspace
Request body
No request body.
Idempotency
Not required for this read operation.

Parameters

This operation has no path, query, or custom header parameters.

Request body example

This operation does not send a JSON request body.

Response example

{
  "data": {
    "id": "wrk_123",
    "name": "Sandbox Workspace",
    "enabled_modules": [
      "activity_log",
      "tasks",
      "crm",
      "support",
      "cms",
      "assets",
      "integrations",
      "analytics_governance"
    ]
  },
  "request_id": "req_134"
}

Common errors

unauthorizedHTTP 401

A valid bearer token is required.

rate_limitedHTTP 429

The workspace exceeded the current rate limit.

The token does not include the scope required for this operation.

The workspace could not be found for this token.

GET/contacts

Search contacts

listContacts

MVP
Required scopes
crm:read
Resource group
Contacts
Request body
No request body.
Idempotency
Not required for this read operation.

Parameters

ParameterInTypeRequiredDescription
queryquerystringNoFree-text search across contact name, email, company, and notes.
company_idquerystringNoRestrict results to contacts linked to this company.
limitqueryinteger · min 1 · max 100NoMaximum number of contacts to return.
cursorquerystringNoOpaque cursor from a previous response's next_cursor.

Request body example

This operation does not send a JSON request body.

Response example

{
  "data": [
    {
      "id": "con_123",
      "name": "Jane Doe",
      "email": "jane@acme.com"
    }
  ],
  "request_id": "req_124",
  "next_cursor": null
}

Common errors

unauthorizedHTTP 401

A valid bearer token is required.

rate_limitedHTTP 429

The workspace exceeded the current rate limit.

The token does not include the scope required for this operation.

The request payload failed schema validation.

POST/contacts

Create contact

createContact

MVP
Required scopes
crm:write
Resource group
Contacts
Request body
JSON body accepted. Path parameters and Idempotency-Key stay outside the body.
Idempotency
Supports Idempotency-Key for safe retries.

Parameters

ParameterInTypeRequiredDescription
Idempotency-KeyheaderstringNoStable key for safe retries of the same logical write.

Request body example

{
  "name": "Jane Doe",
  "email": "jane@acme.com",
  "company_name": "Acme Corp"
}

Response example

{
  "data": {
    "id": "con_123",
    "name": "Jane Doe",
    "email": "jane@acme.com",
    "company_name": "Acme Corp"
  },
  "request_id": "req_123"
}

Common errors

unauthorizedHTTP 401

A valid bearer token is required.

rate_limitedHTTP 429

The workspace exceeded the current rate limit.

The token does not include the scope required for this operation.

The request payload failed schema validation.

The idempotency key was reused with a different request body.

GET/companies

Search companies

listCompanies

MVP
Required scopes
crm:read
Resource group
Companies
Request body
No request body.
Idempotency
Not required for this read operation.

Parameters

ParameterInTypeRequiredDescription
queryquerystringNoFree-text search across company name, domain, website, and notes.
limitqueryinteger · min 1 · max 100NoMaximum number of companies to return.
cursorquerystringNoOpaque cursor from a previous response's next_cursor.

Request body example

This operation does not send a JSON request body.

Response example

{
  "data": [
    {
      "id": "com_123",
      "name": "Acme Corp",
      "domain": "acme.com"
    }
  ],
  "request_id": "req_126",
  "next_cursor": null
}

Common errors

unauthorizedHTTP 401

A valid bearer token is required.

rate_limitedHTTP 429

The workspace exceeded the current rate limit.

The token does not include the scope required for this operation.

The request payload failed schema validation.

POST/companies

Create company

createCompany

MVP
Required scopes
crm:write
Resource group
Companies
Request body
JSON body accepted. Path parameters and Idempotency-Key stay outside the body.
Idempotency
Supports Idempotency-Key for safe retries.

Parameters

ParameterInTypeRequiredDescription
Idempotency-KeyheaderstringNoStable key for safe retries of the same logical write.

Request body example

{
  "name": "Acme Corp",
  "domain": "acme.com"
}

Response example

{
  "data": {
    "id": "com_123",
    "name": "Acme Corp",
    "domain": "acme.com"
  },
  "request_id": "req_125"
}

Common errors

unauthorizedHTTP 401

A valid bearer token is required.

rate_limitedHTTP 429

The workspace exceeded the current rate limit.

The token does not include the scope required for this operation.

The request payload failed schema validation.

The idempotency key was reused with a different request body.

GET/leads

List leads

listLeads

MVP
Required scopes
crm:read
Resource group
Deals
Request body
No request body.
Idempotency
Not required for this read operation.

Parameters

ParameterInTypeRequiredDescription
queryquerystringNoNo description yet.
statusquerystring · new | working | qualified | disqualified | convertedNoNo description yet.
sourcequerystring · manual | website | referral | campaign | import | api | mcp | otherNoNo description yet.
custom_field_keyquerystringNoNo description yet.
custom_field_valuequerystringNoNo description yet.
limitqueryinteger · min 1 · max 100NoNo description yet.
cursorquerystringNoNo description yet.

Request body example

This operation does not send a JSON request body.

Response example

{
  "data": [
    {
      "id": "lead_123",
      "name": "Priya Shah"
    }
  ],
  "request_id": "req_201",
  "next_cursor": null
}

Common errors

unauthorizedHTTP 401

A valid bearer token is required.

rate_limitedHTTP 429

The workspace exceeded the current rate limit.

The token does not include the scope required for this operation.

The request payload failed schema validation.

POST/leads

Create lead

createLead

MVP
Required scopes
crm:write
Resource group
Deals
Request body
JSON body accepted. Path parameters and Idempotency-Key stay outside the body.
Idempotency
Supports Idempotency-Key for safe retries.

Parameters

ParameterInTypeRequiredDescription
Idempotency-KeyheaderstringNoStable key for safe retries of the same logical write.

Request body example

{
  "name": "Priya Shah",
  "company_name": "Northstar Studio",
  "source": "website"
}

Response example

{
  "data": {
    "id": "lead_123",
    "name": "Priya Shah",
    "status": "new"
  },
  "request_id": "req_200"
}

Common errors

unauthorizedHTTP 401

A valid bearer token is required.

rate_limitedHTTP 429

The workspace exceeded the current rate limit.

The token does not include the scope required for this operation.

The request payload failed schema validation.

The idempotency key was reused with a different request body.

POST/leads/{lead_id}/convert

Convert lead

convertLead

MVP
Required scopes
crm:write
Resource group
Deals
Request body
JSON body accepted. Path parameters and Idempotency-Key stay outside the body.
Idempotency
Supports Idempotency-Key for safe retries.

Parameters

ParameterInTypeRequiredDescription
lead_idpathstringYesResource identifier from /leads/{lead_id}/convert.
Idempotency-KeyheaderstringNoStable key for safe retries of the same logical write.

Request body example

{
  "create_deal": true,
  "deal_name": "Website redesign"
}

Response example

{
  "data": {
    "id": "lead_123",
    "status": "converted"
  },
  "request_id": "req_202"
}

Common errors

unauthorizedHTTP 401

A valid bearer token is required.

rate_limitedHTTP 429

The workspace exceeded the current rate limit.

The token does not include the scope required for this operation.

The request payload failed schema validation.

The requested resource does not exist in this workspace.

GET/deal-stages

List deal stages

listDealStages

MVP
Required scopes
crm:read
Resource group
Deals
Request body
No request body.
Idempotency
Not required for this read operation.

Parameters

ParameterInTypeRequiredDescription
queryquerystringNoNo description yet.
limitqueryinteger · min 1 · max 100NoNo description yet.
cursorquerystringNoNo description yet.

Request body example

This operation does not send a JSON request body.

Response example

{
  "data": [
    {
      "id": "stage_123",
      "key": "discovery"
    }
  ],
  "request_id": "req_204",
  "next_cursor": null
}

Common errors

unauthorizedHTTP 401

A valid bearer token is required.

rate_limitedHTTP 429

The workspace exceeded the current rate limit.

The token does not include the scope required for this operation.

The request payload failed schema validation.

POST/deal-stages

Create deal stage

createDealStage

MVP
Required scopes
crm:write
Resource group
Deals
Request body
JSON body accepted. Path parameters and Idempotency-Key stay outside the body.
Idempotency
Supports Idempotency-Key for safe retries.

Parameters

ParameterInTypeRequiredDescription
Idempotency-KeyheaderstringNoStable key for safe retries of the same logical write.

Request body example

{
  "key": "discovery",
  "name": "Discovery",
  "position": 10
}

Response example

{
  "data": {
    "id": "stage_123",
    "key": "discovery"
  },
  "request_id": "req_203"
}

Common errors

unauthorizedHTTP 401

A valid bearer token is required.

rate_limitedHTTP 429

The workspace exceeded the current rate limit.

The token does not include the scope required for this operation.

The request payload failed schema validation.

The idempotency key was reused with a different request body.

POST/deals

Create deal

createDeal

MVP
Required scopes
crm:write
Resource group
Deals
Request body
JSON body accepted. Path parameters and Idempotency-Key stay outside the body.
Idempotency
Supports Idempotency-Key for safe retries.

Parameters

ParameterInTypeRequiredDescription
Idempotency-KeyheaderstringNoStable key for safe retries of the same logical write.

Request body example

{
  "name": "Pilot subscription",
  "company_id": "com_123",
  "stage": "qualified",
  "amount_cents": 500000,
  "currency": "USD"
}

Response example

{
  "data": {
    "id": "deal_123",
    "name": "Pilot subscription",
    "stage": "qualified"
  },
  "request_id": "req_127"
}

Common errors

unauthorizedHTTP 401

A valid bearer token is required.

rate_limitedHTTP 429

The workspace exceeded the current rate limit.

The token does not include the scope required for this operation.

The request payload failed schema validation.

The requested resource does not exist in this workspace.

PATCH/deals/{deal_id}

Update deal

updateDeal

MVP
Required scopes
crm:write
Resource group
Deals
Request body
JSON body accepted. Path parameters and Idempotency-Key stay outside the body.
Idempotency
Supports Idempotency-Key for safe retries.

Parameters

ParameterInTypeRequiredDescription
deal_idpathstringYesDeal ID to update.
Idempotency-KeyheaderstringNoStable key for safe retries of the same logical write.

Request body example

{
  "stage": "proposal",
  "amount_cents": 750000,
  "currency": "USD"
}

Response example

{
  "data": {
    "id": "deal_123",
    "stage": "proposal",
    "amount_cents": 750000,
    "currency": "USD"
  },
  "request_id": "req_128"
}

Common errors

unauthorizedHTTP 401

A valid bearer token is required.

rate_limitedHTTP 429

The workspace exceeded the current rate limit.

The token does not include the scope required for this operation.

The request payload failed schema validation.

The requested resource does not exist in this workspace.

GET/invoices

List invoices

listInvoices

MVP
Required scopes
crm:read
Resource group
Deals
Request body
No request body.
Idempotency
Not required for this read operation.

Parameters

ParameterInTypeRequiredDescription
statusquerystringNoNo description yet.
company_idquerystringNoNo description yet.
contact_idquerystringNoNo description yet.
deal_idquerystringNoNo description yet.
limitqueryinteger · min 1 · max 100NoNo description yet.
cursorquerystringNoNo description yet.

Request body example

This operation does not send a JSON request body.

Response example

{
  "data": [
    {
      "id": "inv_123",
      "status": "sent"
    }
  ],
  "request_id": "req_206",
  "next_cursor": null
}

Common errors

unauthorizedHTTP 401

A valid bearer token is required.

rate_limitedHTTP 429

The workspace exceeded the current rate limit.

The token does not include the scope required for this operation.

The request payload failed schema validation.

POST/invoices

Create invoice

createInvoice

MVP
Required scopes
crm:write
Resource group
Deals
Request body
JSON body accepted. Path parameters and Idempotency-Key stay outside the body.
Idempotency
Supports Idempotency-Key for safe retries.

Parameters

ParameterInTypeRequiredDescription
Idempotency-KeyheaderstringNoStable key for safe retries of the same logical write.

Request body example

{
  "invoice_number": "INV-1001",
  "line_items": [
    {
      "kind": "service",
      "name": "Website redesign",
      "unit_amount_cents": 500000
    }
  ]
}

Response example

{
  "data": {
    "id": "inv_123",
    "invoice_number": "INV-1001"
  },
  "request_id": "req_205"
}

Common errors

unauthorizedHTTP 401

A valid bearer token is required.

rate_limitedHTTP 429

The workspace exceeded the current rate limit.

The token does not include the scope required for this operation.

The request payload failed schema validation.

The requested resource does not exist in this workspace.

POST/payments

Record payment

recordPayment

MVP
Required scopes
crm:write
Resource group
Deals
Request body
JSON body accepted. Path parameters and Idempotency-Key stay outside the body.
Idempotency
Supports Idempotency-Key for safe retries.

Parameters

ParameterInTypeRequiredDescription
Idempotency-KeyheaderstringNoStable key for safe retries of the same logical write.

Request body example

{
  "invoice_id": "inv_123",
  "amount_cents": 250000
}

Response example

{
  "data": {
    "id": "pay_123",
    "amount_cents": 250000
  },
  "request_id": "req_207"
}

Common errors

unauthorizedHTTP 401

A valid bearer token is required.

rate_limitedHTTP 429

The workspace exceeded the current rate limit.

The token does not include the scope required for this operation.

The request payload failed schema validation.

The requested resource does not exist in this workspace.

GET/accounting/accounts

List accounting accounts

listAccountingAccounts

MVP
Required scopes
crm:read
Resource group
Deals
Request body
No request body.
Idempotency
Not required for this read operation.

Parameters

ParameterInTypeRequiredDescription
typequerystringNoNo description yet.
queryquerystringNoNo description yet.
limitqueryinteger · min 1 · max 100NoNo description yet.
cursorquerystringNoNo description yet.

Request body example

This operation does not send a JSON request body.

Response example

{
  "data": [
    {
      "id": "acct_123",
      "name": "Services revenue"
    }
  ],
  "request_id": "req_209",
  "next_cursor": null
}

Common errors

unauthorizedHTTP 401

A valid bearer token is required.

rate_limitedHTTP 429

The workspace exceeded the current rate limit.

The token does not include the scope required for this operation.

The request payload failed schema validation.

POST/accounting/accounts

Create accounting account

createAccountingAccount

MVP
Required scopes
crm:write
Resource group
Deals
Request body
JSON body accepted. Path parameters and Idempotency-Key stay outside the body.
Idempotency
Supports Idempotency-Key for safe retries.

Parameters

ParameterInTypeRequiredDescription
Idempotency-KeyheaderstringNoStable key for safe retries of the same logical write.

Request body example

{
  "code": "4000",
  "name": "Services revenue",
  "type": "revenue"
}

Response example

{
  "data": {
    "id": "acct_123",
    "code": "4000"
  },
  "request_id": "req_208"
}

Common errors

unauthorizedHTTP 401

A valid bearer token is required.

rate_limitedHTTP 429

The workspace exceeded the current rate limit.

The token does not include the scope required for this operation.

The request payload failed schema validation.

The idempotency key was reused with a different request body.

GET/accounting/journal-entries

List journal entries

listJournalEntries

MVP
Required scopes
crm:read
Resource group
Deals
Request body
No request body.
Idempotency
Not required for this read operation.

Parameters

ParameterInTypeRequiredDescription
statusquerystringNoNo description yet.
queryquerystringNoNo description yet.
limitqueryinteger · min 1 · max 100NoNo description yet.
cursorquerystringNoNo description yet.

Request body example

This operation does not send a JSON request body.

Response example

{
  "data": [
    {
      "id": "je_123",
      "status": "posted"
    }
  ],
  "request_id": "req_211",
  "next_cursor": null
}

Common errors

unauthorizedHTTP 401

A valid bearer token is required.

rate_limitedHTTP 429

The workspace exceeded the current rate limit.

The token does not include the scope required for this operation.

The request payload failed schema validation.

POST/accounting/journal-entries

Create journal entry

createJournalEntry

MVP
Required scopes
crm:write
Resource group
Deals
Request body
JSON body accepted. Path parameters and Idempotency-Key stay outside the body.
Idempotency
Supports Idempotency-Key for safe retries.

Parameters

ParameterInTypeRequiredDescription
Idempotency-KeyheaderstringNoStable key for safe retries of the same logical write.

Request body example

{
  "status": "posted",
  "lines": [
    {
      "account_id": "acct_cash",
      "debit_cents": 10000
    },
    {
      "account_id": "acct_ar",
      "credit_cents": 10000
    }
  ]
}

Response example

{
  "data": {
    "id": "je_123",
    "status": "posted"
  },
  "request_id": "req_210"
}

Common errors

unauthorizedHTTP 401

A valid bearer token is required.

rate_limitedHTTP 429

The workspace exceeded the current rate limit.

The token does not include the scope required for this operation.

The request payload failed schema validation.

The requested resource does not exist in this workspace.

GET/support/queues

List support queues

listSupportQueues

MVP
Required scopes
support:read
Resource group
Support
Request body
No request body.
Idempotency
Not required for this read operation.

Parameters

ParameterInTypeRequiredDescription
queryquerystringNoNo description yet.
statusquerystring · active | paused | archivedNoNo description yet.
custom_field_keyquerystringNoNo description yet.
custom_field_valuequerystringNoNo description yet.
limitqueryinteger · min 1 · max 100NoNo description yet.
cursorquerystringNoNo description yet.

Request body example

This operation does not send a JSON request body.

Response example

{
  "data": [
    {
      "id": "queue_123",
      "name": "Priority Support"
    }
  ],
  "request_id": "req_301",
  "next_cursor": null
}

Common errors

unauthorizedHTTP 401

A valid bearer token is required.

rate_limitedHTTP 429

The workspace exceeded the current rate limit.

The token does not include the scope required for this operation.

The request payload failed schema validation.

POST/support/queues

Create support queue

createSupportQueue

MVP
Required scopes
support:write
Resource group
Support
Request body
JSON body accepted. Path parameters and Idempotency-Key stay outside the body.
Idempotency
Supports Idempotency-Key for safe retries.

Parameters

ParameterInTypeRequiredDescription
Idempotency-KeyheaderstringNoStable key for safe retries of the same logical write.

Request body example

{
  "key": "priority",
  "name": "Priority Support",
  "first_response_target_minutes": 120
}

Response example

{
  "data": {
    "id": "queue_123",
    "key": "priority"
  },
  "request_id": "req_300"
}

Common errors

unauthorizedHTTP 401

A valid bearer token is required.

rate_limitedHTTP 429

The workspace exceeded the current rate limit.

The token does not include the scope required for this operation.

The request payload failed schema validation.

The idempotency key was reused with a different request body.

GET/support/tickets

List support tickets

listSupportTickets

MVP
Required scopes
support:read
Resource group
Support
Request body
No request body.
Idempotency
Not required for this read operation.

Parameters

ParameterInTypeRequiredDescription
queryquerystringNoNo description yet.
statusquerystring · new | open | pending | waiting_on_customer | resolved | closedNoNo description yet.
priorityquerystring · low | normal | high | urgentNoNo description yet.
sourcequerystring · manual | email | chat | phone | web | api | mcp | slack | otherNoNo description yet.
categoryquerystringNoNo description yet.
queue_idquerystringNoNo description yet.
assignee_idquerystringNoNo description yet.
contact_idquerystringNoNo description yet.
company_idquerystringNoNo description yet.
deal_idquerystringNoNo description yet.
lead_idquerystringNoNo description yet.
invoice_idquerystringNoNo description yet.
custom_field_keyquerystringNoNo description yet.
custom_field_valuequerystringNoNo description yet.
limitqueryinteger · min 1 · max 100NoNo description yet.
cursorquerystringNoNo description yet.

Request body example

This operation does not send a JSON request body.

Response example

{
  "data": [
    {
      "id": "ticket_123",
      "priority": "urgent"
    }
  ],
  "request_id": "req_303",
  "next_cursor": null
}

Common errors

unauthorizedHTTP 401

A valid bearer token is required.

rate_limitedHTTP 429

The workspace exceeded the current rate limit.

The token does not include the scope required for this operation.

The request payload failed schema validation.

POST/support/tickets

Create support ticket

createSupportTicket

MVP
Required scopes
support:write
Resource group
Support
Request body
JSON body accepted. Path parameters and Idempotency-Key stay outside the body.
Idempotency
Supports Idempotency-Key for safe retries.

Parameters

ParameterInTypeRequiredDescription
Idempotency-KeyheaderstringNoStable key for safe retries of the same logical write.

Request body example

{
  "subject": "Customer cannot download invoice",
  "priority": "urgent",
  "category": "billing"
}

Response example

{
  "data": {
    "id": "ticket_123",
    "subject": "Customer cannot download invoice",
    "status": "new"
  },
  "request_id": "req_302"
}

Common errors

unauthorizedHTTP 401

A valid bearer token is required.

rate_limitedHTTP 429

The workspace exceeded the current rate limit.

The token does not include the scope required for this operation.

The request payload failed schema validation.

The requested resource does not exist in this workspace.

The idempotency key was reused with a different request body.

PATCH/support/tickets/{ticket_id}

Update support ticket

updateSupportTicket

MVP
Required scopes
support:write
Resource group
Support
Request body
JSON body accepted. Path parameters and Idempotency-Key stay outside the body.
Idempotency
Supports Idempotency-Key for safe retries.

Parameters

ParameterInTypeRequiredDescription
ticket_idpathstringYesResource identifier from /support/tickets/{ticket_id}.
Idempotency-KeyheaderstringNoStable key for safe retries of the same logical write.

Request body example

{
  "status": "open",
  "queue_id": "queue_123"
}

Response example

{
  "data": {
    "id": "ticket_123",
    "status": "open"
  },
  "request_id": "req_304"
}

Common errors

unauthorizedHTTP 401

A valid bearer token is required.

rate_limitedHTTP 429

The workspace exceeded the current rate limit.

The token does not include the scope required for this operation.

The request payload failed schema validation.

The requested resource does not exist in this workspace.

GET/support/tickets/{ticket_id}/messages

List support ticket messages

listSupportTicketMessages

MVP
Required scopes
support:read
Resource group
Support
Request body
No request body.
Idempotency
Not required for this read operation.

Parameters

ParameterInTypeRequiredDescription
ticket_idpathstringYesResource identifier from /support/tickets/{ticket_id}/messages.
ticket_idquerystringYesNo description yet.
queryquerystringNoNo description yet.
custom_field_keyquerystringNoNo description yet.
custom_field_valuequerystringNoNo description yet.
limitqueryinteger · min 1 · max 100NoNo description yet.
cursorquerystringNoNo description yet.

Request body example

This operation does not send a JSON request body.

Response example

{
  "data": [
    {
      "id": "msg_123",
      "body": "I still cannot access the invoice."
    }
  ],
  "request_id": "req_306",
  "next_cursor": null
}

Common errors

unauthorizedHTTP 401

A valid bearer token is required.

rate_limitedHTTP 429

The workspace exceeded the current rate limit.

The token does not include the scope required for this operation.

The request payload failed schema validation.

The requested resource does not exist in this workspace.

POST/support/tickets/{ticket_id}/messages

Add support ticket message

addSupportTicketMessage

MVP
Required scopes
support:write
Resource group
Support
Request body
JSON body accepted. Path parameters and Idempotency-Key stay outside the body.
Idempotency
Supports Idempotency-Key for safe retries.

Parameters

ParameterInTypeRequiredDescription
ticket_idpathstringYesResource identifier from /support/tickets/{ticket_id}/messages.
Idempotency-KeyheaderstringNoStable key for safe retries of the same logical write.

Request body example

{
  "direction": "inbound",
  "channel": "email",
  "body": "I still cannot access the invoice."
}

Response example

{
  "data": {
    "id": "msg_123",
    "ticket_id": "ticket_123"
  },
  "request_id": "req_305"
}

Common errors

unauthorizedHTTP 401

A valid bearer token is required.

rate_limitedHTTP 429

The workspace exceeded the current rate limit.

The token does not include the scope required for this operation.

The request payload failed schema validation.

The requested resource does not exist in this workspace.

The idempotency key was reused with a different request body.

GET/support/tickets/{ticket_id}/comments

List support ticket comments

listSupportTicketComments

MVP
Required scopes
support:read
Resource group
Support
Request body
No request body.
Idempotency
Not required for this read operation.

Parameters

ParameterInTypeRequiredDescription
ticket_idpathstringYesResource identifier from /support/tickets/{ticket_id}/comments.
ticket_idquerystringYesNo description yet.
queryquerystringNoNo description yet.
custom_field_keyquerystringNoNo description yet.
custom_field_valuequerystringNoNo description yet.
limitqueryinteger · min 1 · max 100NoNo description yet.
cursorquerystringNoNo description yet.

Request body example

This operation does not send a JSON request body.

Response example

{
  "data": [
    {
      "id": "comment_123",
      "body": "Finance is checking the invoice export."
    }
  ],
  "request_id": "req_308",
  "next_cursor": null
}

Common errors

unauthorizedHTTP 401

A valid bearer token is required.

rate_limitedHTTP 429

The workspace exceeded the current rate limit.

The token does not include the scope required for this operation.

The request payload failed schema validation.

The requested resource does not exist in this workspace.

POST/support/tickets/{ticket_id}/comments

Add support ticket comment

addSupportTicketComment

MVP
Required scopes
support:write
Resource group
Support
Request body
JSON body accepted. Path parameters and Idempotency-Key stay outside the body.
Idempotency
Supports Idempotency-Key for safe retries.

Parameters

ParameterInTypeRequiredDescription
ticket_idpathstringYesResource identifier from /support/tickets/{ticket_id}/comments.
Idempotency-KeyheaderstringNoStable key for safe retries of the same logical write.

Request body example

{
  "body": "Finance is checking the invoice export.",
  "pinned": true
}

Response example

{
  "data": {
    "id": "comment_123",
    "pinned": true
  },
  "request_id": "req_307"
}

Common errors

unauthorizedHTTP 401

A valid bearer token is required.

rate_limitedHTTP 429

The workspace exceeded the current rate limit.

The token does not include the scope required for this operation.

The request payload failed schema validation.

The requested resource does not exist in this workspace.

The idempotency key was reused with a different request body.

GET/tasks

List tasks

listTasks

MVP
Required scopes
tasks:read
Resource group
Tasks
Request body
No request body.
Idempotency
Not required for this read operation.

Parameters

ParameterInTypeRequiredDescription
statusquerystring · open | completed | canceledNoFilter tasks by lifecycle status.
assignee_idquerystringNoRestrict results to tasks assigned to this user or agent.
limitqueryinteger · min 1 · max 100NoMaximum number of tasks to return.
cursorquerystringNoOpaque cursor from a previous response's next_cursor.

Request body example

This operation does not send a JSON request body.

Response example

{
  "data": [
    {
      "id": "task_123",
      "title": "Follow up with Jane Doe",
      "status": "open"
    }
  ],
  "request_id": "req_130",
  "next_cursor": null
}

Common errors

unauthorizedHTTP 401

A valid bearer token is required.

rate_limitedHTTP 429

The workspace exceeded the current rate limit.

The token does not include the scope required for this operation.

The request payload failed schema validation.

POST/tasks

Create task

createTask

MVP
Required scopes
tasks:write
Resource group
Tasks
Request body
JSON body accepted. Path parameters and Idempotency-Key stay outside the body.
Idempotency
Supports Idempotency-Key for safe retries.

Parameters

ParameterInTypeRequiredDescription
Idempotency-KeyheaderstringNoStable key for safe retries of the same logical write.

Request body example

{
  "title": "Follow up with Jane Doe",
  "related_resource_type": "contact",
  "related_resource_id": "con_123"
}

Response example

{
  "data": {
    "id": "task_123",
    "title": "Follow up with Jane Doe",
    "status": "open"
  },
  "request_id": "req_129"
}

Common errors

unauthorizedHTTP 401

A valid bearer token is required.

rate_limitedHTTP 429

The workspace exceeded the current rate limit.

The token does not include the scope required for this operation.

The request payload failed schema validation.

The requested resource does not exist in this workspace.

PATCH/tasks/{task_id}

Update task

updateTask

MVP
Required scopes
tasks:write
Resource group
Tasks
Request body
JSON body accepted. Path parameters and Idempotency-Key stay outside the body.
Idempotency
Supports Idempotency-Key for safe retries.

Parameters

ParameterInTypeRequiredDescription
task_idpathstringYesTask ID to update.
Idempotency-KeyheaderstringNoStable key for safe retries of the same logical write.

Request body example

{
  "status": "completed",
  "completed_note": "Jane confirmed the next call."
}

Response example

{
  "data": {
    "id": "task_123",
    "status": "completed",
    "completed_note": "Jane confirmed the next call."
  },
  "request_id": "req_131"
}

Common errors

unauthorizedHTTP 401

A valid bearer token is required.

rate_limitedHTTP 429

The workspace exceeded the current rate limit.

The token does not include the scope required for this operation.

The request payload failed schema validation.

The requested resource does not exist in this workspace.

GET/activities

Search activities

listActivities

MVP
Required scopes
activity:read
Resource group
Activities
Request body
No request body.
Idempotency
Not required for this read operation.

Parameters

ParameterInTypeRequiredDescription
queryquerystringNoFree-text search across activity summary and body.
typequerystring · note | call | email | meeting | agent_actionNoRestrict results to one activity category.
limitqueryinteger · min 1 · max 100NoMaximum number of activities to return.
cursorquerystringNoOpaque cursor from a previous response's next_cursor.

Request body example

This operation does not send a JSON request body.

Response example

{
  "data": [
    {
      "id": "act_123",
      "summary": "Jane asked for pricing details"
    }
  ],
  "request_id": "req_133",
  "next_cursor": null
}

Common errors

unauthorizedHTTP 401

A valid bearer token is required.

rate_limitedHTTP 429

The workspace exceeded the current rate limit.

The token does not include the scope required for this operation.

The request payload failed schema validation.

POST/activities

Log activity

createActivity

MVP
Required scopes
activity:write
Resource group
Activities
Request body
JSON body accepted. Path parameters and Idempotency-Key stay outside the body.
Idempotency
Supports Idempotency-Key for safe retries.

Parameters

ParameterInTypeRequiredDescription
Idempotency-KeyheaderstringNoStable key for safe retries of the same logical write.

Request body example

{
  "type": "email",
  "summary": "Jane asked for pricing details",
  "related_resource_type": "contact",
  "related_resource_id": "con_123"
}

Response example

{
  "data": {
    "id": "act_123",
    "type": "email",
    "summary": "Jane asked for pricing details"
  },
  "request_id": "req_132"
}

Common errors

unauthorizedHTTP 401

A valid bearer token is required.

rate_limitedHTTP 429

The workspace exceeded the current rate limit.

The token does not include the scope required for this operation.

The request payload failed schema validation.

The requested resource does not exist in this workspace.

POST/cms/collections

Create CMS collection

createCmsCollection

MVP
Required scopes
cms:write
Resource group
CMS
Request body
JSON body accepted. Path parameters and Idempotency-Key stay outside the body.
Idempotency
Supports Idempotency-Key for safe retries.

Parameters

ParameterInTypeRequiredDescription
Idempotency-KeyheaderstringNoStable key for safe retries of the same logical write.

Request body example

{
  "name": "Blog Posts",
  "key": "blog_posts",
  "schema": {
    "fields": [
      {
        "key": "title",
        "type": "string",
        "required": true
      },
      {
        "key": "slug",
        "type": "string",
        "required": true
      },
      {
        "key": "body",
        "type": "markdown",
        "required": true
      }
    ]
  }
}

Response example

{
  "data": {
    "id": "col_123",
    "key": "blog_posts",
    "name": "Blog Posts"
  },
  "request_id": "req_135"
}

Common errors

unauthorizedHTTP 401

A valid bearer token is required.

rate_limitedHTTP 429

The workspace exceeded the current rate limit.

The token does not include the scope required for this operation.

The request payload failed schema validation.

The idempotency key was reused with a different request body.

GET/cms/sites

List CMS sites

listCmsSites

MVP
Required scopes
cms:read
Resource group
CMS
Request body
No request body.
Idempotency
Not required for this read operation.

Parameters

ParameterInTypeRequiredDescription
queryquerystringNoNo description yet.
limitqueryinteger · min 1 · max 100NoNo description yet.
cursorquerystringNoNo description yet.

Request body example

This operation does not send a JSON request body.

Response example

{
  "data": [
    {
      "id": "site_123",
      "name": "slab5.com"
    }
  ],
  "request_id": "req_213",
  "next_cursor": null
}

Common errors

unauthorizedHTTP 401

A valid bearer token is required.

rate_limitedHTTP 429

The workspace exceeded the current rate limit.

The token does not include the scope required for this operation.

The request payload failed schema validation.

POST/cms/sites

Create CMS site

createCmsSite

MVP
Required scopes
cms:write
Resource group
CMS
Request body
JSON body accepted. Path parameters and Idempotency-Key stay outside the body.
Idempotency
Supports Idempotency-Key for safe retries.

Parameters

ParameterInTypeRequiredDescription
Idempotency-KeyheaderstringNoStable key for safe retries of the same logical write.

Request body example

{
  "key": "slab5_com",
  "name": "slab5.com",
  "primary_domain": "slab5.com"
}

Response example

{
  "data": {
    "id": "site_123",
    "key": "slab5_com"
  },
  "request_id": "req_212"
}

Common errors

unauthorizedHTTP 401

A valid bearer token is required.

rate_limitedHTTP 429

The workspace exceeded the current rate limit.

The token does not include the scope required for this operation.

The request payload failed schema validation.

The idempotency key was reused with a different request body.

GET/cms/entries

Search CMS entries

listCmsEntries

MVP
Required scopes
cms:read
Resource group
CMS
Request body
No request body.
Idempotency
Not required for this read operation.

Parameters

ParameterInTypeRequiredDescription
collection_idquerystringNoRestrict results to one collection.
site_idquerystringNoNo description yet.
campaign_idquerystringNoNo description yet.
content_typequerystring · website_page | landing_page | blog_post | article | social_post | email | case_study | asset_brief | otherNoNo description yet.
statusquerystring · draft | review | published | archivedNoRestrict results by publishing status.
queryquerystringNoFree-text search across title and fields.
custom_field_keyquerystringNoNo description yet.
custom_field_valuequerystringNoNo description yet.
limitqueryinteger · min 1 · max 100NoMaximum number of entries to return.
cursorquerystringNoOpaque cursor from a previous response's next_cursor.

Request body example

This operation does not send a JSON request body.

Response example

{
  "data": [
    {
      "id": "ent_123",
      "title": "AI follow-up workflows",
      "status": "draft"
    }
  ],
  "request_id": "req_137",
  "next_cursor": null
}

Common errors

unauthorizedHTTP 401

A valid bearer token is required.

rate_limitedHTTP 429

The workspace exceeded the current rate limit.

The token does not include the scope required for this operation.

The request payload failed schema validation.

POST/cms/entries

Create CMS entry

createCmsEntry

MVP
Required scopes
cms:write
Resource group
CMS
Request body
JSON body accepted. Path parameters and Idempotency-Key stay outside the body.
Idempotency
Supports Idempotency-Key for safe retries.

Parameters

ParameterInTypeRequiredDescription
Idempotency-KeyheaderstringNoStable key for safe retries of the same logical write.

Request body example

{
  "collection_id": "col_123",
  "title": "AI follow-up workflows",
  "status": "draft",
  "fields": {
    "slug": "ai-follow-up-workflows",
    "body": "Draft content..."
  }
}

Response example

{
  "data": {
    "id": "ent_123",
    "collection_id": "col_123",
    "status": "draft"
  },
  "request_id": "req_136"
}

Common errors

unauthorizedHTTP 401

A valid bearer token is required.

rate_limitedHTTP 429

The workspace exceeded the current rate limit.

The token does not include the scope required for this operation.

The request payload failed schema validation.

The requested resource does not exist in this workspace.

GET/cms/entries/search

Full-text search CMS entries

searchCmsEntries

MVP
Required scopes
cms:read
Resource group
CMS
Request body
No request body.
Idempotency
Not required for this read operation.

Parameters

This operation has no path, query, or custom header parameters.

Request body example

This operation does not send a JSON request body.

Response example

{
  "data": {},
  "request_id": "req_123"
}

Common errors

unauthorizedHTTP 401

A valid bearer token is required.

rate_limitedHTTP 429

The workspace exceeded the current rate limit.

PATCH/cms/entries/{entry_id}

Update CMS entry

updateCmsEntry

MVP
Required scopes
cms:write
Resource group
CMS
Request body
JSON body accepted. Path parameters and Idempotency-Key stay outside the body.
Idempotency
Supports Idempotency-Key for safe retries.

Parameters

ParameterInTypeRequiredDescription
entry_idpathstringYesEntry ID to update.
Idempotency-KeyheaderstringNoStable key for safe retries of the same logical write.

Request body example

{
  "title": "AI follow-up workflows",
  "fields": {
    "slug": "ai-follow-up-workflows",
    "body": "Updated draft content..."
  },
  "status": "review"
}

Response example

{
  "data": {
    "id": "ent_123",
    "title": "AI follow-up workflows",
    "status": "review"
  },
  "request_id": "req_138"
}

Common errors

unauthorizedHTTP 401

A valid bearer token is required.

rate_limitedHTTP 429

The workspace exceeded the current rate limit.

The token does not include the scope required for this operation.

The request payload failed schema validation.

The requested resource does not exist in this workspace.

GET/marketing/campaigns

List marketing campaigns

listMarketingCampaigns

MVP
Required scopes
cms:read
Resource group
CMS
Request body
No request body.
Idempotency
Not required for this read operation.

Parameters

ParameterInTypeRequiredDescription
statusquerystringNoNo description yet.
channelquerystringNoNo description yet.
queryquerystringNoNo description yet.
limitqueryinteger · min 1 · max 100NoNo description yet.
cursorquerystringNoNo description yet.

Request body example

This operation does not send a JSON request body.

Response example

{
  "data": [
    {
      "id": "camp_123",
      "name": "Slab5 beta launch"
    }
  ],
  "request_id": "req_215",
  "next_cursor": null
}

Common errors

unauthorizedHTTP 401

A valid bearer token is required.

rate_limitedHTTP 429

The workspace exceeded the current rate limit.

The token does not include the scope required for this operation.

The request payload failed schema validation.

POST/marketing/campaigns

Create marketing campaign

createMarketingCampaign

MVP
Required scopes
cms:write
Resource group
CMS
Request body
JSON body accepted. Path parameters and Idempotency-Key stay outside the body.
Idempotency
Supports Idempotency-Key for safe retries.

Parameters

ParameterInTypeRequiredDescription
Idempotency-KeyheaderstringNoStable key for safe retries of the same logical write.

Request body example

{
  "key": "slab5_beta_launch",
  "name": "Slab5 beta launch",
  "channel": "website"
}

Response example

{
  "data": {
    "id": "camp_123",
    "key": "slab5_beta_launch"
  },
  "request_id": "req_214"
}

Common errors

unauthorizedHTTP 401

A valid bearer token is required.

rate_limitedHTTP 429

The workspace exceeded the current rate limit.

The token does not include the scope required for this operation.

The request payload failed schema validation.

The idempotency key was reused with a different request body.

GET/marketing/posts

List marketing posts

listMarketingPosts

MVP
Required scopes
cms:read
Resource group
CMS
Request body
No request body.
Idempotency
Not required for this read operation.

Parameters

ParameterInTypeRequiredDescription
campaign_idquerystringNoNo description yet.
channelquerystringNoNo description yet.
statusquerystringNoNo description yet.
queryquerystringNoNo description yet.
limitqueryinteger · min 1 · max 100NoNo description yet.
cursorquerystringNoNo description yet.

Request body example

This operation does not send a JSON request body.

Response example

{
  "data": [
    {
      "id": "post_123",
      "channel": "linkedin"
    }
  ],
  "request_id": "req_217",
  "next_cursor": null
}

Common errors

unauthorizedHTTP 401

A valid bearer token is required.

rate_limitedHTTP 429

The workspace exceeded the current rate limit.

The token does not include the scope required for this operation.

The request payload failed schema validation.

POST/marketing/posts

Create marketing post

createMarketingPost

MVP
Required scopes
cms:write
Resource group
CMS
Request body
JSON body accepted. Path parameters and Idempotency-Key stay outside the body.
Idempotency
Supports Idempotency-Key for safe retries.

Parameters

ParameterInTypeRequiredDescription
Idempotency-KeyheaderstringNoStable key for safe retries of the same logical write.

Request body example

{
  "channel": "linkedin",
  "title": "Beta launch",
  "body": "We are opening Slab5 private beta."
}

Response example

{
  "data": {
    "id": "post_123",
    "channel": "linkedin"
  },
  "request_id": "req_216"
}

Common errors

unauthorizedHTTP 401

A valid bearer token is required.

rate_limitedHTTP 429

The workspace exceeded the current rate limit.

The token does not include the scope required for this operation.

The request payload failed schema validation.

The requested resource does not exist in this workspace.

GET/assets

Search assets

listAssets

MVP
Required scopes
assets:read
Resource group
Assets
Request body
No request body.
Idempotency
Not required for this read operation.

Parameters

ParameterInTypeRequiredDescription
queryquerystringNoFree-text search across asset name, file name, description, and MIME type.
asset_typequerystring · document | image | video | attachmentNoRestrict results to one asset category.
statusquerystring · upload_pending | available | archivedNoRestrict results by asset lifecycle status.
related_resource_typequerystring · lead | contact | company | deal | task | cms_entry | invoice | marketing_campaign | marketing_postNoRestrict results to assets linked to this resource type.
related_resource_idquerystringNoRestrict results to assets linked to this resource ID.
custom_field_keyquerystringNoNo description yet.
custom_field_valuequerystringNoNo description yet.
limitqueryinteger · min 1 · max 100NoMaximum number of assets to return.
cursorquerystringNoOpaque cursor from a previous response's next_cursor.

Request body example

This operation does not send a JSON request body.

Response example

{
  "data": [
    {
      "id": "asset_123",
      "name": "acme-hero.png",
      "asset_type": "image"
    }
  ],
  "request_id": "req_141",
  "next_cursor": null
}

Common errors

unauthorizedHTTP 401

A valid bearer token is required.

rate_limitedHTTP 429

The workspace exceeded the current rate limit.

The token does not include the scope required for this operation.

The request payload failed schema validation.

POST/assets

Create asset upload intent

createAssetUploadIntent

MVP
Required scopes
assets:write
Resource group
Assets
Request body
JSON body accepted. Path parameters and Idempotency-Key stay outside the body.
Idempotency
Supports Idempotency-Key for safe retries.

Parameters

ParameterInTypeRequiredDescription
Idempotency-KeyheaderstringNoStable key for safe retries of the same logical write.

Request body example

{
  "asset_type": "image",
  "file_name": "acme-hero.png",
  "mime_type": "image/png",
  "related_resource_type": "cms_entry",
  "related_resource_id": "ent_123"
}

Response example

{
  "data": {
    "id": "asset_123",
    "asset_type": "image",
    "upload_url": "https://storage.local.slab5.test/upload/..."
  },
  "request_id": "req_140"
}

Common errors

unauthorizedHTTP 401

A valid bearer token is required.

rate_limitedHTTP 429

The workspace exceeded the current rate limit.

The token does not include the scope required for this operation.

The request payload failed schema validation.

The requested resource does not exist in this workspace.

The idempotency key was reused with a different request body.

GET/assets/{asset_id}

Get asset download URL

getAsset

MVP
Required scopes
assets:read
Resource group
Assets
Request body
No request body.
Idempotency
Not required for this read operation.

Parameters

ParameterInTypeRequiredDescription
asset_idpathstringYesAsset ID to retrieve.
asset_idquerystringYesAsset ID to retrieve.
cursorquerystringNoPagination cursor returned by the previous page.

Request body example

This operation does not send a JSON request body.

Response example

{
  "data": {
    "id": "asset_123",
    "download_url": "https://storage.local.slab5.test/download/..."
  },
  "request_id": "req_142"
}

Common errors

unauthorizedHTTP 401

A valid bearer token is required.

rate_limitedHTTP 429

The workspace exceeded the current rate limit.

The token does not include the scope required for this operation.

The request payload failed schema validation.

The requested resource does not exist in this workspace.

DELETE/assets/{asset_id}

Archive asset

archiveAsset

MVP
Required scopes
assets:write
Resource group
Assets
Request body
No request body.
Idempotency
Supports Idempotency-Key for safe retries.

Parameters

ParameterInTypeRequiredDescription
asset_idpathstringYesAsset ID to archive.
Idempotency-KeyheaderstringNoStable key for safe retries of the same logical write.

Request body example

This operation does not send a JSON request body.

Response example

{
  "data": {
    "id": "asset_123",
    "status": "archived"
  },
  "request_id": "req_143"
}

Common errors

unauthorizedHTTP 401

A valid bearer token is required.

rate_limitedHTTP 429

The workspace exceeded the current rate limit.

The token does not include the scope required for this operation.

The request payload failed schema validation.

The requested resource does not exist in this workspace.

POST/assets/{asset_id}/complete

Complete asset upload

completeAssetUpload

MVP
Required scopes
assets:write
Resource group
Assets
Request body
JSON body accepted. Path parameters and Idempotency-Key stay outside the body.
Idempotency
Supports Idempotency-Key for safe retries.

Parameters

ParameterInTypeRequiredDescription
asset_idpathstringYesAsset ID returned by create_asset_upload_intent.
Idempotency-KeyheaderstringNoStable key for safe retries of the same logical write.

Request body example

{
  "byte_size": 2048,
  "checksum_sha256": "..."
}

Response example

{
  "data": {
    "id": "asset_123",
    "asset_type": "image",
    "status": "available"
  },
  "request_id": "req_140b"
}

Common errors

unauthorizedHTTP 401

A valid bearer token is required.

rate_limitedHTTP 429

The workspace exceeded the current rate limit.

The token does not include the scope required for this operation.

The request payload failed schema validation.

The requested resource does not exist in this workspace.

GET/integrations/events

List integration event types

listIntegrationEventTypes

MVP
Required scopes
integrations:read
Resource group
Integrations
Request body
No request body.
Idempotency
Not required for this read operation.

Parameters

ParameterInTypeRequiredDescription
queryquerystringNoFree-text search across event keys and descriptions.
categoryquerystringNoRestrict results to a category such as crm, cms, assets, or usage.
cursorquerystringNoPagination cursor returned by the previous page.

Request body example

This operation does not send a JSON request body.

Response example

{
  "data": [
    {
      "key": "contact.created",
      "category": "crm"
    }
  ],
  "request_id": "req_143",
  "next_cursor": null
}

Common errors

unauthorizedHTTP 401

A valid bearer token is required.

rate_limitedHTTP 429

The workspace exceeded the current rate limit.

The token does not include the scope required for this operation.

The request payload failed schema validation.

POST/integrations/events

Register integration event type

registerIntegrationEventType

MVP
Required scopes
integrations:write
Resource group
Integrations
Request body
JSON body accepted. Path parameters and Idempotency-Key stay outside the body.
Idempotency
Supports Idempotency-Key for safe retries.

Parameters

ParameterInTypeRequiredDescription
Idempotency-KeyheaderstringNoStable key for safe retries of the same logical write.

Request body example

{
  "key": "external.publish.completed",
  "category": "publishing",
  "description": "External publishing workflow completed."
}

Response example

{
  "data": {
    "id": "iet_123",
    "key": "external.publish.completed"
  },
  "request_id": "req_144"
}

Common errors

unauthorizedHTTP 401

A valid bearer token is required.

rate_limitedHTTP 429

The workspace exceeded the current rate limit.

The token does not include the scope required for this operation.

The request payload failed schema validation.

The idempotency key was reused with a different request body.

GET/webhooks

List webhook endpoints

listWebhookEndpoints

MVP
Required scopes
integrations:read
Resource group
Integrations
Request body
No request body.
Idempotency
Not required for this read operation.

Parameters

ParameterInTypeRequiredDescription
queryquerystringNoFree-text search across names and URLs.
statusquerystring · active | paused | disabledNoEndpoint status filter.
event_typequerystringNoOnly endpoints subscribed to this event type.
limitqueryinteger · min 1 · max 100NoMaximum number of endpoints to return.
cursorquerystringNoOpaque cursor from a previous response's next_cursor.

Request body example

This operation does not send a JSON request body.

Response example

{
  "data": [
    {
      "id": "wh_123",
      "name": "CRM Ops Webhook"
    }
  ],
  "request_id": "req_146",
  "next_cursor": null
}

Common errors

unauthorizedHTTP 401

A valid bearer token is required.

rate_limitedHTTP 429

The workspace exceeded the current rate limit.

The token does not include the scope required for this operation.

The request payload failed schema validation.

POST/webhooks

Create webhook endpoint

createWebhookEndpoint

MVP
Required scopes
integrations:write
Resource group
Integrations
Request body
JSON body accepted. Path parameters and Idempotency-Key stay outside the body.
Idempotency
Supports Idempotency-Key for safe retries.

Parameters

ParameterInTypeRequiredDescription
Idempotency-KeyheaderstringNoStable key for safe retries of the same logical write.

Request body example

{
  "name": "CRM Ops Webhook",
  "url": "https://example.com/slab5/webhooks",
  "event_types": [
    "contact.created"
  ]
}

Response example

{
  "data": {
    "id": "wh_123",
    "status": "active",
    "signing_secret_preview": "whsec_abcd...wxyz"
  },
  "request_id": "req_145"
}

Common errors

unauthorizedHTTP 401

A valid bearer token is required.

rate_limitedHTTP 429

The workspace exceeded the current rate limit.

The token does not include the scope required for this operation.

The request payload failed schema validation.

The idempotency key was reused with a different request body.

PATCH/webhooks/{webhook_id}

Update webhook endpoint

updateWebhookEndpoint

MVP
Required scopes
integrations:write
Resource group
Integrations
Request body
JSON body accepted. Path parameters and Idempotency-Key stay outside the body.
Idempotency
Not required for this read operation.

Parameters

ParameterInTypeRequiredDescription
webhook_idpathstringYesWebhook endpoint identifier.

Request body example

{
  "status": "paused"
}

Response example

{
  "data": {
    "id": "wh_123",
    "status": "paused"
  },
  "request_id": "req_147"
}

Common errors

unauthorizedHTTP 401

A valid bearer token is required.

rate_limitedHTTP 429

The workspace exceeded the current rate limit.

The token does not include the scope required for this operation.

The request payload failed schema validation.

The requested resource does not exist in this workspace.

POST/webhooks/{webhook_id}/test

Queue test webhook event

sendTestWebhookEvent

MVP
Required scopes
integrations:write
Resource group
Integrations
Request body
No request body.
Idempotency
Not required for this read operation.

Parameters

ParameterInTypeRequiredDescription
webhook_idpathstringYesWebhook endpoint identifier.

Request body example

This operation does not send a JSON request body.

Response example

{
  "data": {
    "id": "whd_123",
    "event_type": "webhook.test",
    "status": "pending"
  },
  "request_id": "req_148"
}

Common errors

unauthorizedHTTP 401

A valid bearer token is required.

rate_limitedHTTP 429

The workspace exceeded the current rate limit.

The token does not include the scope required for this operation.

The request payload failed schema validation.

The requested resource does not exist in this workspace.

GET/webhooks/{webhook_id}/deliveries

List webhook deliveries

listWebhookDeliveries

MVP
Required scopes
integrations:read
Resource group
Integrations
Request body
No request body.
Idempotency
Not required for this read operation.

Parameters

ParameterInTypeRequiredDescription
webhook_idpathstringYesWebhook endpoint identifier.
webhook_idquerystringNoWebhook endpoint identifier.
event_typequerystringNoDelivery event type filter.
statusquerystring · pending | retrying | succeeded | failedNoNo description yet.
limitqueryinteger · min 1 · max 100NoNo description yet.
cursorquerystringNoNo description yet.

Request body example

This operation does not send a JSON request body.

Response example

{
  "data": [
    {
      "id": "whd_123",
      "status": "failed",
      "attempt_count": 3
    }
  ],
  "request_id": "req_149",
  "next_cursor": null
}

Common errors

unauthorizedHTTP 401

A valid bearer token is required.

rate_limitedHTTP 429

The workspace exceeded the current rate limit.

The token does not include the scope required for this operation.

The request payload failed schema validation.

GET/analytics/events

List analytics event definitions

listAnalyticsEvents

MVP
Required scopes
analytics:read
Resource group
Analytics Governance
Request body
No request body.
Idempotency
Not required for this read operation.

Parameters

ParameterInTypeRequiredDescription
queryquerystringNoFree-text search across event names and descriptions.
ownerquerystringNoRestrict results to one owner.
limitqueryinteger · min 1 · max 100NoMaximum number of events to return.
cursorquerystringNoOpaque cursor from a previous response's next_cursor.

Request body example

This operation does not send a JSON request body.

Response example

{
  "data": [
    {
      "id": "evt_123",
      "name": "first_contact_created",
      "owner": "growth"
    }
  ],
  "request_id": "req_140",
  "next_cursor": null
}

Common errors

unauthorizedHTTP 401

A valid bearer token is required.

rate_limitedHTTP 429

The workspace exceeded the current rate limit.

The token does not include the scope required for this operation.

The request payload failed schema validation.

POST/analytics/events

Define analytics event

defineAnalyticsEvent

MVP
Required scopes
analytics:write
Resource group
Analytics Governance
Request body
JSON body accepted. Path parameters and Idempotency-Key stay outside the body.
Idempotency
Supports Idempotency-Key for safe retries.

Parameters

ParameterInTypeRequiredDescription
Idempotency-KeyheaderstringNoStable key for safe retries of the same logical write.

Request body example

{
  "name": "first_contact_created",
  "description": "A workspace created its first CRM contact.",
  "owner": "growth",
  "properties": [
    "tenant_id",
    "workspace_id",
    "source"
  ]
}

Response example

{
  "data": {
    "id": "evt_123",
    "name": "first_contact_created"
  },
  "request_id": "req_139"
}

Common errors

unauthorizedHTTP 401

A valid bearer token is required.

rate_limitedHTTP 429

The workspace exceeded the current rate limit.

The token does not include the scope required for this operation.

The request payload failed schema validation.

The idempotency key was reused with a different request body.

POST/analytics/properties

Define analytics property

defineAnalyticsProperty

MVP
Required scopes
analytics:write
Resource group
Analytics Governance
Request body
JSON body accepted. Path parameters and Idempotency-Key stay outside the body.
Idempotency
Supports Idempotency-Key for safe retries.

Parameters

ParameterInTypeRequiredDescription
Idempotency-KeyheaderstringNoStable key for safe retries of the same logical write.

Request body example

{
  "key": "workspace_id",
  "type": "string",
  "description": "Workspace identifier associated with the event.",
  "required": true
}

Response example

{
  "data": {
    "id": "prop_123",
    "key": "workspace_id",
    "type": "string"
  },
  "request_id": "req_141"
}

Common errors

unauthorizedHTTP 401

A valid bearer token is required.

rate_limitedHTTP 429

The workspace exceeded the current rate limit.

The token does not include the scope required for this operation.

The request payload failed schema validation.

The idempotency key was reused with a different request body.

POST/analytics/events/validate

Validate analytics event payload

validateAnalyticsEvent

MVP
Required scopes
analytics:read
Resource group
Analytics Governance
Request body
JSON body accepted. Path parameters and Idempotency-Key stay outside the body.
Idempotency
Not required for this read operation.

Parameters

This operation has no path, query, or custom header parameters.

Request body example

{
  "name": "first_contact_created",
  "properties": {
    "tenant_id": "ten_123",
    "workspace_id": "wrk_123",
    "source": "mcp"
  }
}

Response example

{
  "data": {
    "valid": true,
    "errors": [],
    "request_id": "req_142"
  },
  "request_id": "req_142"
}

Common errors

unauthorizedHTTP 401

A valid bearer token is required.

rate_limitedHTTP 429

The workspace exceeded the current rate limit.

The token does not include the scope required for this operation.

The request payload failed schema validation.

The requested resource does not exist in this workspace.

GET/bi/dashboards

List BI dashboards

listBiDashboards

Experimental
Required scopes
bi:read
Resource group
Product Analytics and BI
Request body
No request body.
Idempotency
Not required for this read operation.

Parameters

ParameterInTypeRequiredDescription
queryquerystringNoNo description yet.
statusquerystring · draft | active | archivedNoNo description yet.
limitqueryinteger · min 1 · max 100NoNo description yet.
cursorquerystringNoNo description yet.

Request body example

This operation does not send a JSON request body.

Response example

{
  "data": {},
  "request_id": "req_123"
}

Common errors

unauthorizedHTTP 401

A valid bearer token is required.

rate_limitedHTTP 429

The workspace exceeded the current rate limit.

The token does not include the scope required for this operation.

The request payload failed schema validation.

POST/bi/dashboards

Create BI dashboard

createBiDashboard

Experimental
Required scopes
bi:write
Resource group
Product Analytics and BI
Request body
JSON body accepted. Path parameters and Idempotency-Key stay outside the body.
Idempotency
Supports Idempotency-Key for safe retries.

Parameters

ParameterInTypeRequiredDescription
Idempotency-KeyheaderstringNoStable key for safe retries of the same logical write.

Request body example

This operation does not send a JSON request body.

Response example

{
  "data": {},
  "request_id": "req_123"
}

Common errors

unauthorizedHTTP 401

A valid bearer token is required.

rate_limitedHTTP 429

The workspace exceeded the current rate limit.

The token does not include the scope required for this operation.

The request payload failed schema validation.

The idempotency key was reused with a different request body.

GET/bi/datasets

List BI datasets

listBiDatasets

Experimental
Required scopes
bi:read
Resource group
Product Analytics and BI
Request body
No request body.
Idempotency
Not required for this read operation.

Parameters

ParameterInTypeRequiredDescription
queryquerystringNoNo description yet.
kindquerystring · mock | table | view | semanticNoNo description yet.
statusquerystring · draft | active | archivedNoNo description yet.
limitqueryinteger · min 1 · max 100NoNo description yet.
cursorquerystringNoNo description yet.

Request body example

This operation does not send a JSON request body.

Response example

{
  "data": {},
  "request_id": "req_123"
}

Common errors

unauthorizedHTTP 401

A valid bearer token is required.

rate_limitedHTTP 429

The workspace exceeded the current rate limit.

The token does not include the scope required for this operation.

The request payload failed schema validation.

POST/bi/datasets

Create BI dataset

createBiDataset

Experimental
Required scopes
bi:write
Resource group
Product Analytics and BI
Request body
JSON body accepted. Path parameters and Idempotency-Key stay outside the body.
Idempotency
Supports Idempotency-Key for safe retries.

Parameters

ParameterInTypeRequiredDescription
Idempotency-KeyheaderstringNoStable key for safe retries of the same logical write.

Request body example

This operation does not send a JSON request body.

Response example

{
  "data": {},
  "request_id": "req_123"
}

Common errors

unauthorizedHTTP 401

A valid bearer token is required.

rate_limitedHTTP 429

The workspace exceeded the current rate limit.

The token does not include the scope required for this operation.

The request payload failed schema validation.

The idempotency key was reused with a different request body.

GET/bi/reports

List BI reports

listBiReports

Experimental
Required scopes
bi:read
Resource group
Product Analytics and BI
Request body
No request body.
Idempotency
Not required for this read operation.

Parameters

ParameterInTypeRequiredDescription
queryquerystringNoNo description yet.
dashboard_idquerystringNoNo description yet.
dataset_idquerystringNoNo description yet.
statusquerystring · draft | active | archivedNoNo description yet.
limitqueryinteger · min 1 · max 100NoNo description yet.
cursorquerystringNoNo description yet.

Request body example

This operation does not send a JSON request body.

Response example

{
  "data": {},
  "request_id": "req_123"
}

Common errors

unauthorizedHTTP 401

A valid bearer token is required.

rate_limitedHTTP 429

The workspace exceeded the current rate limit.

The token does not include the scope required for this operation.

The request payload failed schema validation.

POST/bi/reports

Create BI report

createBiReport

Experimental
Required scopes
bi:write
Resource group
Product Analytics and BI
Request body
JSON body accepted. Path parameters and Idempotency-Key stay outside the body.
Idempotency
Not required for this read operation.

Parameters

This operation has no path, query, or custom header parameters.

Request body example

This operation does not send a JSON request body.

Response example

{
  "data": {},
  "request_id": "req_123"
}

Common errors

unauthorizedHTTP 401

A valid bearer token is required.

rate_limitedHTTP 429

The workspace exceeded the current rate limit.

The token does not include the scope required for this operation.

The request payload failed schema validation.

The requested resource does not exist in this workspace.

The idempotency key was reused with a different request body.

GET/bi/metrics

List BI metrics

listBiMetrics

Experimental
Required scopes
bi:read
Resource group
Product Analytics and BI
Request body
No request body.
Idempotency
Not required for this read operation.

Parameters

ParameterInTypeRequiredDescription
queryquerystringNoNo description yet.
dataset_idquerystringNoNo description yet.
statusquerystring · draft | active | archivedNoNo description yet.
limitqueryinteger · min 1 · max 100NoNo description yet.
cursorquerystringNoNo description yet.

Request body example

This operation does not send a JSON request body.

Response example

{
  "data": {},
  "request_id": "req_123"
}

Common errors

unauthorizedHTTP 401

A valid bearer token is required.

rate_limitedHTTP 429

The workspace exceeded the current rate limit.

The token does not include the scope required for this operation.

The request payload failed schema validation.

POST/bi/metrics

Create BI metric

createBiMetric

Experimental
Required scopes
bi:write
Resource group
Product Analytics and BI
Request body
JSON body accepted. Path parameters and Idempotency-Key stay outside the body.
Idempotency
Not required for this read operation.

Parameters

This operation has no path, query, or custom header parameters.

Request body example

This operation does not send a JSON request body.

Response example

{
  "data": {},
  "request_id": "req_123"
}

Common errors

unauthorizedHTTP 401

A valid bearer token is required.

rate_limitedHTTP 429

The workspace exceeded the current rate limit.

The token does not include the scope required for this operation.

The request payload failed schema validation.

The requested resource does not exist in this workspace.

The idempotency key was reused with a different request body.

POST/bi/queries/run

Run BI query or dataset

runBiQuery

Experimental
Required scopes
bi:write
Resource group
Product Analytics and BI
Request body
JSON body accepted. Path parameters and Idempotency-Key stay outside the body.
Idempotency
Not required for this read operation.

Parameters

This operation has no path, query, or custom header parameters.

Request body example

This operation does not send a JSON request body.

Response example

{
  "data": {},
  "request_id": "req_123"
}

Common errors

unauthorizedHTTP 401

A valid bearer token is required.

rate_limitedHTTP 429

The workspace exceeded the current rate limit.

The token does not include the scope required for this operation.

The request payload failed schema validation.

The requested resource does not exist in this workspace.

The idempotency key was reused with a different request body.

GET/bi/exports

List BI exports

listBiExports

Experimental
Required scopes
bi:read
Resource group
Product Analytics and BI
Request body
No request body.
Idempotency
Not required for this read operation.

Parameters

This operation has no path, query, or custom header parameters.

Request body example

This operation does not send a JSON request body.

Response example

{
  "data": {},
  "request_id": "req_123"
}

Common errors

unauthorizedHTTP 401

A valid bearer token is required.

rate_limitedHTTP 429

The workspace exceeded the current rate limit.

POST/bi/exports

Create BI export

createBiExport

Experimental
Required scopes
bi:write
Resource group
Product Analytics and BI
Request body
JSON body accepted. Path parameters and Idempotency-Key stay outside the body.
Idempotency
Not required for this read operation.

Parameters

This operation has no path, query, or custom header parameters.

Request body example

This operation does not send a JSON request body.

Response example

{
  "data": {},
  "request_id": "req_123"
}

Common errors

unauthorizedHTTP 401

A valid bearer token is required.

rate_limitedHTTP 429

The workspace exceeded the current rate limit.

The token does not include the scope required for this operation.

The request payload failed schema validation.

The requested resource does not exist in this workspace.

The idempotency key was reused with a different request body.

GET/bi/scheduled-artifacts

List scheduled BI artifacts

listBiScheduledArtifacts

Experimental
Required scopes
bi:read
Resource group
Product Analytics and BI
Request body
No request body.
Idempotency
Not required for this read operation.

Parameters

This operation has no path, query, or custom header parameters.

Request body example

This operation does not send a JSON request body.

Response example

{
  "data": {},
  "request_id": "req_123"
}

Common errors

unauthorizedHTTP 401

A valid bearer token is required.

rate_limitedHTTP 429

The workspace exceeded the current rate limit.

POST/bi/scheduled-artifacts

Create scheduled BI artifact

createBiScheduledArtifact

Experimental
Required scopes
bi:write
Resource group
Product Analytics and BI
Request body
JSON body accepted. Path parameters and Idempotency-Key stay outside the body.
Idempotency
Not required for this read operation.

Parameters

This operation has no path, query, or custom header parameters.

Request body example

This operation does not send a JSON request body.

Response example

{
  "data": {},
  "request_id": "req_123"
}

Common errors

unauthorizedHTTP 401

A valid bearer token is required.

rate_limitedHTTP 429

The workspace exceeded the current rate limit.

PATCH/bi/{collection}/{id}

Update BI object metadata

updateBiObject

Experimental
Required scopes
bi:write
Resource group
Product Analytics and BI
Request body
JSON body accepted. Path parameters and Idempotency-Key stay outside the body.
Idempotency
Not required for this read operation.

Parameters

ParameterInTypeRequiredDescription
collectionpathstringYesResource identifier from /bi/{collection}/{id}.
idpathstringYesResource identifier from /bi/{collection}/{id}.

Request body example

This operation does not send a JSON request body.

Response example

{
  "data": {},
  "request_id": "req_123"
}

Common errors

unauthorizedHTTP 401

A valid bearer token is required.

rate_limitedHTTP 429

The workspace exceeded the current rate limit.

The token does not include the scope required for this operation.

The request payload failed schema validation.

The requested resource does not exist in this workspace.

DELETE/bi/{collection}/{id}

Archive a BI object

archiveBiObject

Experimental
Required scopes
bi:write
Resource group
Product Analytics and BI
Request body
No request body.
Idempotency
Not required for this read operation.

Parameters

ParameterInTypeRequiredDescription
collectionpathstringYesResource identifier from /bi/{collection}/{id}.
idpathstringYesResource identifier from /bi/{collection}/{id}.

Request body example

This operation does not send a JSON request body.

Response example

{
  "data": {},
  "request_id": "req_123"
}

Common errors

unauthorizedHTTP 401

A valid bearer token is required.

rate_limitedHTTP 429

The workspace exceeded the current rate limit.

The token does not include the scope required for this operation.

The request payload failed schema validation.

The requested resource does not exist in this workspace.

Was this page helpful?