Saysimple API (1.0.0)

Download OpenAPI specification:

API Support: support@saysimple.com

Saysimple API documentation

Accounts

Accounts are the top-level entities for channels, like WhatsApp Business Account. They can be used to group channels and manage settings.

Return list of accounts

Authorizations:
(x-api-keyauthorization)
path Parameters
workspaceId
required
integer >= 1
query Parameters
fields
string
Example: fields=field1,field2

Comma-separated list of fields to include in the response

(string or null) or (object or null) or (any or null)
Examples: s={"name": "Saysimple"} s={"name": {"$or": {"$isnull": true, "$eq": "Saysimple"}}} s={"isActive": true, "createdAt": {"$ne": "2025-10-01T17:04:32"}} s={"$or": [{"contactName": "Saysimple"}, {"status": {"$eq": "activated"}}]}

Search criteria to apply to the results.

string or Array of strings
Examples: filter=field||$condition||value filter=relation&filter=relation.field||$condition||value

Filter criteria to apply to the results. Can be a string or an array of strings.

object
Examples: or=field||$condition||value

Logical OR conditions for filtering results.

string or Array of strings
Examples: join=relation join=relation1||field1,field2 join=relation1||field11,field12,...&join=relation1.nested||field21,field22,...

Receive joined relational objects in GET result.

Array of any or string
Examples: sort=field,ASC|DESC sort=field1,ASC&sort=field2,DESC

Add sort by field and order to query result.

limit
number or null >= 0
Example: limit=10

Maximum number of items to return per page. Limited to a maximum of 100.

offset
number or null >= 0
Example: offset=0

Number of items to skip before starting to collect the result set.

page
number or null >= 0
Example: page=1

Page number to retrieve. If not provided, defaults to 1.

cache
boolean
Example: cache=true

Whether to cache the response. Defaults to true.

header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "count": 20,
  • "total": 100,
  • "page": 1,
  • "pageCount": 5
}

Upload media to an account

Authorizations:
(x-api-keyauthorization)
path Parameters
workspaceId
required
integer >= 1
accountId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Responses

Response samples

Content type
application/json
{
  • "h": "abc123xyz"
}

API keys

API keys are used to authenticate requests to the API. They can be created and managed in the API keys section of the dashboard.

Return list of API keys

Authorizations:
(x-api-keyauthorization)
path Parameters
workspaceId
required
integer >= 1
query Parameters
fields
string
Example: fields=field1,field2

Comma-separated list of fields to include in the response

(string or null) or (object or null) or (any or null)
Examples: s={"name": "Saysimple"} s={"name": {"$or": {"$isnull": true, "$eq": "Saysimple"}}} s={"isActive": true, "createdAt": {"$ne": "2025-10-01T17:04:32"}} s={"$or": [{"contactName": "Saysimple"}, {"status": {"$eq": "activated"}}]}

Search criteria to apply to the results.

string or Array of strings
Examples: filter=field||$condition||value filter=relation&filter=relation.field||$condition||value

Filter criteria to apply to the results. Can be a string or an array of strings.

object
Examples: or=field||$condition||value

Logical OR conditions for filtering results.

string or Array of strings
Examples: join=relation join=relation1||field1,field2 join=relation1||field11,field12,...&join=relation1.nested||field21,field22,...

Receive joined relational objects in GET result.

Array of any or string
Examples: sort=field,ASC|DESC sort=field1,ASC&sort=field2,DESC

Add sort by field and order to query result.

limit
number or null >= 0
Example: limit=10

Maximum number of items to return per page. Limited to a maximum of 100.

offset
number or null >= 0
Example: offset=0

Number of items to skip before starting to collect the result set.

page
number or null >= 0
Example: page=1

Page number to retrieve. If not provided, defaults to 1.

cache
boolean
Example: cache=true

Whether to cache the response. Defaults to true.

header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "count": 20,
  • "total": 100,
  • "page": 1,
  • "pageCount": 5
}

Create API key

Authorizations:
(x-api-keyauthorization)
path Parameters
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Request Body schema: application/json

Body

name
required
string [ 1 .. 255 ] characters

The name of the API key, used for identification purposes.

description
required
string or null

A brief description of the API key's purpose or usage.

expiresAt
string or null <date-time>

The expiration date of the API key. If null, the key does not expire.

active
boolean
Default: true

Indicates whether the API key is currently active. Inactive keys cannot be used for authentication.

Responses

Request samples

Content type
application/json
{
  • "name": "My API Key",
  • "description": "This key is used for accessing the Saysimple API.",
  • "expiresAt": "2024-12-31T23:59:59Z",
  • "active": true
}

Response samples

Content type
application/json
{
  • "id": 1,
  • "workspaceId": 1,
  • "name": "My API Key",
  • "description": "This key is used for accessing the Saysimple API.",
  • "key": "d4c3b2a1e0f9c8b7a6e5d4c3b2a1e0f9",
  • "expiresAt": "2024-12-31T23:59:59Z",
  • "active": true,
  • "createdAt": "2023-10-01T12:00:00Z",
  • "secret": "82be966438f6569d2ecff2c212605db7"
}

Return API key

Authorizations:
(x-api-keyauthorization)
path Parameters
id
required
integer >= 1
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Responses

Response samples

Content type
application/json
{
  • "id": 1,
  • "workspaceId": 1,
  • "name": "My API Key",
  • "description": "This key is used for accessing the Saysimple API.",
  • "key": "d4c3b2a1e0f9c8b7a6e5d4c3b2a1e0f9",
  • "expiresAt": "2024-12-31T23:59:59Z",
  • "active": true,
  • "createdAt": "2023-10-01T12:00:00Z"
}

Update API key

Authorizations:
(x-api-keyauthorization)
path Parameters
id
required
integer >= 1
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Request Body schema: application/json

Body

name
string [ 1 .. 255 ] characters

The name of the API key, used for identification purposes.

description
string or null

A brief description of the API key's purpose or usage.

active
boolean

Indicates whether the API key is currently active. Inactive keys cannot be used for authentication.

Responses

Request samples

Content type
application/json
{
  • "name": "My API Key",
  • "description": "This key is used for accessing the Saysimple API.",
  • "active": true
}

Response samples

Content type
application/json
{
  • "id": 1,
  • "workspaceId": 1,
  • "name": "My API Key",
  • "description": "This key is used for accessing the Saysimple API.",
  • "key": "d4c3b2a1e0f9c8b7a6e5d4c3b2a1e0f9",
  • "expiresAt": "2024-12-31T23:59:59Z",
  • "active": true,
  • "createdAt": "2023-10-01T12:00:00Z"
}

Delete API key

Authorizations:
(x-api-keyauthorization)
path Parameters
id
required
integer >= 1
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Responses

Response samples

Content type
application/json
{
  • "id": 1
}

Channels

Channels are the communication channels that can be used to send and receive messages. They can be linked to accounts and have their own settings.

Return list of channels

Authorizations:
(x-api-keyauthorization)
path Parameters
workspaceId
required
integer >= 1
query Parameters
fields
string
Example: fields=field1,field2

Comma-separated list of fields to include in the response

(string or null) or (object or null) or (any or null)
Examples: s={"name": "Saysimple"} s={"name": {"$or": {"$isnull": true, "$eq": "Saysimple"}}} s={"isActive": true, "createdAt": {"$ne": "2025-10-01T17:04:32"}} s={"$or": [{"contactName": "Saysimple"}, {"status": {"$eq": "activated"}}]}

Search criteria to apply to the results.

string or Array of strings
Examples: filter=field||$condition||value filter=relation&filter=relation.field||$condition||value

Filter criteria to apply to the results. Can be a string or an array of strings.

object
Examples: or=field||$condition||value

Logical OR conditions for filtering results.

string or Array of strings
Examples: join=relation join=relation1||field1,field2 join=relation1||field11,field12,...&join=relation1.nested||field21,field22,...

Receive joined relational objects in GET result.

Array of any or string
Examples: sort=field,ASC|DESC sort=field1,ASC&sort=field2,DESC

Add sort by field and order to query result.

limit
number or null >= 0
Example: limit=10

Maximum number of items to return per page. Limited to a maximum of 100.

offset
number or null >= 0
Example: offset=0

Number of items to skip before starting to collect the result set.

page
number or null >= 0
Example: page=1

Page number to retrieve. If not provided, defaults to 1.

cache
boolean
Example: cache=true

Whether to cache the response. Defaults to true.

header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "count": 20,
  • "total": 100,
  • "page": 1,
  • "pageCount": 5
}

Create channel

Authorizations:
(x-api-keyauthorization)
path Parameters
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Request Body schema: application/json

Body

name
required
string [ 1 .. 100 ] characters

Name of the channel

color
string or null = 7 characters

Hex color code for the channel

stickyUserAssignments
boolean

If true, user assignments will be sticky across conversations

autoSignature
string
Default: "none"
Enum: "none" "prepend" "append"

Automatically add a signature to outgoing messages

platform
string
Default: "whatsapp"
Value: "whatsapp"

Platform of the channel

accountId
integer

ID of the account associated with the channel

handle
required
string [ 1 .. 255 ] characters

Unique identifier for the channel, used in API requests to providers

status
string
Default: "pending"
Enum: "pending" "activated" "deactivated"
required
object or null

Metadata specific to the channel, such as phone number info

Responses

Request samples

Content type
application/json
{
  • "name": "My WhatsApp Channel",
  • "color": "#FFFFFF",
  • "stickyUserAssignments": true,
  • "autoSignature": "none",
  • "platform": "whatsapp",
  • "accountId": 1,
  • "handle": "108721008524666",
  • "status": "activated",
  • "metadata": {
    }
}

Response samples

Content type
application/json
{
  • "name": "My WhatsApp Channel",
  • "color": "#FFFFFF",
  • "stickyUserAssignments": true,
  • "autoSignature": "none",
  • "id": 1,
  • "workspaceId": 1,
  • "platform": "whatsapp",
  • "customerCareWindowLength": 24,
  • "createdAt": "2023-10-01T12:00:00Z",
  • "workspace": null,
  • "accountId": 1,
  • "account": {
    },
  • "handle": "108721008524666",
  • "status": "activated",
  • "metadata": {
    },
  • "teams": [
    ]
}

Return channel

Authorizations:
(x-api-keyauthorization)
path Parameters
id
required
integer >= 1
workspaceId
required
integer >= 1
query Parameters
fields
string
Example: fields=field1,field2

Comma-separated list of fields to include in the response

(string or null) or (object or null) or (any or null)
Examples: s={"name": "Saysimple"} s={"name": {"$or": {"$isnull": true, "$eq": "Saysimple"}}} s={"isActive": true, "createdAt": {"$ne": "2025-10-01T17:04:32"}} s={"$or": [{"contactName": "Saysimple"}, {"status": {"$eq": "activated"}}]}

Search criteria to apply to the results.

string or Array of strings
Examples: filter=field||$condition||value filter=relation&filter=relation.field||$condition||value

Filter criteria to apply to the results. Can be a string or an array of strings.

object
Examples: or=field||$condition||value

Logical OR conditions for filtering results.

string or Array of strings
Examples: join=relation join=relation1||field1,field2 join=relation1||field11,field12,...&join=relation1.nested||field21,field22,...

Receive joined relational objects in GET result.

Array of any or string
Examples: sort=field,ASC|DESC sort=field1,ASC&sort=field2,DESC

Add sort by field and order to query result.

limit
number or null >= 0
Example: limit=10

Maximum number of items to return per page. Limited to a maximum of 100.

offset
number or null >= 0
Example: offset=0

Number of items to skip before starting to collect the result set.

page
number or null >= 0
Example: page=1

Page number to retrieve. If not provided, defaults to 1.

cache
boolean
Example: cache=true

Whether to cache the response. Defaults to true.

header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Responses

Response samples

Content type
application/json
{
  • "name": "My WhatsApp Channel",
  • "color": "#FFFFFF",
  • "stickyUserAssignments": true,
  • "autoSignature": "none",
  • "id": 1,
  • "workspaceId": 1,
  • "platform": "whatsapp",
  • "customerCareWindowLength": 24,
  • "createdAt": "2023-10-01T12:00:00Z",
  • "workspace": null,
  • "accountId": 1,
  • "account": {
    },
  • "handle": "108721008524666",
  • "status": "activated",
  • "metadata": {
    },
  • "teams": [
    ]
}

Update channel

Authorizations:
(x-api-keyauthorization)
path Parameters
id
required
integer >= 1
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Request Body schema: application/json

Body

name
string [ 1 .. 100 ] characters

Name of the channel

color
string or null = 7 characters

Hex color code for the channel

stickyUserAssignments
boolean

If true, user assignments will be sticky across conversations

autoSignature
string
Default: "none"
Enum: "none" "prepend" "append"

Automatically add a signature to outgoing messages

Responses

Request samples

Content type
application/json
{
  • "name": "My WhatsApp Channel",
  • "color": "#FFFFFF",
  • "stickyUserAssignments": true,
  • "autoSignature": "none"
}

Response samples

Content type
application/json
{
  • "name": "My WhatsApp Channel",
  • "color": "#FFFFFF",
  • "stickyUserAssignments": true,
  • "autoSignature": "none",
  • "id": 1,
  • "workspaceId": 1,
  • "platform": "whatsapp",
  • "customerCareWindowLength": 24,
  • "createdAt": "2023-10-01T12:00:00Z",
  • "workspace": null,
  • "accountId": 1,
  • "account": {
    },
  • "handle": "108721008524666",
  • "status": "activated",
  • "metadata": {
    },
  • "teams": [
    ]
}

Add teams to channel

Authorizations:
(x-api-keyauthorization)
path Parameters
id
required
integer >= 1
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Request Body schema: application/json

Body

teamIds
required
Array of integers

Array of team IDs to add or remove from the channel

Responses

Request samples

Content type
application/json
{
  • "teamIds": [
    ]
}

Response samples

Content type
application/json
{
  • "name": "My WhatsApp Channel",
  • "color": "#FFFFFF",
  • "stickyUserAssignments": true,
  • "autoSignature": "none",
  • "id": 1,
  • "workspaceId": 1,
  • "platform": "whatsapp",
  • "customerCareWindowLength": 24,
  • "createdAt": "2023-10-01T12:00:00Z",
  • "workspace": null,
  • "accountId": 1,
  • "account": {
    },
  • "handle": "108721008524666",
  • "status": "activated",
  • "metadata": {
    },
  • "teams": [
    ]
}

Remove teams from channel

Authorizations:
(x-api-keyauthorization)
path Parameters
id
required
integer >= 1
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Request Body schema: application/json

Body

teamIds
required
Array of integers

Array of team IDs to add or remove from the channel

Responses

Request samples

Content type
application/json
{
  • "teamIds": [
    ]
}

Response samples

Content type
application/json
{
  • "name": "My WhatsApp Channel",
  • "color": "#FFFFFF",
  • "stickyUserAssignments": true,
  • "autoSignature": "none",
  • "id": 1,
  • "workspaceId": 1,
  • "platform": "whatsapp",
  • "customerCareWindowLength": 24,
  • "createdAt": "2023-10-01T12:00:00Z",
  • "workspace": null,
  • "accountId": 1,
  • "account": {
    },
  • "handle": "108721008524666",
  • "status": "activated",
  • "metadata": {
    },
  • "teams": [
    ]
}

Create channel with embedded signup

Authorizations:
(x-api-keyauthorization)
path Parameters
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Request Body schema: application/json

Body

wabaId
required
string

WhatsApp Business Account ID

phoneNumberId
string or null

WhatsApp Phone Number ID

code
required
string

Verification code sent to the WhatsApp number

Responses

Request samples

Content type
application/json
{
  • "wabaId": "123456789012345",
  • "phoneNumberId": "108721008524666",
  • "code": "123456"
}

Response samples

Content type
application/json
{
  • "name": "My WhatsApp Channel",
  • "color": "#FFFFFF",
  • "stickyUserAssignments": true,
  • "autoSignature": "none",
  • "id": 1,
  • "workspaceId": 1,
  • "platform": "whatsapp",
  • "customerCareWindowLength": 24,
  • "createdAt": "2023-10-01T12:00:00Z",
  • "workspace": null,
  • "accountId": 1,
  • "account": {
    },
  • "handle": "108721008524666",
  • "status": "activated",
  • "metadata": {
    },
  • "teams": [
    ]
}

Chats

Chats are the conversations between users and agents. They can be linked to channels and have their own settings.

Return list of chats

Authorizations:
(x-api-keyauthorization)
path Parameters
workspaceId
required
integer >= 1
query Parameters
fields
string
Example: fields=field1,field2

Comma-separated list of fields to include in the response

(string or null) or (object or null) or (any or null)
Examples: s={"name": "Saysimple"} s={"name": {"$or": {"$isnull": true, "$eq": "Saysimple"}}} s={"isActive": true, "createdAt": {"$ne": "2025-10-01T17:04:32"}} s={"$or": [{"contactName": "Saysimple"}, {"status": {"$eq": "activated"}}]}

Search criteria to apply to the results.

string or Array of strings
Examples: filter=field||$condition||value filter=relation&filter=relation.field||$condition||value

Filter criteria to apply to the results. Can be a string or an array of strings.

object
Examples: or=field||$condition||value

Logical OR conditions for filtering results.

limit
number or null >= 0
Example: limit=10

Maximum number of items to return per page. Limited to a maximum of 100.

cache
boolean
Example: cache=true

Whether to cache the response. Defaults to true.

sortOrder
string
Enum: "ASC" "DESC"
Example: sortOrder=ASC

Sorting order for the results. Defaults to 'ASC'.

beforeCursor
string or null
Example: beforeCursor=dGltZXN0YW1wOjE3NTU1MDc4NjgwMDAsaWQ6MTY5OQ

Cursor for the previous page of results. Used for lazy loading.

afterCursor
string or null
Example: afterCursor=dGltZXN0YW1wOjE3NTU1MDc4NjgwMDAsaWQ6MTY5OQ

Cursor for the next page of results. Used for lazy loading.

category
string
Default: "all"
Enum: "all" "assigned" "favorites" "mentioned" "my_favorites" "my_inbox" "new" "prefiltered_team" "prefiltered_topic" "resolved" "snoozed" "spam"
Example: category=all

Category of chats to filter by. Defaults to 'all'.

subCategory
string
Enum: "all" "assigned" "assigned_to_me" "closed" "done" "new" "spam" "to_do" "unanswered" "unspecified"
Example: subCategory=all

Subcategory of chats to filter by. Defaults to the default subcategory for the category. Defaults to 'all'

prefilterTeamId
integer >= 1
Example: prefilterTeamId=1

Required when category is prefiltered_team.

prefilterTopicId
integer >= 1
Example: prefilterTopicId=1

Required when category is prefiltered_topic.

filterTeamIds
Array of integers[ items >= 1 ]
Example: filterTeamIds=1

Filter chats by team ids. For multiple team ids, add multiple filterTeamIds query strings.

filterTopicIds
Array of integers[ items >= 1 ]
Example: filterTopicIds=1

Filter chats by topic ids. For multiple topic ids, add multiple filterTopicIds query strings.

filterChannelIds
Array of integers[ items >= 1 ]
Example: filterChannelIds=1

Filter chats by channel ids. For multiple channel ids, add multiple filterChannelIds query strings.

filterLabelIds
Array of integers[ items >= 1 ]
Example: filterLabelIds=1

Filter chats by label ids. For multiple label ids, add multiple filterLabelIds query strings.

filterAssignedWorkspaceUserIds
Array of integers[ items >= 1 ]
Example: filterAssignedWorkspaceUserIds=1

Filter chats by assigned workspace user ids. For multiple ids, add multiple filterAssignedWorkspaceUserIds query strings.

header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "cursor": {
    }
}

Return chat

Authorizations:
(x-api-keyauthorization)
path Parameters
id
required
integer >= 1
workspaceId
required
integer >= 1
query Parameters
fields
string
Example: fields=field1,field2

Comma-separated list of fields to include in the response

(string or null) or (object or null) or (any or null)
Examples: s={"name": "Saysimple"} s={"name": {"$or": {"$isnull": true, "$eq": "Saysimple"}}} s={"isActive": true, "createdAt": {"$ne": "2025-10-01T17:04:32"}} s={"$or": [{"contactName": "Saysimple"}, {"status": {"$eq": "activated"}}]}

Search criteria to apply to the results.

string or Array of strings
Examples: filter=field||$condition||value filter=relation&filter=relation.field||$condition||value

Filter criteria to apply to the results. Can be a string or an array of strings.

object
Examples: or=field||$condition||value

Logical OR conditions for filtering results.

string or Array of strings
Examples: join=relation join=relation1||field1,field2 join=relation1||field11,field12,...&join=relation1.nested||field21,field22,...

Receive joined relational objects in GET result.

Array of any or string
Examples: sort=field,ASC|DESC sort=field1,ASC&sort=field2,DESC

Add sort by field and order to query result.

limit
number or null >= 0
Example: limit=10

Maximum number of items to return per page. Limited to a maximum of 100.

offset
number or null >= 0
Example: offset=0

Number of items to skip before starting to collect the result set.

page
number or null >= 0
Example: page=1

Page number to retrieve. If not provided, defaults to 1.

cache
boolean
Example: cache=true

Whether to cache the response. Defaults to true.

header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Responses

Response samples

Content type
application/json
{
  • "id": 1,
  • "channelId": 1,
  • "contactId": 1,
  • "contactHandle": "31612345678",
  • "contactName": "John Doe",
  • "assignedWorkspaceUserId": 1,
  • "assignedTeamId": 1,
  • "status": "open",
  • "subject": "Support request",
  • "isSpam": false,
  • "snoozedUntil": "2025-10-01T00:00:00Z",
  • "timestamp": "2025-10-01T00:00:00Z",
  • "sortTimestamp": "2025-10-01T00:00:00Z",
  • "lastMessageEntry": {
    },
  • "topics": [
    ],
  • "assignedTeam": null,
  • "assignedWorkspaceUser": {
    },
  • "contact": {
    }
}

Update chat

Authorizations:
(x-api-keyauthorization)
path Parameters
workspaceId
required
integer >= 1
id
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Request Body schema: application/json

Body

status
string
Enum: "open" "closed"

Status of the chat, for example 'open', 'closed'.

isSpam
boolean

Mark chat as spam

snoozedUntil
string or null <date-time>

Date until the chat is snoozed (ISO 8601)

assignedWorkspaceUserId
integer or null

Assign the chat to a workspace user

assignedTeamId
integer or null

Assign the chat to a team

subject
string or null <= 100 characters

Optional subject that can be set for the chat

contactId
integer or null

Contact id to associate with the chat

Responses

Request samples

Content type
application/json
{
  • "status": "open",
  • "isSpam": false,
  • "snoozedUntil": "2025-10-01T00:00:00Z",
  • "assignedWorkspaceUserId": 1,
  • "assignedTeamId": 1,
  • "subject": "Support request",
  • "contactId": 1
}

Response samples

Content type
application/json
{
  • "id": 1,
  • "channelId": 1,
  • "contactId": 1,
  • "contactHandle": "31612345678",
  • "contactName": "John Doe",
  • "assignedWorkspaceUserId": 1,
  • "assignedTeamId": 1,
  • "status": "open",
  • "subject": "Support request",
  • "isSpam": false,
  • "snoozedUntil": "2025-10-01T00:00:00Z",
  • "timestamp": "2025-10-01T00:00:00Z",
  • "sortTimestamp": "2025-10-01T00:00:00Z",
  • "lastMessageEntry": {
    },
  • "topics": [
    ],
  • "assignedTeam": null,
  • "assignedWorkspaceUser": {
    },
  • "contact": {
    }
}

Delete chat

Authorizations:
(x-api-keyauthorization)
path Parameters
id
required
integer >= 1
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Responses

Response samples

Content type
application/json
{
  • "id": 1
}

Return entries of chat

Authorizations:
(x-api-keyauthorization)
path Parameters
workspaceId
required
integer >= 1
id
required
integer >= 1
query Parameters
fields
string
Example: fields=field1,field2

Comma-separated list of fields to include in the response

(string or null) or (object or null) or (any or null)
Examples: s={"name": "Saysimple"} s={"name": {"$or": {"$isnull": true, "$eq": "Saysimple"}}} s={"isActive": true, "createdAt": {"$ne": "2025-10-01T17:04:32"}} s={"$or": [{"contactName": "Saysimple"}, {"status": {"$eq": "activated"}}]}

Search criteria to apply to the results.

string or Array of strings
Examples: filter=field||$condition||value filter=relation&filter=relation.field||$condition||value

Filter criteria to apply to the results. Can be a string or an array of strings.

object
Examples: or=field||$condition||value

Logical OR conditions for filtering results.

limit
number or null >= 0
Example: limit=10

Maximum number of items to return per page. Limited to a maximum of 100.

cache
boolean
Example: cache=true

Whether to cache the response. Defaults to true.

sortOrder
string
Enum: "ASC" "DESC"
Example: sortOrder=ASC

Sorting order for the results. Defaults to 'ASC'.

beforeCursor
string or null
Example: beforeCursor=dGltZXN0YW1wOjE3NTU1MDc4NjgwMDAsaWQ6MTY5OQ

Cursor for the previous page of results. Used for lazy loading.

afterCursor
string or null
Example: afterCursor=dGltZXN0YW1wOjE3NTU1MDc4NjgwMDAsaWQ6MTY5OQ

Cursor for the next page of results. Used for lazy loading.

header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "cursor": {
    }
}

Return entry with its neighbors

Authorizations:
(x-api-keyauthorization)
path Parameters
entryId
required
integer >= 1
workspaceId
required
integer >= 1
id
required
integer >= 1
query Parameters
fields
string
Example: fields=field1,field2

Comma-separated list of fields to include in the response

(string or null) or (object or null) or (any or null)
Examples: s={"name": "Saysimple"} s={"name": {"$or": {"$isnull": true, "$eq": "Saysimple"}}} s={"isActive": true, "createdAt": {"$ne": "2025-10-01T17:04:32"}} s={"$or": [{"contactName": "Saysimple"}, {"status": {"$eq": "activated"}}]}

Search criteria to apply to the results.

string or Array of strings
Examples: filter=field||$condition||value filter=relation&filter=relation.field||$condition||value

Filter criteria to apply to the results. Can be a string or an array of strings.

object
Examples: or=field||$condition||value

Logical OR conditions for filtering results.

limit
number or null >= 0
Example: limit=10

Maximum number of items to return per page. Limited to a maximum of 100.

cache
boolean
Example: cache=true

Whether to cache the response. Defaults to true.

sortOrder
string
Enum: "ASC" "DESC"
Example: sortOrder=ASC

Sorting order for the results. Defaults to 'ASC'.

beforeCursor
string or null
Example: beforeCursor=dGltZXN0YW1wOjE3NTU1MDc4NjgwMDAsaWQ6MTY5OQ

Cursor for the previous page of results. Used for lazy loading.

afterCursor
string or null
Example: afterCursor=dGltZXN0YW1wOjE3NTU1MDc4NjgwMDAsaWQ6MTY5OQ

Cursor for the next page of results. Used for lazy loading.

header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "cursor": {
    }
}

Add topics to chat

Authorizations:
(x-api-keyauthorization)
path Parameters
id
required
integer >= 1
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Request Body schema: application/json

Body

topicIds
required
Array of integers

Array of topic ids to add or remove from the chat

Responses

Request samples

Content type
application/json
{
  • "topicIds": [
    ]
}

Response samples

Content type
application/json
{
  • "id": 1,
  • "channelId": 1,
  • "contactId": 1,
  • "contactHandle": "31612345678",
  • "contactName": "John Doe",
  • "assignedWorkspaceUserId": 1,
  • "assignedTeamId": 1,
  • "status": "open",
  • "subject": "Support request",
  • "isSpam": false,
  • "snoozedUntil": "2025-10-01T00:00:00Z",
  • "timestamp": "2025-10-01T00:00:00Z",
  • "sortTimestamp": "2025-10-01T00:00:00Z",
  • "lastMessageEntry": {
    },
  • "topics": [
    ],
  • "assignedTeam": null,
  • "assignedWorkspaceUser": {
    },
  • "contact": {
    }
}

Remove topics from chat

Authorizations:
(x-api-keyauthorization)
path Parameters
id
required
integer >= 1
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Request Body schema: application/json

Body

topicIds
required
Array of integers

Array of topic ids to add or remove from the chat

Responses

Request samples

Content type
application/json
{
  • "topicIds": [
    ]
}

Response samples

Content type
application/json
{
  • "id": 1,
  • "channelId": 1,
  • "contactId": 1,
  • "contactHandle": "31612345678",
  • "contactName": "John Doe",
  • "assignedWorkspaceUserId": 1,
  • "assignedTeamId": 1,
  • "status": "open",
  • "subject": "Support request",
  • "isSpam": false,
  • "snoozedUntil": "2025-10-01T00:00:00Z",
  • "timestamp": "2025-10-01T00:00:00Z",
  • "sortTimestamp": "2025-10-01T00:00:00Z",
  • "lastMessageEntry": {
    },
  • "topics": [
    ],
  • "assignedTeam": null,
  • "assignedWorkspaceUser": {
    },
  • "contact": {
    }
}

Return teams and workspace users which can be assigned to the chat

Authorizations:
(x-api-keyauthorization)
path Parameters
id
required
integer >= 1
workspaceId
required
integer >= 1
query Parameters
fields
string
Example: fields=field1,field2

Comma-separated list of fields to include in the response

(string or null) or (object or null) or (any or null)
Examples: s={"name": "Saysimple"} s={"name": {"$or": {"$isnull": true, "$eq": "Saysimple"}}} s={"isActive": true, "createdAt": {"$ne": "2025-10-01T17:04:32"}} s={"$or": [{"contactName": "Saysimple"}, {"status": {"$eq": "activated"}}]}

Search criteria to apply to the results.

string or Array of strings
Examples: filter=field||$condition||value filter=relation&filter=relation.field||$condition||value

Filter criteria to apply to the results. Can be a string or an array of strings.

object
Examples: or=field||$condition||value

Logical OR conditions for filtering results.

string or Array of strings
Examples: join=relation join=relation1||field1,field2 join=relation1||field11,field12,...&join=relation1.nested||field21,field22,...

Receive joined relational objects in GET result.

Array of any or string
Examples: sort=field,ASC|DESC sort=field1,ASC&sort=field2,DESC

Add sort by field and order to query result.

limit
number or null >= 0
Example: limit=10

Maximum number of items to return per page. Limited to a maximum of 100.

offset
number or null >= 0
Example: offset=0

Number of items to skip before starting to collect the result set.

page
number or null >= 0
Example: page=1

Page number to retrieve. If not provided, defaults to 1.

cache
boolean
Example: cache=true

Whether to cache the response. Defaults to true.

header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Responses

Response samples

Content type
application/json
{
  • "teams": [
    ],
  • "workspaceUsers": [
    ]
}

Contacts

Contacts are the users that can be reached through channels. They can (optional) be linked to chats.

Return list of contacts

Authorizations:
(x-api-keyauthorization)
path Parameters
workspaceId
required
integer >= 1
query Parameters
fields
string
Example: fields=field1,field2

Comma-separated list of fields to include in the response

(string or null) or (object or null) or (any or null)
Examples: s={"name": "Saysimple"} s={"name": {"$or": {"$isnull": true, "$eq": "Saysimple"}}} s={"isActive": true, "createdAt": {"$ne": "2025-10-01T17:04:32"}} s={"$or": [{"contactName": "Saysimple"}, {"status": {"$eq": "activated"}}]}

Search criteria to apply to the results.

string or Array of strings
Examples: filter=field||$condition||value filter=relation&filter=relation.field||$condition||value

Filter criteria to apply to the results. Can be a string or an array of strings.

object
Examples: or=field||$condition||value

Logical OR conditions for filtering results.

string or Array of strings
Examples: join=relation join=relation1||field1,field2 join=relation1||field11,field12,...&join=relation1.nested||field21,field22,...

Receive joined relational objects in GET result.

Array of any or string
Examples: sort=field,ASC|DESC sort=field1,ASC&sort=field2,DESC

Add sort by field and order to query result.

limit
number or null >= 0
Example: limit=10

Maximum number of items to return per page. Limited to a maximum of 100.

offset
number or null >= 0
Example: offset=0

Number of items to skip before starting to collect the result set.

page
number or null >= 0
Example: page=1

Page number to retrieve. If not provided, defaults to 1.

cache
boolean
Example: cache=true

Whether to cache the response. Defaults to true.

header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "count": 20,
  • "total": 100,
  • "page": 1,
  • "pageCount": 5
}

Create contact

Authorizations:
(x-api-keyauthorization)
path Parameters
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Request Body schema: application/json

Body

firstName
required
string [ 1 .. 50 ] characters

First name of the contact

lastName
string or null [ 1 .. 50 ] characters

Last name of the contact

emailAddresses
Array of strings or null <email> [ items <email > [ 1 .. 100 ] characters ]

List of email addresses associated with the contact

Array of objects or null

List of phone numbers associated with the contact

country
string or null

Country code in ISO 3166-1 alpha-2 format

reference
string or null <= 100 characters

A reference for the contact, can be used to link to external systems

isFavorite
boolean

Indicates if the contact should be marked as favorite

isBlocked
boolean

Indicates if the contact should be blocked

Array of objects

List of labels associated with the contact

Array of objects or null

List of custom fields associated with the contact

Responses

Request samples

Content type
application/json
{
  • "firstName": "John",
  • "lastName": "Doe",
  • "emailAddresses": [
    ],
  • "phoneNumbers": [
    ],
  • "country": "nl",
  • "reference": "12345",
  • "isFavorite": false,
  • "isBlocked": false,
  • "labels": [
    ],
  • "customFields": [
    ]
}

Response samples

Content type
application/json
{
  • "id": 1,
  • "firstName": "John",
  • "lastName": "Doe",
  • "emailAddresses": [
    ],
  • "phoneNumbers": [
    ],
  • "country": "nl",
  • "reference": "12345",
  • "isFavorite": true,
  • "isBlocked": false,
  • "createdAt": "2023-10-01T12:00:00Z",
  • "labels": [
    ],
  • "customFields": [
    ]
}

Return contact

Authorizations:
(x-api-keyauthorization)
path Parameters
id
required
integer >= 1
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Responses

Response samples

Content type
application/json
{
  • "id": 1,
  • "firstName": "John",
  • "lastName": "Doe",
  • "emailAddresses": [
    ],
  • "phoneNumbers": [
    ],
  • "country": "nl",
  • "reference": "12345",
  • "isFavorite": true,
  • "isBlocked": false,
  • "createdAt": "2023-10-01T12:00:00Z",
  • "labels": [
    ],
  • "customFields": [
    ]
}

Update contact

Authorizations:
(x-api-keyauthorization)
path Parameters
id
required
integer >= 1
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Request Body schema: application/json

Body

workspaceId
integer

Unique identifier for the workspace

firstName
string [ 1 .. 50 ] characters

First name of the contact

lastName
string or null [ 1 .. 50 ] characters

Last name of the contact

emailAddresses
Array of strings or null <email> [ items <email > [ 1 .. 100 ] characters ]

List of email addresses associated with the contact

Array of objects or null

List of phone numbers associated with the contact

country
string or null

Country code in ISO 3166-1 alpha-2 format

reference
string or null <= 100 characters

A reference for the contact, can be used to link to external systems

isFavorite
boolean
Default: false

Indicates if the contact is marked as favorite

isBlocked
boolean
Default: false

Indicates if the contact is blocked

Array of objects

List of labels associated with the contact

Array of objects or null

List of custom fields associated with the contact

Responses

Request samples

Content type
application/json
{
  • "workspaceId": 1,
  • "firstName": "John",
  • "lastName": "Doe",
  • "emailAddresses": [
    ],
  • "phoneNumbers": [
    ],
  • "country": "nl",
  • "reference": "12345",
  • "isFavorite": true,
  • "isBlocked": false,
  • "labels": [
    ],
  • "customFields": [
    ]
}

Response samples

Content type
application/json
{
  • "id": 1,
  • "firstName": "John",
  • "lastName": "Doe",
  • "emailAddresses": [
    ],
  • "phoneNumbers": [
    ],
  • "country": "nl",
  • "reference": "12345",
  • "isFavorite": true,
  • "isBlocked": false,
  • "createdAt": "2023-10-01T12:00:00Z",
  • "labels": [
    ],
  • "customFields": [
    ]
}

Delete contact

Authorizations:
(x-api-keyauthorization)
path Parameters
id
required
integer >= 1
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Responses

Response samples

Content type
application/json
{
  • "id": 1
}

Batch update contacts

Authorizations:
(x-api-keyauthorization)
path Parameters
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Request Body schema: application/json

Body

contactIds
required
Array of integers [ 1 .. 100 ] items

List of contact IDs to update

required
object

Responses

Request samples

Content type
application/json
{
  • "contactIds": [
    ],
  • "contact": {
    }
}

Response samples

Content type
application/json
[
  • {
    }
]

Batch delete contacts

Authorizations:
(x-api-keyauthorization)
path Parameters
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Request Body schema: application/json

Body

Array ([ 1 .. 100 ] items)
integer

Responses

Request samples

Content type
application/json
[
  • 1,
  • 2,
  • 3
]

Response samples

Content type
application/json
[
  • 1,
  • 2,
  • 3
]

Return counters for contacts

Authorizations:
(x-api-keyauthorization)
path Parameters
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Responses

Response samples

Content type
application/json
{
  • "contacts": 150,
  • "favorites": 30,
  • "blocked": 5
}

Merge contacts

Authorizations:
(x-api-keyauthorization)
path Parameters
id
required
integer >= 1
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Request Body schema: application/json

Body

Array
integer

Responses

Request samples

Content type
application/json
[
  • 1,
  • 2
]

Response samples

Content type
application/json
{
  • "id": 1,
  • "workspaceId": 1,
  • "firstName": "John",
  • "lastName": "Doe",
  • "emailAddresses": [
    ],
  • "phoneNumbers": [
    ],
  • "country": "nl",
  • "reference": "12345",
  • "isFavorite": true,
  • "isBlocked": false,
  • "createdAt": "2023-10-01T12:00:00Z",
  • "updatedAt": "2023-10-02T12:00:00Z",
  • "labels": [
    ],
  • "customFields": [
    ]
}

Add labels to contact

Authorizations:
(x-api-keyauthorization)
path Parameters
id
required
integer >= 1
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Request Body schema: application/json

Body

labelIds
required
Array of integers

List of label IDs to add or remove from the contact

Responses

Request samples

Content type
application/json
{
  • "labelIds": [
    ]
}

Response samples

Content type
application/json
{
  • "id": 1,
  • "firstName": "John",
  • "lastName": "Doe",
  • "emailAddresses": [
    ],
  • "phoneNumbers": [
    ],
  • "country": "nl",
  • "reference": "12345",
  • "isFavorite": true,
  • "isBlocked": false,
  • "createdAt": "2023-10-01T12:00:00Z",
  • "labels": [
    ],
  • "customFields": [
    ]
}

Remove labels from contact

Authorizations:
(x-api-keyauthorization)
path Parameters
id
required
integer >= 1
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Request Body schema: application/json

Body

labelIds
required
Array of integers

List of label IDs to add or remove from the contact

Responses

Request samples

Content type
application/json
{
  • "labelIds": [
    ]
}

Response samples

Content type
application/json
{
  • "id": 1,
  • "firstName": "John",
  • "lastName": "Doe",
  • "emailAddresses": [
    ],
  • "phoneNumbers": [
    ],
  • "country": "nl",
  • "reference": "12345",
  • "isFavorite": true,
  • "isBlocked": false,
  • "createdAt": "2023-10-01T12:00:00Z",
  • "labels": [
    ],
  • "customFields": [
    ]
}

Custom fields

Custom fields are additional fields that can be added to contacts to store extra information. They can be created, updated, deleted, and reordered.

Return list of custom fields

Authorizations:
(x-api-keyauthorization)
path Parameters
workspaceId
required
integer >= 1
query Parameters
fields
string
Example: fields=field1,field2

Comma-separated list of fields to include in the response

(string or null) or (object or null) or (any or null)
Examples: s={"name": "Saysimple"} s={"name": {"$or": {"$isnull": true, "$eq": "Saysimple"}}} s={"isActive": true, "createdAt": {"$ne": "2025-10-01T17:04:32"}} s={"$or": [{"contactName": "Saysimple"}, {"status": {"$eq": "activated"}}]}

Search criteria to apply to the results.

string or Array of strings
Examples: filter=field||$condition||value filter=relation&filter=relation.field||$condition||value

Filter criteria to apply to the results. Can be a string or an array of strings.

object
Examples: or=field||$condition||value

Logical OR conditions for filtering results.

string or Array of strings
Examples: join=relation join=relation1||field1,field2 join=relation1||field11,field12,...&join=relation1.nested||field21,field22,...

Receive joined relational objects in GET result.

Array of any or string
Examples: sort=field,ASC|DESC sort=field1,ASC&sort=field2,DESC

Add sort by field and order to query result.

limit
number or null >= 0
Example: limit=10

Maximum number of items to return per page. Limited to a maximum of 100.

offset
number or null >= 0
Example: offset=0

Number of items to skip before starting to collect the result set.

page
number or null >= 0
Example: page=1

Page number to retrieve. If not provided, defaults to 1.

cache
boolean
Example: cache=true

Whether to cache the response. Defaults to true.

header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create custom field

Authorizations:
(x-api-keyauthorization)
path Parameters
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Request Body schema: application/json

Body

name
required
string [ 1 .. 100 ] characters

Name of the custom field

identifier
required
string [ 1 .. 100 ] characters ^[a-z_]*$

Unique identifier for the custom field, can only contain lowercase letters and underscores

fieldType
required
string
Enum: "text" "boolean" "phone" "dropdown" "date" "number" "url" "email"

Type of the custom field

required
boolean
Default: false

Whether the custom field is required

icon
string <= 100 characters
Default: "fas fa-user"

Icon associated with the custom field (e.g., FontAwesome class)

placeholder
string or null <= 255 characters

Placeholder text for the custom field

Array of objects or null

Options for dropdown field

Responses

Request samples

Content type
application/json
{
  • "name": "Custom field 1",
  • "identifier": "custom_field_1",
  • "fieldType": "text",
  • "required": false,
  • "icon": "fas fa-user",
  • "placeholder": "Enter your text here",
  • "options": [
    ]
}

Response samples

Content type
application/json
{
  • "id": 1,
  • "name": "Custom field 1",
  • "identifierPrefix": "contact.custom",
  • "identifier": "custom_field_1",
  • "fieldType": "text",
  • "required": false,
  • "options": [
    ],
  • "icon": "fas fa-user",
  • "placeholder": "Enter your text here",
  • "order": 1,
  • "createdAt": "2023-10-01T12:00:00Z",
  • "updatedAt": "2023-10-02T12:00:00Z"
}

Return custom field

Authorizations:
(x-api-keyauthorization)
path Parameters
id
required
integer >= 1
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Responses

Response samples

Content type
application/json
{
  • "id": 1,
  • "name": "Custom field 1",
  • "identifierPrefix": "contact.custom",
  • "identifier": "custom_field_1",
  • "fieldType": "text",
  • "required": false,
  • "options": [
    ],
  • "icon": "fas fa-user",
  • "placeholder": "Enter your text here",
  • "order": 1,
  • "createdAt": "2023-10-01T12:00:00Z",
  • "updatedAt": "2023-10-02T12:00:00Z"
}

Update custom field

Authorizations:
(x-api-keyauthorization)
path Parameters
id
required
integer >= 1
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Request Body schema: application/json

Body

name
string [ 1 .. 100 ] characters

Name of the custom field

identifier
string [ 1 .. 100 ] characters ^[a-z_]*$

Unique identifier for the custom field, can only contain lowercase letters and underscores

fieldType
string
Enum: "text" "boolean" "phone" "dropdown" "date" "number" "url" "email"

Type of the custom field

required
boolean
Default: false

Whether the custom field is required

icon
string <= 100 characters
Default: "fas fa-user"

Icon associated with the custom field (e.g., FontAwesome class)

placeholder
string or null <= 255 characters

Placeholder text for the custom field

Array of objects or null

Options for dropdown field

Responses

Request samples

Content type
application/json
{
  • "name": "Custom field 1",
  • "identifier": "custom_field_1",
  • "fieldType": "text",
  • "required": false,
  • "icon": "fas fa-user",
  • "placeholder": "Enter your text here",
  • "options": [
    ]
}

Response samples

Content type
application/json
{
  • "id": 1,
  • "name": "Custom field 1",
  • "identifierPrefix": "contact.custom",
  • "identifier": "custom_field_1",
  • "fieldType": "text",
  • "required": false,
  • "options": [
    ],
  • "icon": "fas fa-user",
  • "placeholder": "Enter your text here",
  • "order": 1,
  • "createdAt": "2023-10-01T12:00:00Z",
  • "updatedAt": "2023-10-02T12:00:00Z"
}

Remove custom field

Authorizations:
(x-api-keyauthorization)
path Parameters
id
required
integer >= 1
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Responses

Response samples

Content type
application/json
{
  • "id": 1
}

Update the order of a custom field

Authorizations:
(x-api-keyauthorization)
path Parameters
id
required
integer >= 1
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Request Body schema: application/json

Body

order
required
integer >= 1

Order of the custom field in the list

Responses

Request samples

Content type
application/json
{
  • "order": 1
}

Response samples

Content type
application/json
{
  • "id": 1,
  • "name": "Custom field 1",
  • "identifierPrefix": "contact.custom",
  • "identifier": "custom_field_1",
  • "fieldType": "text",
  • "required": false,
  • "options": [
    ],
  • "icon": "fas fa-user",
  • "placeholder": "Enter your text here",
  • "order": 1,
  • "createdAt": "2023-10-01T12:00:00Z",
  • "updatedAt": "2023-10-02T12:00:00Z"
}

Files

Files are the files that can be uploaded and shared in chats. The endpoints also offer a way to create signed URLs for limited access.

Return signed cookies

Authorizations:
(x-api-keyauthorization)
path Parameters
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Responses

Response samples

Content type
application/json
{
  • "CloudFront-Key-Pair-Id": "APKAEXAMPLEKEYPAIRID",
  • "CloudFront-Signature": "abc123signature",
  • "CloudFront-Policy": "policyString",
  • "expirationTime": "2025-03-01T12:00:00Z"
}

Return signed URL

Authorizations:
(x-api-keyauthorization)
path Parameters
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Request Body schema: application/json

Body

filePath
required
string

Path to the file in the storage system

fileName
required
string

Name of the file in the storage system

Responses

Request samples

Content type
application/json
{
  • "filePath": "saysimple/messages/202503/jpeg",
  • "fileName": "f8090c09-5d1f-4aab-bf3b-f8b99ec22cc8.jpeg"
}

Upload media

Authorizations:
(x-api-keyauthorization)
path Parameters
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Responses

Response samples

Content type
application/json
{
  • "id": 1,
  • "workspaceId": 1,
  • "entryId": 1,
  • "fileSize": 102400,
  • "filePath": "saysimple/messages/202503/jpeg",
  • "fileName": "f8090c09-5d1f-4aab-bf3b-f8b99ec22cc8.jpeg",
  • "mimeType": "image/jpeg",
  • "originalFileName": "profile_picture.jpeg",
  • "externalReference": "\"6e8c90ead1972e7715bb084564691337\"",
  • "status": "pending",
  • "statusReason": "File format not supported",
  • "createdAt": "2019-08-24T14:15:22Z",
  • "updatedAt": "2019-08-24T14:15:22Z",
  • "workspaceUserId": 1,
}

Labels

Labels are used to categorize and organize chats and contacts. They can be created, updated, and deleted.

Return list of labels

Authorizations:
(x-api-keyauthorization)
path Parameters
workspaceId
required
integer >= 1
query Parameters
fields
string
Example: fields=field1,field2

Comma-separated list of fields to include in the response

(string or null) or (object or null) or (any or null)
Examples: s={"name": "Saysimple"} s={"name": {"$or": {"$isnull": true, "$eq": "Saysimple"}}} s={"isActive": true, "createdAt": {"$ne": "2025-10-01T17:04:32"}} s={"$or": [{"contactName": "Saysimple"}, {"status": {"$eq": "activated"}}]}

Search criteria to apply to the results.

string or Array of strings
Examples: filter=field||$condition||value filter=relation&filter=relation.field||$condition||value

Filter criteria to apply to the results. Can be a string or an array of strings.

object
Examples: or=field||$condition||value

Logical OR conditions for filtering results.

string or Array of strings
Examples: join=relation join=relation1||field1,field2 join=relation1||field11,field12,...&join=relation1.nested||field21,field22,...

Receive joined relational objects in GET result.

Array of any or string
Examples: sort=field,ASC|DESC sort=field1,ASC&sort=field2,DESC

Add sort by field and order to query result.

limit
number or null >= 0
Example: limit=10

Maximum number of items to return per page. Limited to a maximum of 100.

offset
number or null >= 0
Example: offset=0

Number of items to skip before starting to collect the result set.

page
number or null >= 0
Example: page=1

Page number to retrieve. If not provided, defaults to 1.

cache
boolean
Example: cache=true

Whether to cache the response. Defaults to true.

header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "count": 20,
  • "total": 100,
  • "page": 1,
  • "pageCount": 5
}

Create label

Authorizations:
(x-api-keyauthorization)
path Parameters
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Request Body schema: application/json

Body

name
required
string [ 1 .. 100 ] characters

Name of the label

color
required
string = 7 characters

Hex color code for the label

Responses

Request samples

Content type
application/json
{
  • "name": "Label 1",
  • "color": "#FFFFFF"
}

Response samples

Content type
application/json
{
  • "id": 1,
  • "name": "Label 1",
  • "color": "#FFFFFF",
  • "createdAt": "2023-10-01T12:00:00Z",
  • "updatedAt": "2023-10-02T12:00:00Z"
}

Return label

Authorizations:
(x-api-keyauthorization)
path Parameters
id
required
integer >= 1
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Responses

Response samples

Content type
application/json
{
  • "id": 1,
  • "name": "Label 1",
  • "color": "#FFFFFF",
  • "createdAt": "2023-10-01T12:00:00Z",
  • "updatedAt": "2023-10-02T12:00:00Z"
}

Update label

Authorizations:
(x-api-keyauthorization)
path Parameters
id
required
integer >= 1
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Request Body schema: application/json

Body

workspaceId
integer

ID of the workspace to which the label belongs

name
string [ 1 .. 100 ] characters

Name of the label

color
string = 7 characters

Hex color code for the label

Responses

Request samples

Content type
application/json
{
  • "workspaceId": 1,
  • "name": "Label 1",
  • "color": "#FFFFFF"
}

Response samples

Content type
application/json
{
  • "id": 1,
  • "name": "Label 1",
  • "color": "#FFFFFF",
  • "createdAt": "2023-10-01T12:00:00Z",
  • "updatedAt": "2023-10-02T12:00:00Z"
}

Remove label

Authorizations:
(x-api-keyauthorization)
path Parameters
id
required
integer >= 1
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Responses

Response samples

Content type
application/json
{
  • "id": 1
}

Messages

Messages are the individual messages that are sent and received in chats.

Send a message

Authorizations:
(x-api-keyauthorization)
path Parameters
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string
Request Body schema: application/json

Body

One of
channelId
required
integer

The ID of the channel.

to
required
string

The recipient's phone number in E.164 format.

File by ID (object) or File by link (object)

The file to send, if applicable. The file should be uploaded using multipart/form-data. Supported file types are images, documents, audio, and video.

parentEntryId
integer

The ID of the parent message if this is a reply.

type
required
string
Default: "text"
Enum: "text" "image" "document" "audio" "video" "reaction" "template" "interactive"

The type of message being sent. The type is also used as property name in the request body for the message content, see below.

required
object

The text message content, used for sending plain text messages.

object

The image message content, provide the file in the body object after the file has been uploaded.

object

The document message content, provide the file in the body object after the file has been uploaded.

object

The audio message content, provide the file in the body object after the file has been uploaded. If a caption is provided, the audio will be sent as a document.

object

The video message content, provide the file in the body object after the file has been uploaded.

object

The reaction message content, used to react to a specific message with a single emoji.

object (Sent template)

The template message content, used to send a pre-defined template message. This is mostly used for WhatsApp to send approved templated messages outside customer care window.

Button (object) or List (object) or CTA url (object) or Location request (object)

The interactive message content, used to send messages with interactive elements like buttons and lists.

Responses

Request samples

Content type
application/json
Example
{
  • "channelId": 1,
  • "to": "+31612345678",
  • "type": "text",
  • "text": {
    }
}

Response samples

Content type
application/json
{
  • "id": 1,
  • "chatId": 1,
  • "status": "sent",
  • "statusReason": "string",
  • "direction": "out",
  • "type": "text",
  • "createdByType": "handle",
  • "metadata": null,
  • "parsedMetadata": null,
  • "timestamp": "2025-10-01T00:00:00Z",
  • "file": {
    },
  • "workspaceUser": null,
  • "parentEntry": null,
  • "reactions": [
    ],
  • "workspaceUserId": 1
}

Notes

Notes are internal messages that can be added to chats by agents.

Return list of chat notes

Authorizations:
(x-api-keyauthorization)
path Parameters
workspaceId
required
integer >= 1
chatId
required
integer >= 1
query Parameters
fields
string
Example: fields=field1,field2

Comma-separated list of fields to include in the response

(string or null) or (object or null) or (any or null)
Examples: s={"name": "Saysimple"} s={"name": {"$or": {"$isnull": true, "$eq": "Saysimple"}}} s={"isActive": true, "createdAt": {"$ne": "2025-10-01T17:04:32"}} s={"$or": [{"contactName": "Saysimple"}, {"status": {"$eq": "activated"}}]}

Search criteria to apply to the results.

string or Array of strings
Examples: filter=field||$condition||value filter=relation&filter=relation.field||$condition||value

Filter criteria to apply to the results. Can be a string or an array of strings.

object
Examples: or=field||$condition||value

Logical OR conditions for filtering results.

limit
number or null >= 0
Example: limit=10

Maximum number of items to return per page. Limited to a maximum of 100.

cache
boolean
Example: cache=true

Whether to cache the response. Defaults to true.

sortOrder
string
Enum: "ASC" "DESC"
Example: sortOrder=ASC

Sorting order for the results. Defaults to 'ASC'.

beforeCursor
string or null
Example: beforeCursor=dGltZXN0YW1wOjE3NTU1MDc4NjgwMDAsaWQ6MTY5OQ

Cursor for the previous page of results. Used for lazy loading.

afterCursor
string or null
Example: afterCursor=dGltZXN0YW1wOjE3NTU1MDc4NjgwMDAsaWQ6MTY5OQ

Cursor for the next page of results. Used for lazy loading.

header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "cursor": {
    }
}

Create chat note

Authorizations:
(x-api-keyauthorization)
path Parameters
workspaceId
required
integer >= 1
chatId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Request Body schema: application/json

Body

workspaceUserId
integer

ID of the workspace user who created the note

required
object (Text)

Responses

Request samples

Content type
application/json
{
  • "workspaceUserId": 1,
  • "metadata": {
    }
}

Response samples

Content type
application/json
{
  • "id": 1,
  • "chatId": 1,
  • "status": "sent",
  • "statusReason": "string",
  • "direction": "out",
  • "type": "text",
  • "createdByType": "handle",
  • "metadata": null,
  • "parsedMetadata": null,
  • "timestamp": "2025-10-01T00:00:00Z",
  • "file": {
    },
  • "workspaceUser": null,
  • "parentEntry": null,
  • "reactions": [
    ],
  • "workspaceUserId": 1
}

Return chat note

Authorizations:
(x-api-keyauthorization)
path Parameters
id
required
integer >= 1
workspaceId
required
integer >= 1
chatId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Responses

Response samples

Content type
application/json
{
  • "id": 1,
  • "chatId": 1,
  • "status": "sent",
  • "statusReason": "string",
  • "direction": "out",
  • "type": "text",
  • "createdByType": "handle",
  • "metadata": null,
  • "parsedMetadata": null,
  • "timestamp": "2025-10-01T00:00:00Z",
  • "file": {
    },
  • "workspaceUser": null,
  • "parentEntry": null,
  • "reactions": [
    ],
  • "workspaceUserId": 1
}

Update chat note

Authorizations:
(x-api-keyauthorization)
path Parameters
id
required
integer >= 1
workspaceId
required
integer >= 1
chatId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Request Body schema: application/json

Body

workspaceUserId
integer

ID of the workspace user who created the note

object (Text)

Responses

Request samples

Content type
application/json
{
  • "workspaceUserId": 1,
  • "metadata": {
    }
}

Response samples

Content type
application/json
{
  • "id": 1,
  • "chatId": 1,
  • "status": "sent",
  • "statusReason": "string",
  • "direction": "out",
  • "type": "text",
  • "createdByType": "handle",
  • "metadata": null,
  • "parsedMetadata": null,
  • "timestamp": "2025-10-01T00:00:00Z",
  • "file": {
    },
  • "workspaceUser": null,
  • "parentEntry": null,
  • "reactions": [
    ],
  • "workspaceUserId": 1
}

Remove chat note

Authorizations:
(x-api-keyauthorization)
path Parameters
id
required
integer >= 1
workspaceId
required
integer >= 1
chatId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Responses

Response samples

Content type
application/json
{
  • "id": 1
}

Teams

Teams are groups of workspace users that can be used to manage access to chats and channels.

Return list of teams

Authorizations:
(x-api-keyauthorization)
path Parameters
workspaceId
required
integer >= 1
query Parameters
fields
string
Example: fields=field1,field2

Comma-separated list of fields to include in the response

(string or null) or (object or null) or (any or null)
Examples: s={"name": "Saysimple"} s={"name": {"$or": {"$isnull": true, "$eq": "Saysimple"}}} s={"isActive": true, "createdAt": {"$ne": "2025-10-01T17:04:32"}} s={"$or": [{"contactName": "Saysimple"}, {"status": {"$eq": "activated"}}]}

Search criteria to apply to the results.

string or Array of strings
Examples: filter=field||$condition||value filter=relation&filter=relation.field||$condition||value

Filter criteria to apply to the results. Can be a string or an array of strings.

object
Examples: or=field||$condition||value

Logical OR conditions for filtering results.

string or Array of strings
Examples: join=relation join=relation1||field1,field2 join=relation1||field11,field12,...&join=relation1.nested||field21,field22,...

Receive joined relational objects in GET result.

Array of any or string
Examples: sort=field,ASC|DESC sort=field1,ASC&sort=field2,DESC

Add sort by field and order to query result.

limit
number or null >= 0
Example: limit=10

Maximum number of items to return per page. Limited to a maximum of 100.

offset
number or null >= 0
Example: offset=0

Number of items to skip before starting to collect the result set.

page
number or null >= 0
Example: page=1

Page number to retrieve. If not provided, defaults to 1.

cache
boolean
Example: cache=true

Whether to cache the response. Defaults to true.

header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "count": 20,
  • "total": 100,
  • "page": 1,
  • "pageCount": 5
}

Create team

Authorizations:
(x-api-keyauthorization)
path Parameters
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Request Body schema: application/json

Body

name
required
string [ 1 .. 100 ] characters

Name of the team

color
required
string = 7 characters

Hex color code for the label

userIds
Array of integers

Array of user IDs to be added to the team

channelIds
Array of integers

Array of channel IDs to be associated with the team

Responses

Request samples

Content type
application/json
{
  • "name": "Development Team",
  • "color": "#FFFFFF",
  • "userIds": [
    ],
  • "channelIds": [
    ]
}

Response samples

Content type
application/json
null

Return team

Authorizations:
(x-api-keyauthorization)
path Parameters
id
required
integer >= 1
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Responses

Response samples

Content type
application/json
null

Update team

Authorizations:
(x-api-keyauthorization)
path Parameters
id
required
integer >= 1
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Request Body schema: application/json

Body

name
string [ 1 .. 100 ] characters

Name of the team

color
string = 7 characters

Hex color code for the label

Responses

Request samples

Content type
application/json
{
  • "name": "Development Team",
  • "color": "#FFFFFF"
}

Response samples

Content type
application/json
null

Remove team

Authorizations:
(x-api-keyauthorization)
path Parameters
id
required
integer >= 1
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Responses

Response samples

Content type
application/json
{
  • "id": 1
}

Add users to team

Authorizations:
(x-api-keyauthorization)
path Parameters
id
required
integer >= 1
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Request Body schema: application/json

Body

workspaceUserIds
required
Array of integers

Array of workspace user IDs to be added or removed from the team

Responses

Request samples

Content type
application/json
{
  • "workspaceUserIds": [
    ]
}

Response samples

Content type
application/json
null

Remove users from team

Authorizations:
(x-api-keyauthorization)
path Parameters
id
required
integer >= 1
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Request Body schema: application/json

Body

workspaceUserIds
required
Array of integers

Array of workspace user IDs to be added or removed from the team

Responses

Request samples

Content type
application/json
{
  • "workspaceUserIds": [
    ]
}

Response samples

Content type
application/json
null

Add channels to team

Authorizations:
(x-api-keyauthorization)
path Parameters
id
required
integer >= 1
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Request Body schema: application/json

Body

channelIds
required
Array of integers

Array of channel IDs to be added or removed from the team

Responses

Request samples

Content type
application/json
{
  • "channelIds": [
    ]
}

Response samples

Content type
application/json
null

Remove channels from team

Authorizations:
(x-api-keyauthorization)
path Parameters
id
required
integer >= 1
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Request Body schema: application/json

Body

channelIds
required
Array of integers

Array of channel IDs to be added or removed from the team

Responses

Request samples

Content type
application/json
{
  • "channelIds": [
    ]
}

Response samples

Content type
application/json
null

Templates

Templates are predefined messages that can be used to send messages in chats outside customer care window. Templates needs to be approved by Meta.

Return list of templates

Authorizations:
(x-api-keyauthorization)
path Parameters
workspaceId
required
integer >= 1
query Parameters
fields
string
Example: fields=field1,field2

Comma-separated list of fields to include in the response

(string or null) or (object or null) or (any or null)
Examples: s={"name": "Saysimple"} s={"name": {"$or": {"$isnull": true, "$eq": "Saysimple"}}} s={"isActive": true, "createdAt": {"$ne": "2025-10-01T17:04:32"}} s={"$or": [{"contactName": "Saysimple"}, {"status": {"$eq": "activated"}}]}

Search criteria to apply to the results.

string or Array of strings
Examples: filter=field||$condition||value filter=relation&filter=relation.field||$condition||value

Filter criteria to apply to the results. Can be a string or an array of strings.

object
Examples: or=field||$condition||value

Logical OR conditions for filtering results.

string or Array of strings
Examples: join=relation join=relation1||field1,field2 join=relation1||field11,field12,...&join=relation1.nested||field21,field22,...

Receive joined relational objects in GET result.

Array of any or string
Examples: sort=field,ASC|DESC sort=field1,ASC&sort=field2,DESC

Add sort by field and order to query result.

limit
number or null >= 0
Example: limit=10

Maximum number of items to return per page. Limited to a maximum of 100.

offset
number or null >= 0
Example: offset=0

Number of items to skip before starting to collect the result set.

page
number or null >= 0
Example: page=1

Page number to retrieve. If not provided, defaults to 1.

cache
boolean
Example: cache=true

Whether to cache the response. Defaults to true.

header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "count": 20,
  • "total": 100,
  • "page": 1,
  • "pageCount": 5
}

Create template

Authorizations:
(x-api-keyauthorization)
path Parameters
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Request Body schema: application/json

Body

One of
name
required
string [ 1 .. 512 ] characters ^[a-z0-9_]*$

The name of the template. Must be unique within the workspace and should follow the naming conventions.

language
required
string

The language code of the template, e.g., 'en_US' for English (United States) or just 'en' for English.

required
Array of Header (object) or Body (required) (object) or Footer (object) or Buttons (optional) (object)

An array of components that make up the template, such as header, body, footer, and buttons.

category
string
Default: "utility"
Enum: "marketing" "utility"

The category of the template, such as 'marketing' or 'utility'.

parameterFormat
string
Default: "positional"
Enum: "positional" "named"

The format of parameters used in the template, such as 'positional' or 'named'.

lastUpdatedAt
string or null <date-time>

The date and time when the template was last updated.

isMediaLocked
boolean
Default: false

Indicates whether the media associated with the template is locked and cannot be changed when sending template.

accountId
required
integer

The unique identifier for the account to which the template belongs.

Responses

Request samples

Content type
application/json
Example
{
  • "accountId": 1,
  • "name": "test_buttons",
  • "language": "en",
  • "category": "utility",
  • "components": [
    ]
}

Response samples

Content type
application/json
{
  • "id": 1,
  • "name": "order_confirmation",
  • "language": "en_US",
  • "components": [
    ],
  • "externalReference": "12345679891234",
  • "category": "utility",
  • "qualityRating": "unknown",
  • "status": "pending",
  • "reason": "Template is under review.",
  • "parameterFormat": "positional",
  • "otherInfo": {
    },
  • "updateDates": [
    ],
  • "lastUpdatedAt": "2023-10-02T15:30:00Z",
  • "approvedAt": "2023-10-01T12:00:00Z",
  • "createdAt": "2023-10-01T12:00:00Z",
  • "updatedAt": "2023-10-02T15:30:00Z",
  • "deletedAt": "2023-10-03T10:00:00Z",
  • "isMediaLocked": false,
  • "account": {
    }
}

Return template

Authorizations:
(x-api-keyauthorization)
path Parameters
id
required
integer >= 1
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Responses

Response samples

Content type
application/json
{
  • "id": 1,
  • "name": "order_confirmation",
  • "language": "en_US",
  • "components": [
    ],
  • "externalReference": "12345679891234",
  • "category": "utility",
  • "qualityRating": "unknown",
  • "status": "pending",
  • "reason": "Template is under review.",
  • "parameterFormat": "positional",
  • "otherInfo": {
    },
  • "updateDates": [
    ],
  • "lastUpdatedAt": "2023-10-02T15:30:00Z",
  • "approvedAt": "2023-10-01T12:00:00Z",
  • "createdAt": "2023-10-01T12:00:00Z",
  • "updatedAt": "2023-10-02T15:30:00Z",
  • "deletedAt": "2023-10-03T10:00:00Z",
  • "isMediaLocked": false,
  • "account": {
    }
}

Update template

Authorizations:
(x-api-keyauthorization)
path Parameters
id
required
integer >= 1
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Request Body schema: application/json

Body

Array of Header (object) or Body (required) (object) or Footer (object) or Buttons (optional) (object)

An array of components that make up the template, such as header, body, footer, and buttons.

category
string
Default: "utility"
Enum: "marketing" "utility"

The category of the template, such as 'marketing' or 'utility'.

isMediaLocked
boolean
Default: false

Indicates whether the media associated with the template is locked and cannot be changed when sending template.

Responses

Request samples

Content type
application/json
{
  • "components": [
    ],
  • "category": "utility",
  • "isMediaLocked": false
}

Response samples

Content type
application/json
{
  • "id": 1,
  • "name": "order_confirmation",
  • "language": "en_US",
  • "components": [
    ],
  • "externalReference": "12345679891234",
  • "category": "utility",
  • "qualityRating": "unknown",
  • "status": "pending",
  • "reason": "Template is under review.",
  • "parameterFormat": "positional",
  • "otherInfo": {
    },
  • "updateDates": [
    ],
  • "lastUpdatedAt": "2023-10-02T15:30:00Z",
  • "approvedAt": "2023-10-01T12:00:00Z",
  • "createdAt": "2023-10-01T12:00:00Z",
  • "updatedAt": "2023-10-02T15:30:00Z",
  • "deletedAt": "2023-10-03T10:00:00Z",
  • "isMediaLocked": false,
  • "account": {
    }
}

Remove template

Authorizations:
(x-api-keyauthorization)
path Parameters
id
required
integer >= 1
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Responses

Response samples

Content type
application/json
{
  • "id": 1
}

Topics

Topics are used to categorize and organize chats. They can be created, updated, and deleted.

Return list of topics

Authorizations:
(x-api-keyauthorization)
path Parameters
workspaceId
required
integer >= 1
query Parameters
fields
string
Example: fields=field1,field2

Comma-separated list of fields to include in the response

(string or null) or (object or null) or (any or null)
Examples: s={"name": "Saysimple"} s={"name": {"$or": {"$isnull": true, "$eq": "Saysimple"}}} s={"isActive": true, "createdAt": {"$ne": "2025-10-01T17:04:32"}} s={"$or": [{"contactName": "Saysimple"}, {"status": {"$eq": "activated"}}]}

Search criteria to apply to the results.

string or Array of strings
Examples: filter=field||$condition||value filter=relation&filter=relation.field||$condition||value

Filter criteria to apply to the results. Can be a string or an array of strings.

object
Examples: or=field||$condition||value

Logical OR conditions for filtering results.

string or Array of strings
Examples: join=relation join=relation1||field1,field2 join=relation1||field11,field12,...&join=relation1.nested||field21,field22,...

Receive joined relational objects in GET result.

Array of any or string
Examples: sort=field,ASC|DESC sort=field1,ASC&sort=field2,DESC

Add sort by field and order to query result.

limit
number or null >= 0
Example: limit=10

Maximum number of items to return per page. Limited to a maximum of 100.

offset
number or null >= 0
Example: offset=0

Number of items to skip before starting to collect the result set.

page
number or null >= 0
Example: page=1

Page number to retrieve. If not provided, defaults to 1.

cache
boolean
Example: cache=true

Whether to cache the response. Defaults to true.

header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "count": 20,
  • "total": 100,
  • "page": 1,
  • "pageCount": 5
}

Create topic

Authorizations:
(x-api-keyauthorization)
path Parameters
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Request Body schema: application/json

Body

name
required
string [ 1 .. 100 ] characters

Name of the topic

color
required
string = 7 characters

Hex color code for the label

isSticky
required
boolean

Indicates if the topic is sticky when the chat is resolved

Responses

Request samples

Content type
application/json
{
  • "name": "Topic 1",
  • "color": "#FFFFFF",
  • "isSticky": true
}

Response samples

Content type
application/json
{
  • "id": 1,
  • "name": "Topic 1",
  • "color": "#FFFFFF",
  • "isSticky": true,
  • "createdAt": "2023-10-01T12:00:00Z",
  • "updatedAt": "2023-10-01T12:00:00Z"
}

Return topic

Authorizations:
(x-api-keyauthorization)
path Parameters
id
required
integer >= 1
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Responses

Response samples

Content type
application/json
{
  • "id": 1,
  • "name": "Topic 1",
  • "color": "#FFFFFF",
  • "isSticky": true,
  • "createdAt": "2023-10-01T12:00:00Z",
  • "updatedAt": "2023-10-01T12:00:00Z"
}

Update topic

Authorizations:
(x-api-keyauthorization)
path Parameters
id
required
integer >= 1
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Request Body schema: application/json

Body

workspaceId
integer

Unique identifier for the workspace

name
string [ 1 .. 100 ] characters

Name of the topic

color
string = 7 characters

Hex color code for the label

isSticky
boolean

Indicates if the topic is sticky when the chat is resolved

Responses

Request samples

Content type
application/json
{
  • "workspaceId": 1,
  • "name": "Topic 1",
  • "color": "#FFFFFF",
  • "isSticky": true
}

Response samples

Content type
application/json
{
  • "id": 1,
  • "name": "Topic 1",
  • "color": "#FFFFFF",
  • "isSticky": true,
  • "createdAt": "2023-10-01T12:00:00Z",
  • "updatedAt": "2023-10-01T12:00:00Z"
}

Remove topic

Authorizations:
(x-api-keyauthorization)
path Parameters
id
required
integer >= 1
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Responses

Response samples

Content type
application/json
{
  • "id": 1
}

Webhooks

Webhooks are used to receive real-time updates about changes in the API. They can be created, updated, and deleted. There are different events that can be subscribed to.

Return list of webhooks

Authorizations:
(x-api-keyauthorization)
path Parameters
workspaceId
required
integer >= 1
query Parameters
fields
string
Example: fields=field1,field2

Comma-separated list of fields to include in the response

(string or null) or (object or null) or (any or null)
Examples: s={"name": "Saysimple"} s={"name": {"$or": {"$isnull": true, "$eq": "Saysimple"}}} s={"isActive": true, "createdAt": {"$ne": "2025-10-01T17:04:32"}} s={"$or": [{"contactName": "Saysimple"}, {"status": {"$eq": "activated"}}]}

Search criteria to apply to the results.

string or Array of strings
Examples: filter=field||$condition||value filter=relation&filter=relation.field||$condition||value

Filter criteria to apply to the results. Can be a string or an array of strings.

object
Examples: or=field||$condition||value

Logical OR conditions for filtering results.

string or Array of strings
Examples: join=relation join=relation1||field1,field2 join=relation1||field11,field12,...&join=relation1.nested||field21,field22,...

Receive joined relational objects in GET result.

Array of any or string
Examples: sort=field,ASC|DESC sort=field1,ASC&sort=field2,DESC

Add sort by field and order to query result.

limit
number or null >= 0
Example: limit=10

Maximum number of items to return per page. Limited to a maximum of 100.

offset
number or null >= 0
Example: offset=0

Number of items to skip before starting to collect the result set.

page
number or null >= 0
Example: page=1

Page number to retrieve. If not provided, defaults to 1.

cache
boolean
Example: cache=true

Whether to cache the response. Defaults to true.

header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "count": 20,
  • "total": 100,
  • "page": 1,
  • "pageCount": 5
}

Create webhook

Authorizations:
(x-api-keyauthorization)
path Parameters
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Request Body schema: application/json

Body

active
required
boolean

Indicates whether the webhook is active.

url
required
string

The URL to which the webhook will send events.

eventType
required
string
Enum: "entry::received" "entry::sent" "entry::delivered" "entry::read" "entry::failed" "chat::created" "chat::assigned" "chat::unassigned" "chat::closed" "chat::reopened" "contact::created" "contact::updated" "contact::deleted"

The type of event that triggers the webhook.

object or null

Custom headers to include in the webhook request.

Responses

Request samples

Content type
application/json
{
  • "active": true,
  • "eventType": "entry::received",
  • "customHeaders": {
    }
}

Response samples

Content type
application/json
{
  • "id": 1,
  • "workspaceId": 1,
  • "active": true,
  • "eventType": "entry::received",
  • "customHeaders": {
    },
  • "createdAt": "2023-10-01T12:00:00Z",
  • "updatedAt": "2023-10-02T12:00:00Z"
}

Return webhook

Authorizations:
(x-api-keyauthorization)
path Parameters
id
required
integer >= 1
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Responses

Response samples

Content type
application/json
{
  • "id": 1,
  • "workspaceId": 1,
  • "active": true,
  • "eventType": "entry::received",
  • "customHeaders": {
    },
  • "createdAt": "2023-10-01T12:00:00Z",
  • "updatedAt": "2023-10-02T12:00:00Z"
}

Update webhook

Authorizations:
(x-api-keyauthorization)
path Parameters
id
required
integer >= 1
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Request Body schema: application/json

Body

active
boolean

Indicates whether the webhook is active.

url
string

The URL to which the webhook will send events.

eventType
string
Enum: "entry::received" "entry::sent" "entry::delivered" "entry::read" "entry::failed" "chat::created" "chat::assigned" "chat::unassigned" "chat::closed" "chat::reopened" "contact::created" "contact::updated" "contact::deleted"

The type of event that triggers the webhook.

object or null

Custom headers to include in the webhook request.

Responses

Request samples

Content type
application/json
{
  • "active": true,
  • "eventType": "entry::received",
  • "customHeaders": {
    }
}

Response samples

Content type
application/json
{
  • "id": 1,
  • "workspaceId": 1,
  • "active": true,
  • "eventType": "entry::received",
  • "customHeaders": {
    },
  • "createdAt": "2023-10-01T12:00:00Z",
  • "updatedAt": "2023-10-02T12:00:00Z"
}

Remove webhook

Authorizations:
(x-api-keyauthorization)
path Parameters
id
required
integer >= 1
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Responses

Response samples

Content type
application/json
{
  • "id": 1
}

Webhook events

Webhook events are the events that can be subscribed to in webhooks. They can be used to receive real-time updates about changes in the API. Every webhook event includes the workspace webhook signature in the headers for verification. To get the signature, please see get webhook signature request.

entry::received Webhook

This event is triggered when a new entry is received (e.g., a message from WhatsApp).

header Parameters
x-webhook-signature
string
Example: d400944a25b044ed90ef6492ea3867dc

The HMAC SHA256 signature of the request body, generated using your workspace webhook secret. This header is used to verify the authenticity of the request.

Request Body schema: application/json

Payload for entry received event

eventType
string
Value: "entry::received"

Type of the event

eventId
string <uuid>

Unique identifier for the event

originalEventDate
string <date-time>

The original date and time when the event occurred

object

Data related to the event

Responses

Request samples

Content type
application/json
{
  • "eventType": "entry::received",
  • "eventId": "d6703cc8-9e79-415d-ac03-a4dc7f6ab43c",
  • "originalEventDate": "2019-08-24T14:15:22Z",
  • "data": {
    }
}

entry::sent Webhook

This event is triggered when an outgoing message is sent. This indicates that the message has been successfully sent to the messaging platform (e.g., WhatsApp - 1 gray check mark) but does not guarantee delivery to the recipient.

header Parameters
x-webhook-signature
string
Example: d400944a25b044ed90ef6492ea3867dc

The HMAC SHA256 signature of the request body, generated using your workspace webhook secret. This header is used to verify the authenticity of the request.

Request Body schema: application/json

Payload for entry sent event

eventType
string
Value: "entry::sent"

Type of the event

eventId
string <uuid>

Unique identifier for the event

originalEventDate
string <date-time>

The original date and time when the event occurred

object

Data related to the event

Responses

Request samples

Content type
application/json
{
  • "eventType": "entry::sent",
  • "eventId": "d6703cc8-9e79-415d-ac03-a4dc7f6ab43c",
  • "originalEventDate": "2019-08-24T14:15:22Z",
  • "data": {
    }
}

entry::delivered Webhook

This event is triggered when an outgoing message is delivered. This indicates that the message has been successfully delivered to the recipient's device (e.g., WhatsApp - 2 gray check marks).

header Parameters
x-webhook-signature
string
Example: d400944a25b044ed90ef6492ea3867dc

The HMAC SHA256 signature of the request body, generated using your workspace webhook secret. This header is used to verify the authenticity of the request.

Request Body schema: application/json

Payload for entry delivered event

eventType
string
Value: "entry::delivered"

Type of the event

eventId
string <uuid>

Unique identifier for the event

originalEventDate
string <date-time>

The original date and time when the event occurred

object

Data related to the event

Responses

Request samples

Content type
application/json
{
  • "eventType": "entry::delivered",
  • "eventId": "d6703cc8-9e79-415d-ac03-a4dc7f6ab43c",
  • "originalEventDate": "2019-08-24T14:15:22Z",
  • "data": {
    }
}

entry::read Webhook

This event is triggered when an outgoing message is read by the recipient. This indicates that the recipient has opened and viewed the message (e.g., WhatsApp - 2 blue check marks).

header Parameters
x-webhook-signature
string
Example: d400944a25b044ed90ef6492ea3867dc

The HMAC SHA256 signature of the request body, generated using your workspace webhook secret. This header is used to verify the authenticity of the request.

Request Body schema: application/json

Payload for entry read event

eventType
string
Value: "entry::read"

Type of the event

eventId
string <uuid>

Unique identifier for the event

originalEventDate
string <date-time>

The original date and time when the event occurred

object

Data related to the event

Responses

Request samples

Content type
application/json
{
  • "eventType": "entry::read",
  • "eventId": "d6703cc8-9e79-415d-ac03-a4dc7f6ab43c",
  • "originalEventDate": "2019-08-24T14:15:22Z",
  • "data": {
    }
}

entry::failed Webhook

This event is triggered when an outgoing message failed to be delivered. This indicates that the service did not deliver the message to the recipient (e.g., WhatsApp - blocked).

header Parameters
x-webhook-signature
string
Example: d400944a25b044ed90ef6492ea3867dc

The HMAC SHA256 signature of the request body, generated using your workspace webhook secret. This header is used to verify the authenticity of the request.

Request Body schema: application/json

Payload for entry failed event

eventType
string
Value: "entry::failed"

Type of the event

eventId
string <uuid>

Unique identifier for the event

originalEventDate
string <date-time>

The original date and time when the event occurred

object

Data related to the event

Responses

Request samples

Content type
application/json
{
  • "eventType": "entry::failed",
  • "eventId": "d6703cc8-9e79-415d-ac03-a4dc7f6ab43c",
  • "originalEventDate": "2019-08-24T14:15:22Z",
  • "data": {
    }
}

chat::created Webhook

This event is triggered when a new chat is created. A new chat is also created when a new entry is received from a contact that does not have an existing chat.

header Parameters
x-webhook-signature
string
Example: d400944a25b044ed90ef6492ea3867dc

The HMAC SHA256 signature of the request body, generated using your workspace webhook secret. This header is used to verify the authenticity of the request.

Request Body schema: application/json

Payload for chat created event

eventType
string
Value: "chat::created"

Type of the event

eventId
string <uuid>

Unique identifier for the event

originalEventDate
string <date-time>

The original date and time when the event occurred

object

Data related to the event

Responses

Request samples

Content type
application/json
{
  • "eventType": "chat::created",
  • "eventId": "d6703cc8-9e79-415d-ac03-a4dc7f6ab43c",
  • "originalEventDate": "2019-08-24T14:15:22Z",
  • "data": {
    }
}

chat::assigned Webhook

This event is triggered when a chat is (re)assigned to an agent or team.

header Parameters
x-webhook-signature
string
Example: d400944a25b044ed90ef6492ea3867dc

The HMAC SHA256 signature of the request body, generated using your workspace webhook secret. This header is used to verify the authenticity of the request.

Request Body schema: application/json

Payload for chat assigned event

eventType
string
Value: "chat::assigned"

Type of the event

eventId
string <uuid>

Unique identifier for the event

originalEventDate
string <date-time>

The original date and time when the event occurred

object

Data related to the event

Responses

Request samples

Content type
application/json
{
  • "eventType": "chat::assigned",
  • "eventId": "d6703cc8-9e79-415d-ac03-a4dc7f6ab43c",
  • "originalEventDate": "2019-08-24T14:15:22Z",
  • "data": {
    }
}

chat::unassigned Webhook

This event is triggered when a chat is unassigned from an agent or team.

header Parameters
x-webhook-signature
string
Example: d400944a25b044ed90ef6492ea3867dc

The HMAC SHA256 signature of the request body, generated using your workspace webhook secret. This header is used to verify the authenticity of the request.

Request Body schema: application/json

Payload for chat unassigned event

eventType
string
Value: "chat::unassigned"

Type of the event

eventId
string <uuid>

Unique identifier for the event

originalEventDate
string <date-time>

The original date and time when the event occurred

object

Data related to the event

Responses

Request samples

Content type
application/json
{
  • "eventType": "chat::unassigned",
  • "eventId": "d6703cc8-9e79-415d-ac03-a4dc7f6ab43c",
  • "originalEventDate": "2019-08-24T14:15:22Z",
  • "data": {
    }
}

chat::closed Webhook

This event is triggered when a chat is resolved.

header Parameters
x-webhook-signature
string
Example: d400944a25b044ed90ef6492ea3867dc

The HMAC SHA256 signature of the request body, generated using your workspace webhook secret. This header is used to verify the authenticity of the request.

Request Body schema: application/json

Payload for chat archived event

eventType
string
Value: "chat::closed"

Type of the event

eventId
string <uuid>

Unique identifier for the event

originalEventDate
string <date-time>

The original date and time when the event occurred

object

Data related to the event

Responses

Request samples

Content type
application/json
{
  • "eventType": "chat::closed",
  • "eventId": "d6703cc8-9e79-415d-ac03-a4dc7f6ab43c",
  • "originalEventDate": "2019-08-24T14:15:22Z",
  • "data": {
    }
}

chat::reopened Webhook

This event is triggered when a chat is reopened.

header Parameters
x-webhook-signature
string
Example: d400944a25b044ed90ef6492ea3867dc

The HMAC SHA256 signature of the request body, generated using your workspace webhook secret. This header is used to verify the authenticity of the request.

Request Body schema: application/json

Payload for chat unarchived event

eventType
string
Value: "chat::reopened"

Type of the event

eventId
string <uuid>

Unique identifier for the event

originalEventDate
string <date-time>

The original date and time when the event occurred

object

Data related to the event

Responses

Request samples

Content type
application/json
{
  • "eventType": "chat::reopened",
  • "eventId": "d6703cc8-9e79-415d-ac03-a4dc7f6ab43c",
  • "originalEventDate": "2019-08-24T14:15:22Z",
  • "data": {
    }
}

contact::created Webhook

This event is triggered when a new contact is created. New incoming messages does not create a contact automatically.

header Parameters
x-webhook-signature
string
Example: d400944a25b044ed90ef6492ea3867dc

The HMAC SHA256 signature of the request body, generated using your workspace webhook secret. This header is used to verify the authenticity of the request.

Request Body schema: application/json

Payload for contact created event

eventType
string
Value: "contact::created"

Type of the event

eventId
string <uuid>

Unique identifier for the event

originalEventDate
string <date-time>

The original date and time when the event occurred

object

Data related to the event

Responses

Request samples

Content type
application/json
{
  • "eventType": "contact::created",
  • "eventId": "d6703cc8-9e79-415d-ac03-a4dc7f6ab43c",
  • "originalEventDate": "2019-08-24T14:15:22Z",
  • "data": {
    }
}

contact::updated Webhook

This event is triggered when an existing contact is updated.

header Parameters
x-webhook-signature
string
Example: d400944a25b044ed90ef6492ea3867dc

The HMAC SHA256 signature of the request body, generated using your workspace webhook secret. This header is used to verify the authenticity of the request.

Request Body schema: application/json

Payload for contact updated event

eventType
string
Value: "contact::updated"

Type of the event

eventId
string <uuid>

Unique identifier for the event

originalEventDate
string <date-time>

The original date and time when the event occurred

object

Data related to the event

Responses

Request samples

Content type
application/json
{
  • "eventType": "contact::updated",
  • "eventId": "d6703cc8-9e79-415d-ac03-a4dc7f6ab43c",
  • "originalEventDate": "2019-08-24T14:15:22Z",
  • "data": {
    }
}

contact::deleted Webhook

This event is triggered when an existing contact is deleted.

header Parameters
x-webhook-signature
string
Example: d400944a25b044ed90ef6492ea3867dc

The HMAC SHA256 signature of the request body, generated using your workspace webhook secret. This header is used to verify the authenticity of the request.

Request Body schema: application/json

Payload for contact deleted event

eventType
string
Value: "contact::deleted"

Type of the event

eventId
string <uuid>

Unique identifier for the event

originalEventDate
string <date-time>

The original date and time when the event occurred

object

Data related to the event

Responses

Request samples

Content type
application/json
{
  • "eventType": "contact::deleted",
  • "eventId": "d6703cc8-9e79-415d-ac03-a4dc7f6ab43c",
  • "originalEventDate": "2019-08-24T14:15:22Z",
  • "data": {
    }
}

Workspaces

Workspaces are the top-level entities for managing users, teams, and settings and is a scoped environment. They can be used to group users, channels and chats.

Return list of workspaces

Authorizations:
(x-api-keyauthorization)
query Parameters
fields
string
Example: fields=field1,field2

Comma-separated list of fields to include in the response

(string or null) or (object or null) or (any or null)
Examples: s={"name": "Saysimple"} s={"name": {"$or": {"$isnull": true, "$eq": "Saysimple"}}} s={"isActive": true, "createdAt": {"$ne": "2025-10-01T17:04:32"}} s={"$or": [{"contactName": "Saysimple"}, {"status": {"$eq": "activated"}}]}

Search criteria to apply to the results.

string or Array of strings
Examples: filter=field||$condition||value filter=relation&filter=relation.field||$condition||value

Filter criteria to apply to the results. Can be a string or an array of strings.

object
Examples: or=field||$condition||value

Logical OR conditions for filtering results.

string or Array of strings
Examples: join=relation join=relation1||field1,field2 join=relation1||field11,field12,...&join=relation1.nested||field21,field22,...

Receive joined relational objects in GET result.

Array of any or string
Examples: sort=field,ASC|DESC sort=field1,ASC&sort=field2,DESC

Add sort by field and order to query result.

limit
number or null >= 0
Example: limit=10

Maximum number of items to return per page. Limited to a maximum of 100.

offset
number or null >= 0
Example: offset=0

Number of items to skip before starting to collect the result set.

page
number or null >= 0
Example: page=1

Page number to retrieve. If not provided, defaults to 1.

cache
boolean
Example: cache=true

Whether to cache the response. Defaults to true.

header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "count": 20,
  • "total": 100,
  • "page": 1,
  • "pageCount": 5
}

Return one Workspace

Authorizations:
(x-api-keyauthorization)
path Parameters
id
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Responses

Response samples

Content type
application/json
{
  • "name": "My SaySimple Workspace",
  • "identifier": "my-saysimple-workspace",
  • "mainContactFirstName": "John",
  • "mainContactLastName": "Doe",
  • "mainContactEmail": "johndoe@example.com",
  • "mainContactPhoneNumber": "+31612345678",
  • "color": "#FF5733",
  • "dataRetentionMonths": 3,
  • "referencePlacement": "prepend",
  • "id": 1,
  • "country": "nl",
  • "license": {
    },
  • "licenseId": 1,
  • "countryId": 1,
  • "status": "activated",
  • "updatedAt": "2025-10-01T12:00:00Z",
  • "createdAt": "2025-10-01T12:00:00Z",
  • "modulesSettings": {
    },
  • "workspaceUsers": [
    ]
}

Reset webhook secret for all webhooks registered for this workspace

Authorizations:
(x-api-keyauthorization)
path Parameters
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Request Body schema: application/json

Body

any

Responses

Request samples

Content type
application/json
null

Response samples

Content type
application/json
{
  • "webhookSecret": "d400944a25b044ed90ef6492ea3867dc"
}

Get webhook secret for this workspace

Authorizations:
(x-api-keyauthorization)
path Parameters
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Responses

Response samples

Content type
application/json
{
  • "webhookSecret": "d400944a25b044ed90ef6492ea3867dc"
}

Update reference placement setting

Authorizations:
(x-api-keyauthorization)
path Parameters
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Request Body schema: application/json

Body

name
string [ 1 .. 100 ] characters

Name of the workspace

identifier
string [ 1 .. 255 ] characters ^[a-z0-9-]+$

Unique identifier for the workspace, used in URLs and API calls

mainContactFirstName
string [ 1 .. 40 ] characters

First name of the main contact for the workspace

mainContactLastName
string [ 1 .. 40 ] characters

Last name of the main contact for the workspace

mainContactEmail
string <email> [ 1 .. 255 ] characters

Email address of the main contact for the workspace

mainContactPhoneNumber
string [ 1 .. 255 ] characters

Phone number of the main contact for the workspace

color
string or null <= 7 characters

Primary color for the workspace, in hex format

dataRetentionMonths
integer or null

Number of months to retain data in the workspace

referencePlacement
string or null
Enum: "prepend" "append"

Reference placement chat setting for the workspace

status
string
Enum: "pending" "activated" "deactivated"

Current status of the workspace.

licenseId
integer

ID of the license associated with the workspace

countryId
integer

ID of the country associated with the workspace

object
object

Country code in ISO 3166-1 alpha-2 format

object

Settings for the workspace modules, such as API module

Responses

Request samples

Content type
application/json
{
  • "name": "My SaySimple Workspace",
  • "identifier": "my-saysimple-workspace",
  • "mainContactFirstName": "John",
  • "mainContactLastName": "Doe",
  • "mainContactEmail": "johndoe@example.com",
  • "mainContactPhoneNumber": "+31612345678",
  • "color": "#FF5733",
  • "dataRetentionMonths": 3,
  • "referencePlacement": "prepend",
  • "status": "activated",
  • "licenseId": 1,
  • "countryId": 1,
  • "license": {
    },
  • "country": {
    },
  • "modulesSettings": {
    }
}

Response samples

Content type
application/json
{
  • "name": "My SaySimple Workspace",
  • "identifier": "my-saysimple-workspace",
  • "mainContactFirstName": "John",
  • "mainContactLastName": "Doe",
  • "mainContactEmail": "johndoe@example.com",
  • "mainContactPhoneNumber": "+31612345678",
  • "color": "#FF5733",
  • "dataRetentionMonths": 3,
  • "referencePlacement": "prepend",
  • "id": 1,
  • "country": "nl",
  • "license": {
    },
  • "licenseId": 1,
  • "countryId": 1,
  • "status": "activated",
  • "updatedAt": "2025-10-01T12:00:00Z",
  • "createdAt": "2025-10-01T12:00:00Z",
  • "modulesSettings": {
    },
  • "workspaceUsers": [
    ]
}

Workspace users

Workspace users are the users that are part of a workspace and have their own role. They can be added to teams and have their own settings. A workspace users can belong to multiple workspaces and is linked to one login.

Return list of workspace users

Authorizations:
(x-api-keyauthorization)
path Parameters
workspaceId
required
integer >= 1
query Parameters
fields
string
Example: fields=field1,field2

Comma-separated list of fields to include in the response

(string or null) or (object or null) or (any or null)
Examples: s={"name": "Saysimple"} s={"name": {"$or": {"$isnull": true, "$eq": "Saysimple"}}} s={"isActive": true, "createdAt": {"$ne": "2025-10-01T17:04:32"}} s={"$or": [{"contactName": "Saysimple"}, {"status": {"$eq": "activated"}}]}

Search criteria to apply to the results.

string or Array of strings
Examples: filter=field||$condition||value filter=relation&filter=relation.field||$condition||value

Filter criteria to apply to the results. Can be a string or an array of strings.

object
Examples: or=field||$condition||value

Logical OR conditions for filtering results.

string or Array of strings
Examples: join=relation join=relation1||field1,field2 join=relation1||field11,field12,...&join=relation1.nested||field21,field22,...

Receive joined relational objects in GET result.

Array of any or string
Examples: sort=field,ASC|DESC sort=field1,ASC&sort=field2,DESC

Add sort by field and order to query result.

limit
number or null >= 0
Example: limit=10

Maximum number of items to return per page. Limited to a maximum of 100.

offset
number or null >= 0
Example: offset=0

Number of items to skip before starting to collect the result set.

page
number or null >= 0
Example: page=1

Page number to retrieve. If not provided, defaults to 1.

cache
boolean
Example: cache=true

Whether to cache the response. Defaults to true.

header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "count": 20,
  • "total": 100,
  • "page": 1,
  • "pageCount": 5
}

Create user

Authorizations:
(x-api-keyauthorization)
path Parameters
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Request Body schema: application/json

Body

firstName
required
string [ 1 .. 40 ] characters

First name of the user

lastName
required
string [ 1 .. 40 ] characters

Last name of the user

role
required
string
Enum: "admin" "manager" "agent" "api" "dummy" "apiUser"

Role of the user in the workspace

language
string = 2 characters
Default: "en"

Language code in ISO 3166-1 alpha-2 format

object

Profile picture of the user

email
required
string <email> [ 1 .. 50 ] characters

Email address of the user

teamIds
Array of integers

Array of team IDs the user belongs to

Responses

Request samples

Content type
application/json
{
  • "firstName": "John",
  • "lastName": "Doe",
  • "role": "agent",
  • "language": "nl",
  • "profilePic": {
    },
  • "email": "user@example.com",
  • "teamIds": [
    ]
}

Response samples

Content type
application/json
{
  • "id": 1,
  • "firstName": "John",
  • "lastName": "Doe",
  • "status": "activated",
  • "role": "agent",
  • "language": "nl",
  • "profilePic": {
    },
  • "createdAt": "2023-01-01T00:00:00Z",
  • "updatedAt": "2023-01-02T00:00:00Z",
  • "email": "user@example.com",
  • "userLoginId": 1,
  • "teams": [
    ]
}

Return workspace user

Authorizations:
(x-api-keyauthorization)
path Parameters
id
required
integer >= 1
workspaceId
required
integer >= 1
query Parameters
fields
string
Example: fields=field1,field2

Comma-separated list of fields to include in the response

(string or null) or (object or null) or (any or null)
Examples: s={"name": "Saysimple"} s={"name": {"$or": {"$isnull": true, "$eq": "Saysimple"}}} s={"isActive": true, "createdAt": {"$ne": "2025-10-01T17:04:32"}} s={"$or": [{"contactName": "Saysimple"}, {"status": {"$eq": "activated"}}]}

Search criteria to apply to the results.

string or Array of strings
Examples: filter=field||$condition||value filter=relation&filter=relation.field||$condition||value

Filter criteria to apply to the results. Can be a string or an array of strings.

object
Examples: or=field||$condition||value

Logical OR conditions for filtering results.

string or Array of strings
Examples: join=relation join=relation1||field1,field2 join=relation1||field11,field12,...&join=relation1.nested||field21,field22,...

Receive joined relational objects in GET result.

Array of any or string
Examples: sort=field,ASC|DESC sort=field1,ASC&sort=field2,DESC

Add sort by field and order to query result.

limit
number or null >= 0
Example: limit=10

Maximum number of items to return per page. Limited to a maximum of 100.

offset
number or null >= 0
Example: offset=0

Number of items to skip before starting to collect the result set.

page
number or null >= 0
Example: page=1

Page number to retrieve. If not provided, defaults to 1.

cache
boolean
Example: cache=true

Whether to cache the response. Defaults to true.

header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Responses

Response samples

Content type
application/json
{
  • "id": 1,
  • "firstName": "John",
  • "lastName": "Doe",
  • "status": "activated",
  • "role": "agent",
  • "language": "nl",
  • "profilePic": {
    },
  • "createdAt": "2023-01-01T00:00:00Z",
  • "updatedAt": "2023-01-02T00:00:00Z",
  • "email": "user@example.com",
  • "userLoginId": 1,
  • "teams": [
    ]
}

Update workspace user

Authorizations:
(x-api-keyauthorization)
path Parameters
id
required
integer >= 1
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Request Body schema: application/json

Body

firstName
string [ 1 .. 40 ] characters

First name of the user

lastName
string [ 1 .. 40 ] characters

Last name of the user

status
string
Default: "pending"
Enum: "pending" "activated" "deactivated"

Status of the user in the workspace

role
string
Enum: "admin" "manager" "agent" "api" "dummy" "apiUser"

Role of the user in the workspace

language
string = 2 characters
Default: "en"

Language code in ISO 3166-1 alpha-2 format

profilePic
string or null <null>

Profile picture of the user, can be null if not updated

Responses

Request samples

Content type
application/json
{
  • "firstName": "John",
  • "lastName": "Doe",
  • "status": "activated",
  • "role": "agent",
  • "language": "nl",
  • "profilePic": "string"
}

Response samples

Content type
application/json
{
  • "id": 1,
  • "firstName": "John",
  • "lastName": "Doe",
  • "status": "activated",
  • "role": "agent",
  • "language": "nl",
  • "profilePic": {
    },
  • "createdAt": "2023-01-01T00:00:00Z",
  • "updatedAt": "2023-01-02T00:00:00Z",
  • "email": "user@example.com",
  • "userLoginId": 1,
  • "teams": [
    ]
}

Add user to teams

Authorizations:
(x-api-keyauthorization)
path Parameters
id
required
integer >= 1
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Request Body schema: application/json

Body

teamIds
required
Array of integers

Array of team IDs to add or remove the user from

Responses

Request samples

Content type
application/json
{
  • "teamIds": [
    ]
}

Response samples

Content type
application/json
{
  • "id": 1,
  • "firstName": "John",
  • "lastName": "Doe",
  • "status": "activated",
  • "role": "agent",
  • "language": "nl",
  • "profilePic": {
    },
  • "createdAt": "2023-01-01T00:00:00Z",
  • "updatedAt": "2023-01-02T00:00:00Z",
  • "email": "user@example.com",
  • "userLoginId": 1,
  • "teams": [
    ]
}

Remove user from teams

Authorizations:
(x-api-keyauthorization)
path Parameters
id
required
integer >= 1
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Request Body schema: application/json

Body

teamIds
required
Array of integers

Array of team IDs to add or remove the user from

Responses

Request samples

Content type
application/json
{
  • "teamIds": [
    ]
}

Response samples

Content type
application/json
{
  • "id": 1,
  • "firstName": "John",
  • "lastName": "Doe",
  • "status": "activated",
  • "role": "agent",
  • "language": "nl",
  • "profilePic": {
    },
  • "createdAt": "2023-01-01T00:00:00Z",
  • "updatedAt": "2023-01-02T00:00:00Z",
  • "email": "user@example.com",
  • "userLoginId": 1,
  • "teams": [
    ]
}

channels

Return list of my channels

Authorizations:
(x-api-keyauthorization)
path Parameters
workspaceId
required
integer >= 1
query Parameters
fields
string
Example: fields=field1,field2

Comma-separated list of fields to include in the response

(string or null) or (object or null) or (any or null)
Examples: s={"name": "Saysimple"} s={"name": {"$or": {"$isnull": true, "$eq": "Saysimple"}}} s={"isActive": true, "createdAt": {"$ne": "2025-10-01T17:04:32"}} s={"$or": [{"contactName": "Saysimple"}, {"status": {"$eq": "activated"}}]}

Search criteria to apply to the results.

string or Array of strings
Examples: filter=field||$condition||value filter=relation&filter=relation.field||$condition||value

Filter criteria to apply to the results. Can be a string or an array of strings.

object
Examples: or=field||$condition||value

Logical OR conditions for filtering results.

string or Array of strings
Examples: join=relation join=relation1||field1,field2 join=relation1||field11,field12,...&join=relation1.nested||field21,field22,...

Receive joined relational objects in GET result.

Array of any or string
Examples: sort=field,ASC|DESC sort=field1,ASC&sort=field2,DESC

Add sort by field and order to query result.

limit
number or null >= 0
Example: limit=10

Maximum number of items to return per page. Limited to a maximum of 100.

offset
number or null >= 0
Example: offset=0

Number of items to skip before starting to collect the result set.

page
number or null >= 0
Example: page=1

Page number to retrieve. If not provided, defaults to 1.

cache
boolean
Example: cache=true

Whether to cache the response. Defaults to true.

header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "count": 20,
  • "total": 100,
  • "page": 1,
  • "pageCount": 5
}

chargebee

Handle Chargebee webhook

Authorizations:
(x-api-keyauthorization)
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Request Body schema: application/json

Body

api_version
string
object
event_type
string
Enum: "pending_invoice_created" "subscription_created" "subscription_changed" "subscription_cancelled" "subscription_reactivated" "subscription_paused" "subscription_resumed" "invoice_generated"
id
string
object
string
Value: "event"
occurred_at
number
source
string
user
string
webhook_status
string

Responses

Request samples

Content type
application/json
{
  • "api_version": "string",
  • "content": {
    },
  • "event_type": "pending_invoice_created",
  • "id": "string",
  • "object": "event",
  • "occurred_at": 0,
  • "source": "string",
  • "user": "string",
  • "webhook_status": "string"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "string",
  • "workspaceId": 0
}

chats

Return counters for my channels

Authorizations:
(x-api-keyauthorization)
path Parameters
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Responses

Response samples

Content type
application/json
{
  • "channels": {
    },
  • "personal": {
    }
}

files

Upload workspace user profile photo

Authorizations:
(x-api-keyauthorization)
path Parameters
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Responses

Response samples

Content type
application/json
{}

flowBuilder

Generate flow builder signature

Authorizations:
(x-api-keyauthorization)
path Parameters
workspaceId
required
integer >= 1
query Parameters
fields
string
Example: fields=field1,field2

Comma-separated list of fields to include in the response

(string or null) or (object or null) or (any or null)
Examples: s={"name": "Saysimple"} s={"name": {"$or": {"$isnull": true, "$eq": "Saysimple"}}} s={"isActive": true, "createdAt": {"$ne": "2025-10-01T17:04:32"}} s={"$or": [{"contactName": "Saysimple"}, {"status": {"$eq": "activated"}}]}

Search criteria to apply to the results.

string or Array of strings
Examples: filter=field||$condition||value filter=relation&filter=relation.field||$condition||value

Filter criteria to apply to the results. Can be a string or an array of strings.

object
Examples: or=field||$condition||value

Logical OR conditions for filtering results.

string or Array of strings
Examples: join=relation join=relation1||field1,field2 join=relation1||field11,field12,...&join=relation1.nested||field21,field22,...

Receive joined relational objects in GET result.

Array of any or string
Examples: sort=field,ASC|DESC sort=field1,ASC&sort=field2,DESC

Add sort by field and order to query result.

limit
number or null >= 0
Example: limit=10

Maximum number of items to return per page. Limited to a maximum of 100.

offset
number or null >= 0
Example: offset=0

Number of items to skip before starting to collect the result set.

page
number or null >= 0
Example: page=1

Page number to retrieve. If not provided, defaults to 1.

cache
boolean
Example: cache=true

Whether to cache the response. Defaults to true.

header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Responses

Response samples

Content type
application/json
{
  • "signature": "string"
}

Report usage of flow builder

Authorizations:
(x-api-keyauthorization)
path Parameters
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Request Body schema: application/json

Body

usedFlows
required
integer >= 0
sentAt
required
string

Responses

Request samples

Content type
application/json
{
  • "usedFlows": 0,
  • "sentAt": "string"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "string"
}

subscriptions

subscriptions_upgradeSubscription

Authorizations:
(x-api-keyauthorization)
path Parameters
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Request Body schema: application/json

Body

newPlan
required
string
Enum: "start" "grow" "scale"

The new plan to upgrade to.

Responses

Request samples

Content type
application/json
{
  • "newPlan": "scale"
}

Response samples

Content type
application/json
{
  • "id": "USAEXzV2BBbfU8A",
  • "customerId": "11DBaRV0RfrUxDM0",
  • "status": "active",
  • "billingPeriod": "monthly",
  • "plan": "grow",
  • "currentTermStartDate": "2024-01-01T00:00:00Z",
  • "currentTermEndDate": "2024-02-01T00:00:00Z",
  • "nextBillingDate": "2024-02-01T00:00:00Z",
  • "nextRenewalEstimate": 10000,
  • "contractTermEndDate": "2025-01-01T00:00:00Z",
  • "contractTermStartDate": "2024-01-01T00:00:00Z",
  • "contractTermCancellationCutoffPeriod": 30,
  • "contractTermEndAction": "renew",
  • "items": [
    ]
}

Return workspace subscription

Authorizations:
(x-api-keyauthorization)
path Parameters
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Request Body schema: application/json

Body

productId
required
string
Enum: "users" "data-retention" "whatsapp-channels" "flow-builder-flows" "api-pdk-webhooks" "contacts-500" "contacts-post-paid" "call-deflection"

The ID of the product.

quantity
required
integer

The quantity of the product.

Responses

Request samples

Content type
application/json
{
  • "productId": "flow-builder-flows",
  • "quantity": 1
}

Response samples

Content type
application/json
{
  • "name": "My SaySimple Workspace",
  • "identifier": "my-saysimple-workspace",
  • "mainContactFirstName": "John",
  • "mainContactLastName": "Doe",
  • "mainContactEmail": "johndoe@example.com",
  • "mainContactPhoneNumber": "+31612345678",
  • "color": "#FF5733",
  • "dataRetentionMonths": 3,
  • "referencePlacement": "prepend",
  • "id": 1,
  • "country": "nl",
  • "license": {
    },
  • "licenseId": 1,
  • "countryId": 1,
  • "status": "activated",
  • "updatedAt": "2025-10-01T12:00:00Z",
  • "createdAt": "2025-10-01T12:00:00Z",
  • "modulesSettings": {
    },
  • "workspaceUsers": [
    ]
}

subscriptions_getProducts

Authorizations:
(x-api-keyauthorization)
path Parameters
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Responses

Response samples

Content type
application/json
{
  • "name": "Scale Plan",
  • "description": "Scale Plan description",
  • "productId": "scale",
  • "price": 10000,
  • "currencyCode": "eur",
  • "period": 3,
  • "periodUnit": "month",
  • "addons": [
    ],
  • "entitlements": [
    ]
}

Return available plans for workspace

Authorizations:
(x-api-keyauthorization)
path Parameters
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

subscriptions_getBillingDetails

Authorizations:
(x-api-keyauthorization)
path Parameters
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Responses

Response samples

Content type
application/json
{
  • "billingAddress": {
    },
  • "defaultPaymentSource": {
    }
}

Return customer portal url for subscription management

Authorizations:
(x-api-keyauthorization)
path Parameters
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Responses

Response samples

Content type
application/json
{}

Return workspace subscription

Authorizations:
(x-api-keyauthorization)
path Parameters
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Responses

Response samples

Content type
application/json
{
  • "id": "USAEXzV2BBbfU8A",
  • "customerId": "11DBaRV0RfrUxDM0",
  • "status": "active",
  • "billingPeriod": "monthly",
  • "plan": "grow",
  • "currentTermStartDate": "2024-01-01T00:00:00Z",
  • "currentTermEndDate": "2024-02-01T00:00:00Z",
  • "nextBillingDate": "2024-02-01T00:00:00Z",
  • "nextRenewalEstimate": 10000,
  • "contractTermEndDate": "2025-01-01T00:00:00Z",
  • "contractTermStartDate": "2024-01-01T00:00:00Z",
  • "contractTermCancellationCutoffPeriod": 30,
  • "contractTermEndAction": "renew",
  • "items": [
    ]
}

Cancel workspace subscription

Authorizations:
(x-api-keyauthorization)
path Parameters
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Request Body schema: application/json

Body

any

Responses

Request samples

Content type
application/json
null

Response samples

Content type
application/json
{
  • "id": "USAEXzV2BBbfU8A",
  • "customerId": "11DBaRV0RfrUxDM0",
  • "status": "active",
  • "billingPeriod": "monthly",
  • "plan": "grow",
  • "currentTermStartDate": "2024-01-01T00:00:00Z",
  • "currentTermEndDate": "2024-02-01T00:00:00Z",
  • "nextBillingDate": "2024-02-01T00:00:00Z",
  • "nextRenewalEstimate": 10000,
  • "contractTermEndDate": "2025-01-01T00:00:00Z",
  • "contractTermStartDate": "2024-01-01T00:00:00Z",
  • "contractTermCancellationCutoffPeriod": 30,
  • "contractTermEndAction": "renew",
  • "items": [
    ]
}

Download an invoice

Authorizations:
(x-api-keyauthorization)
path Parameters
workspaceId
required
integer >= 1
invoiceId
required
string
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Responses

Response samples

Content type
application/json
null

subscriptions_getInvoices

Authorizations:
(x-api-keyauthorization)
path Parameters
workspaceId
required
integer >= 1
query Parameters
pageSize
integer or null
Default: 20
cursorNext
string
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "cursor": {
    }
}

teams

Return list of my teams

Authorizations:
(x-api-keyauthorization)
path Parameters
workspaceId
required
integer >= 1
query Parameters
fields
string
Example: fields=field1,field2

Comma-separated list of fields to include in the response

(string or null) or (object or null) or (any or null)
Examples: s={"name": "Saysimple"} s={"name": {"$or": {"$isnull": true, "$eq": "Saysimple"}}} s={"isActive": true, "createdAt": {"$ne": "2025-10-01T17:04:32"}} s={"$or": [{"contactName": "Saysimple"}, {"status": {"$eq": "activated"}}]}

Search criteria to apply to the results.

string or Array of strings
Examples: filter=field||$condition||value filter=relation&filter=relation.field||$condition||value

Filter criteria to apply to the results. Can be a string or an array of strings.

object
Examples: or=field||$condition||value

Logical OR conditions for filtering results.

string or Array of strings
Examples: join=relation join=relation1||field1,field2 join=relation1||field11,field12,...&join=relation1.nested||field21,field22,...

Receive joined relational objects in GET result.

Array of any or string
Examples: sort=field,ASC|DESC sort=field1,ASC&sort=field2,DESC

Add sort by field and order to query result.

limit
number or null >= 0
Example: limit=10

Maximum number of items to return per page. Limited to a maximum of 100.

offset
number or null >= 0
Example: offset=0

Number of items to skip before starting to collect the result set.

page
number or null >= 0
Example: page=1

Page number to retrieve. If not provided, defaults to 1.

cache
boolean
Example: cache=true

Whether to cache the response. Defaults to true.

header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "count": 20,
  • "total": 100,
  • "page": 1,
  • "pageCount": 5
}

workspaceUsers

Return current workspace user

Authorizations:
(x-api-keyauthorization)
path Parameters
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Responses

Response samples

Content type
application/json
{
  • "id": 1,
  • "firstName": "John",
  • "lastName": "Doe",
  • "status": "activated",
  • "language": "nl",
  • "profilePic": {
    },
  • "createdAt": "2023-01-01T00:00:00Z",
  • "updatedAt": "2023-01-02T00:00:00Z",
  • "email": "user@example.com",
  • "userLoginId": 1,
  • "teams": [
    ],
  • "role": {
    },
  • "impersonatedBy": 5,
  • "userLogin": {
    },
  • "userTeams": [
    ],
  • "workspace": null
}

Update current workspace user

Authorizations:
(x-api-keyauthorization)
path Parameters
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Request Body schema: application/json

Body

firstName
string [ 1 .. 40 ] characters

First name of the user

lastName
string [ 1 .. 40 ] characters

Last name of the user

status
string
Default: "pending"
Enum: "pending" "activated" "deactivated"

Status of the user in the workspace

role
string
Enum: "admin" "manager" "agent" "api" "dummy" "apiUser"

Role of the user in the workspace

language
string = 2 characters
Default: "en"

Language code in ISO 3166-1 alpha-2 format

profilePic
string or null <null>

Profile picture of the user, can be null if not updated

Responses

Request samples

Content type
application/json
{
  • "firstName": "John",
  • "lastName": "Doe",
  • "status": "activated",
  • "role": "agent",
  • "language": "nl",
  • "profilePic": "string"
}

Response samples

Content type
application/json
{
  • "id": 1,
  • "firstName": "John",
  • "lastName": "Doe",
  • "status": "activated",
  • "role": "agent",
  • "language": "nl",
  • "profilePic": {
    },
  • "createdAt": "2023-01-01T00:00:00Z",
  • "updatedAt": "2023-01-02T00:00:00Z",
  • "email": "user@example.com",
  • "userLoginId": 1,
  • "teams": [
    ]
}

Return current workspace user's inbox settings

Authorizations:
(x-api-keyauthorization)
path Parameters
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Responses

Response samples

Content type
application/json
{
  • "generalInboxVisible": true,
  • "generalInboxVisibleCategories": [
    ],
  • "myInboxVisible": true,
  • "myInboxVisibleCategories": [
    ],
  • "teamsInboxVisible": true,
  • "teamsInboxVisibleIds": [
    ],
  • "topicsInboxVisible": true,
  • "topicsInboxVisibleIds": [
    ],
  • "chatCategoryMapping": {
    }
}

Update current workspace user's inbox settings

Authorizations:
(x-api-keyauthorization)
path Parameters
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Request Body schema: application/json

Body

generalInboxVisible
boolean

Whether the general inbox is visible to the user

generalInboxVisibleCategories
Array of strings
Items Enum: "all" "new" "assigned" "favorites" "resolved" "spam"

Categories visible in the general inbox

myInboxVisible
boolean

Whether the personal inbox is visible to the user

myInboxVisibleCategories
Array of strings
Items Enum: "my_inbox" "mentioned" "my_favorites" "snoozed"

Categories visible in the personal inbox

teamsInboxVisible
boolean

Whether the teams inbox is visible to the user

teamsInboxVisibleIds
Array of integers

Array of team IDs whose inboxes are visible to the user

topicsInboxVisible
boolean

Whether the topics inbox is visible to the user

topicsInboxVisibleIds
Array of integers

Array of topic IDs whose inboxes are visible to the user

Responses

Request samples

Content type
application/json
{
  • "generalInboxVisible": true,
  • "generalInboxVisibleCategories": [
    ],
  • "myInboxVisible": true,
  • "myInboxVisibleCategories": [
    ],
  • "teamsInboxVisible": true,
  • "teamsInboxVisibleIds": [
    ],
  • "topicsInboxVisible": true,
  • "topicsInboxVisibleIds": [
    ]
}

Response samples

Content type
application/json
{
  • "generalInboxVisible": true,
  • "generalInboxVisibleCategories": [
    ],
  • "myInboxVisible": true,
  • "myInboxVisibleCategories": [
    ],
  • "teamsInboxVisible": true,
  • "teamsInboxVisibleIds": [
    ],
  • "topicsInboxVisible": true,
  • "topicsInboxVisibleIds": [
    ],
  • "chatCategoryMapping": {
    }
}

Change current workspace user's password

Authorizations:
(x-api-keyauthorization)
path Parameters
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Request Body schema: application/json

Body

currentPassword
required
string

Current password of the user

newPassword
required
string(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%&*()...

New password for the user, must meet complexity requirements

Responses

Request samples

Content type
application/json
{
  • "currentPassword": "currentPassword123",
  • "newPassword": "NewPassword123!"
}

Response samples

Content type
application/json
{
  • "success": true
}

Return current workspace user's notification settings

Authorizations:
(x-api-keyauthorization)
path Parameters
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Responses

Response samples

Content type
application/json
{
  • "conversation:new": {
    },
  • "conversation:assigned": {
    },
  • "newMessage:assignedConversation": {
    },
  • "newMessage:unassignedConversation": {
    }
}

Update current workspace user's notifications settings

Authorizations:
(x-api-keyauthorization)
path Parameters
workspaceId
required
integer >= 1
header Parameters
x-api-key
string
authorization
string
x-websocket-id
string

WebSocket ID for real-time updates. Mostly unused.

Request Body schema: application/json

Body

object
object
object
object

Responses

Request samples

Content type
application/json
{
  • "conversation:new": {
    },
  • "conversation:assigned": {
    },
  • "newMessage:assignedConversation": {
    },
  • "newMessage:unassignedConversation": {
    }
}

Response samples

Content type
application/json
{
  • "conversation:new": {
    },
  • "conversation:assigned": {
    },
  • "newMessage:assignedConversation": {
    },
  • "newMessage:unassignedConversation": {
    }
}