Download OpenAPI specification:
Saysimple API documentation
Accounts are the top-level entities for channels, like WhatsApp Business Account. They can be used to group channels and manage settings.
| workspaceId required | integer >= 1 |
| 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. |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
{- "data": [
- {
- "id": 1,
- "type": "waba",
- "metadata": {
- "wabaId": "112047008171337",
- "accessToken": "EAAONJ4cl..."
}, - "createdAt": "2023-10-01T12:00:00Z"
}
], - "count": 20,
- "total": 100,
- "page": 1,
- "pageCount": 5
}| workspaceId required | integer >= 1 |
| accountId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
{- "h": "abc123xyz"
}API keys are used to authenticate requests to the API. They can be created and managed in the API keys section of the dashboard.
| workspaceId required | integer >= 1 |
| 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. |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
{- "data": [
- {
- "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"
}
], - "count": 20,
- "total": 100,
- "page": 1,
- "pageCount": 5
}| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
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. |
{- "name": "My API Key",
- "description": "This key is used for accessing the Saysimple API.",
- "expiresAt": "2024-12-31T23:59:59Z",
- "active": true
}{- "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"
}| id required | integer >= 1 |
| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
{- "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"
}| id required | integer >= 1 |
| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
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. |
{- "name": "My API Key",
- "description": "This key is used for accessing the Saysimple API.",
- "active": true
}{- "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"
}| id required | integer >= 1 |
| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
{- "id": 1
}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.
| workspaceId required | integer >= 1 |
| 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. |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
{- "data": [
- {
- "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": {
- "id": 1,
- "type": "waba",
- "metadata": {
- "wabaId": "112047008171337",
- "accessToken": "EAAONJ4cl..."
}, - "createdAt": "2023-10-01T12:00:00Z"
}, - "handle": "108721008524666",
- "status": "activated",
- "metadata": {
- "phoneNumber": "31612345678",
- "phoneNumberId": "108721008524666"
}, - "teams": [
- null
]
}
], - "count": 20,
- "total": 100,
- "page": 1,
- "pageCount": 5
}| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
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 |
{- "name": "My WhatsApp Channel",
- "color": "#FFFFFF",
- "stickyUserAssignments": true,
- "autoSignature": "none",
- "platform": "whatsapp",
- "accountId": 1,
- "handle": "108721008524666",
- "status": "activated",
- "metadata": {
- "phoneNumber": "31612345678",
- "phoneNumberId": "108721008524666"
}
}{- "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": {
- "id": 1,
- "type": "waba",
- "metadata": {
- "wabaId": "112047008171337",
- "accessToken": "EAAONJ4cl..."
}, - "createdAt": "2023-10-01T12:00:00Z"
}, - "handle": "108721008524666",
- "status": "activated",
- "metadata": {
- "phoneNumber": "31612345678",
- "phoneNumberId": "108721008524666"
}, - "teams": [
- null
]
}| id required | integer >= 1 |
| workspaceId required | integer >= 1 |
| 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. |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
{- "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": {
- "id": 1,
- "type": "waba",
- "metadata": {
- "wabaId": "112047008171337",
- "accessToken": "EAAONJ4cl..."
}, - "createdAt": "2023-10-01T12:00:00Z"
}, - "handle": "108721008524666",
- "status": "activated",
- "metadata": {
- "phoneNumber": "31612345678",
- "phoneNumberId": "108721008524666"
}, - "teams": [
- null
]
}| id required | integer >= 1 |
| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
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 |
{- "name": "My WhatsApp Channel",
- "color": "#FFFFFF",
- "stickyUserAssignments": true,
- "autoSignature": "none"
}{- "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": {
- "id": 1,
- "type": "waba",
- "metadata": {
- "wabaId": "112047008171337",
- "accessToken": "EAAONJ4cl..."
}, - "createdAt": "2023-10-01T12:00:00Z"
}, - "handle": "108721008524666",
- "status": "activated",
- "metadata": {
- "phoneNumber": "31612345678",
- "phoneNumberId": "108721008524666"
}, - "teams": [
- null
]
}| id required | integer >= 1 |
| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
Body
| teamIds required | Array of integers Array of team IDs to add or remove from the channel |
{- "teamIds": [
- 1,
- 2,
- 3
]
}{- "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": {
- "id": 1,
- "type": "waba",
- "metadata": {
- "wabaId": "112047008171337",
- "accessToken": "EAAONJ4cl..."
}, - "createdAt": "2023-10-01T12:00:00Z"
}, - "handle": "108721008524666",
- "status": "activated",
- "metadata": {
- "phoneNumber": "31612345678",
- "phoneNumberId": "108721008524666"
}, - "teams": [
- null
]
}| id required | integer >= 1 |
| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
Body
| teamIds required | Array of integers Array of team IDs to add or remove from the channel |
{- "teamIds": [
- 1,
- 2,
- 3
]
}{- "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": {
- "id": 1,
- "type": "waba",
- "metadata": {
- "wabaId": "112047008171337",
- "accessToken": "EAAONJ4cl..."
}, - "createdAt": "2023-10-01T12:00:00Z"
}, - "handle": "108721008524666",
- "status": "activated",
- "metadata": {
- "phoneNumber": "31612345678",
- "phoneNumberId": "108721008524666"
}, - "teams": [
- null
]
}| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
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 |
{- "wabaId": "123456789012345",
- "phoneNumberId": "108721008524666",
- "code": "123456"
}{- "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": {
- "id": 1,
- "type": "waba",
- "metadata": {
- "wabaId": "112047008171337",
- "accessToken": "EAAONJ4cl..."
}, - "createdAt": "2023-10-01T12:00:00Z"
}, - "handle": "108721008524666",
- "status": "activated",
- "metadata": {
- "phoneNumber": "31612345678",
- "phoneNumberId": "108721008524666"
}, - "teams": [
- null
]
}Chats are the conversations between users and agents. They can be linked to channels and have their own settings.
| workspaceId required | integer >= 1 |
| 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. |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
{- "data": [
- {
- "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": {
- "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": {
- "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
}, - "workspaceUser": null,
- "parentEntry": null,
- "reactions": [
- null
], - "workspaceUserId": 1
}, - "topics": [
- {
- "id": 1,
- "name": "Topic 1",
- "color": "#FFFFFF",
- "isSticky": true,
- "createdAt": "2023-10-01T12:00:00Z",
- "updatedAt": "2023-10-01T12:00:00Z"
}
], - "assignedTeam": null,
- "assignedWorkspaceUser": {
- "id": 1,
- "firstName": "John",
- "lastName": "Doe",
- "status": "activated",
- "role": "agent",
- "language": "nl",
- "profilePic": {
- "filePath": "saysimple/messages/202503/jpeg",
- "fileName": "f8090c09-5d1f-4aab-bf3b-f8b99ec22cc8.jpeg"
}, - "createdAt": "2023-01-01T00:00:00Z",
- "updatedAt": "2023-01-02T00:00:00Z",
- "email": "user@example.com",
- "userLoginId": 1,
- "teams": [
- {
- "id": 1,
- "name": "Support Team",
- "color": "#FF5733",
- "createdAt": "2023-10-01T12:00:00Z"
}
]
}, - "contact": {
- "id": 1,
- "firstName": "John",
- "lastName": "Doe",
- "emailAddresses": [
- "email1@example.com",
- "email2@example.com"
], - "phoneNumbers": [
- {
- "type": "mobile",
- "number": "+31612345678"
}, - {
- "type": "work",
- "number": "+31201234567"
}
], - "country": "nl",
- "reference": "12345",
- "isFavorite": true,
- "isBlocked": false,
- "createdAt": "2023-10-01T12:00:00Z",
- "labels": [
- {
- "id": 1,
- "name": "Label 1",
- "color": "#FFFFFF",
- "createdAt": "2023-10-01T12:00:00Z",
- "updatedAt": "2023-10-02T12:00:00Z"
}
], - "customFields": [
- {
- "id": 1,
- "name": "Communication preference",
- "identifierPrefix": "contact.custom",
- "identifier": "communication_preference",
- "fieldType": "dropdown",
- "required": true,
- "options": [
- {
- "title": "WhatsApp",
- "value": "whatsapp"
}, - {
- "title": "Email",
- "value": "email"
}, - {
- "title": "SMS",
- "value": "sms"
}
], - "icon": "fas fa-envelope",
- "placeholder": "Select communication preference",
- "value": "whatsapp"
}
]
}
}
], - "cursor": {
- "after": "dGltZXN0YW1wOjE3NTU1MDc4NjgwMDAsaWQ6MTY5OQ",
- "before": "dGltZXN0YW1wOjE3NTU1MDc4NjgwMDAsaWQ6MTY5OQ"
}
}| id required | integer >= 1 |
| workspaceId required | integer >= 1 |
| 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. |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
{- "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": {
- "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": {
- "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
}, - "workspaceUser": null,
- "parentEntry": null,
- "reactions": [
- null
], - "workspaceUserId": 1
}, - "topics": [
- {
- "id": 1,
- "name": "Topic 1",
- "color": "#FFFFFF",
- "isSticky": true,
- "createdAt": "2023-10-01T12:00:00Z",
- "updatedAt": "2023-10-01T12:00:00Z"
}
], - "assignedTeam": null,
- "assignedWorkspaceUser": {
- "id": 1,
- "firstName": "John",
- "lastName": "Doe",
- "status": "activated",
- "role": "agent",
- "language": "nl",
- "profilePic": {
- "filePath": "saysimple/messages/202503/jpeg",
- "fileName": "f8090c09-5d1f-4aab-bf3b-f8b99ec22cc8.jpeg"
}, - "createdAt": "2023-01-01T00:00:00Z",
- "updatedAt": "2023-01-02T00:00:00Z",
- "email": "user@example.com",
- "userLoginId": 1,
- "teams": [
- {
- "id": 1,
- "name": "Support Team",
- "color": "#FF5733",
- "createdAt": "2023-10-01T12:00:00Z"
}
]
}, - "contact": {
- "id": 1,
- "firstName": "John",
- "lastName": "Doe",
- "emailAddresses": [
- "email1@example.com",
- "email2@example.com"
], - "phoneNumbers": [
- {
- "type": "mobile",
- "number": "+31612345678"
}, - {
- "type": "work",
- "number": "+31201234567"
}
], - "country": "nl",
- "reference": "12345",
- "isFavorite": true,
- "isBlocked": false,
- "createdAt": "2023-10-01T12:00:00Z",
- "labels": [
- {
- "id": 1,
- "name": "Label 1",
- "color": "#FFFFFF",
- "createdAt": "2023-10-01T12:00:00Z",
- "updatedAt": "2023-10-02T12:00:00Z"
}
], - "customFields": [
- {
- "id": 1,
- "name": "Communication preference",
- "identifierPrefix": "contact.custom",
- "identifier": "communication_preference",
- "fieldType": "dropdown",
- "required": true,
- "options": [
- {
- "title": "WhatsApp",
- "value": "whatsapp"
}, - {
- "title": "Email",
- "value": "email"
}, - {
- "title": "SMS",
- "value": "sms"
}
], - "icon": "fas fa-envelope",
- "placeholder": "Select communication preference",
- "value": "whatsapp"
}
]
}
}| workspaceId required | integer >= 1 |
| id required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
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 |
{- "status": "open",
- "isSpam": false,
- "snoozedUntil": "2025-10-01T00:00:00Z",
- "assignedWorkspaceUserId": 1,
- "assignedTeamId": 1,
- "subject": "Support request",
- "contactId": 1
}{- "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": {
- "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": {
- "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
}, - "workspaceUser": null,
- "parentEntry": null,
- "reactions": [
- null
], - "workspaceUserId": 1
}, - "topics": [
- {
- "id": 1,
- "name": "Topic 1",
- "color": "#FFFFFF",
- "isSticky": true,
- "createdAt": "2023-10-01T12:00:00Z",
- "updatedAt": "2023-10-01T12:00:00Z"
}
], - "assignedTeam": null,
- "assignedWorkspaceUser": {
- "id": 1,
- "firstName": "John",
- "lastName": "Doe",
- "status": "activated",
- "role": "agent",
- "language": "nl",
- "profilePic": {
- "filePath": "saysimple/messages/202503/jpeg",
- "fileName": "f8090c09-5d1f-4aab-bf3b-f8b99ec22cc8.jpeg"
}, - "createdAt": "2023-01-01T00:00:00Z",
- "updatedAt": "2023-01-02T00:00:00Z",
- "email": "user@example.com",
- "userLoginId": 1,
- "teams": [
- {
- "id": 1,
- "name": "Support Team",
- "color": "#FF5733",
- "createdAt": "2023-10-01T12:00:00Z"
}
]
}, - "contact": {
- "id": 1,
- "firstName": "John",
- "lastName": "Doe",
- "emailAddresses": [
- "email1@example.com",
- "email2@example.com"
], - "phoneNumbers": [
- {
- "type": "mobile",
- "number": "+31612345678"
}, - {
- "type": "work",
- "number": "+31201234567"
}
], - "country": "nl",
- "reference": "12345",
- "isFavorite": true,
- "isBlocked": false,
- "createdAt": "2023-10-01T12:00:00Z",
- "labels": [
- {
- "id": 1,
- "name": "Label 1",
- "color": "#FFFFFF",
- "createdAt": "2023-10-01T12:00:00Z",
- "updatedAt": "2023-10-02T12:00:00Z"
}
], - "customFields": [
- {
- "id": 1,
- "name": "Communication preference",
- "identifierPrefix": "contact.custom",
- "identifier": "communication_preference",
- "fieldType": "dropdown",
- "required": true,
- "options": [
- {
- "title": "WhatsApp",
- "value": "whatsapp"
}, - {
- "title": "Email",
- "value": "email"
}, - {
- "title": "SMS",
- "value": "sms"
}
], - "icon": "fas fa-envelope",
- "placeholder": "Select communication preference",
- "value": "whatsapp"
}
]
}
}| id required | integer >= 1 |
| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
{- "id": 1
}| workspaceId required | integer >= 1 |
| id required | integer >= 1 |
| 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. |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
{- "data": [
- {
- "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": {
- "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
}, - "workspaceUser": null,
- "parentEntry": null,
- "reactions": [
- null
], - "workspaceUserId": 1
}
], - "cursor": {
- "after": "dGltZXN0YW1wOjE3NTU1MDc4NjgwMDAsaWQ6MTY5OQ",
- "before": "dGltZXN0YW1wOjE3NTU1MDc4NjgwMDAsaWQ6MTY5OQ"
}
}| entryId required | integer >= 1 |
| workspaceId required | integer >= 1 |
| id required | integer >= 1 |
| 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. |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
{- "data": [
- {
- "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": {
- "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
}, - "workspaceUser": null,
- "parentEntry": null,
- "reactions": [
- null
], - "workspaceUserId": 1
}
], - "cursor": {
- "after": "dGltZXN0YW1wOjE3NTU1MDc4NjgwMDAsaWQ6MTY5OQ",
- "before": "dGltZXN0YW1wOjE3NTU1MDc4NjgwMDAsaWQ6MTY5OQ"
}
}| id required | integer >= 1 |
| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
Body
| topicIds required | Array of integers Array of topic ids to add or remove from the chat |
{- "topicIds": [
- 1,
- 2,
- 3
]
}{- "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": {
- "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": {
- "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
}, - "workspaceUser": null,
- "parentEntry": null,
- "reactions": [
- null
], - "workspaceUserId": 1
}, - "topics": [
- {
- "id": 1,
- "name": "Topic 1",
- "color": "#FFFFFF",
- "isSticky": true,
- "createdAt": "2023-10-01T12:00:00Z",
- "updatedAt": "2023-10-01T12:00:00Z"
}
], - "assignedTeam": null,
- "assignedWorkspaceUser": {
- "id": 1,
- "firstName": "John",
- "lastName": "Doe",
- "status": "activated",
- "role": "agent",
- "language": "nl",
- "profilePic": {
- "filePath": "saysimple/messages/202503/jpeg",
- "fileName": "f8090c09-5d1f-4aab-bf3b-f8b99ec22cc8.jpeg"
}, - "createdAt": "2023-01-01T00:00:00Z",
- "updatedAt": "2023-01-02T00:00:00Z",
- "email": "user@example.com",
- "userLoginId": 1,
- "teams": [
- {
- "id": 1,
- "name": "Support Team",
- "color": "#FF5733",
- "createdAt": "2023-10-01T12:00:00Z"
}
]
}, - "contact": {
- "id": 1,
- "firstName": "John",
- "lastName": "Doe",
- "emailAddresses": [
- "email1@example.com",
- "email2@example.com"
], - "phoneNumbers": [
- {
- "type": "mobile",
- "number": "+31612345678"
}, - {
- "type": "work",
- "number": "+31201234567"
}
], - "country": "nl",
- "reference": "12345",
- "isFavorite": true,
- "isBlocked": false,
- "createdAt": "2023-10-01T12:00:00Z",
- "labels": [
- {
- "id": 1,
- "name": "Label 1",
- "color": "#FFFFFF",
- "createdAt": "2023-10-01T12:00:00Z",
- "updatedAt": "2023-10-02T12:00:00Z"
}
], - "customFields": [
- {
- "id": 1,
- "name": "Communication preference",
- "identifierPrefix": "contact.custom",
- "identifier": "communication_preference",
- "fieldType": "dropdown",
- "required": true,
- "options": [
- {
- "title": "WhatsApp",
- "value": "whatsapp"
}, - {
- "title": "Email",
- "value": "email"
}, - {
- "title": "SMS",
- "value": "sms"
}
], - "icon": "fas fa-envelope",
- "placeholder": "Select communication preference",
- "value": "whatsapp"
}
]
}
}| id required | integer >= 1 |
| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
Body
| topicIds required | Array of integers Array of topic ids to add or remove from the chat |
{- "topicIds": [
- 1,
- 2,
- 3
]
}{- "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": {
- "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": {
- "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
}, - "workspaceUser": null,
- "parentEntry": null,
- "reactions": [
- null
], - "workspaceUserId": 1
}, - "topics": [
- {
- "id": 1,
- "name": "Topic 1",
- "color": "#FFFFFF",
- "isSticky": true,
- "createdAt": "2023-10-01T12:00:00Z",
- "updatedAt": "2023-10-01T12:00:00Z"
}
], - "assignedTeam": null,
- "assignedWorkspaceUser": {
- "id": 1,
- "firstName": "John",
- "lastName": "Doe",
- "status": "activated",
- "role": "agent",
- "language": "nl",
- "profilePic": {
- "filePath": "saysimple/messages/202503/jpeg",
- "fileName": "f8090c09-5d1f-4aab-bf3b-f8b99ec22cc8.jpeg"
}, - "createdAt": "2023-01-01T00:00:00Z",
- "updatedAt": "2023-01-02T00:00:00Z",
- "email": "user@example.com",
- "userLoginId": 1,
- "teams": [
- {
- "id": 1,
- "name": "Support Team",
- "color": "#FF5733",
- "createdAt": "2023-10-01T12:00:00Z"
}
]
}, - "contact": {
- "id": 1,
- "firstName": "John",
- "lastName": "Doe",
- "emailAddresses": [
- "email1@example.com",
- "email2@example.com"
], - "phoneNumbers": [
- {
- "type": "mobile",
- "number": "+31612345678"
}, - {
- "type": "work",
- "number": "+31201234567"
}
], - "country": "nl",
- "reference": "12345",
- "isFavorite": true,
- "isBlocked": false,
- "createdAt": "2023-10-01T12:00:00Z",
- "labels": [
- {
- "id": 1,
- "name": "Label 1",
- "color": "#FFFFFF",
- "createdAt": "2023-10-01T12:00:00Z",
- "updatedAt": "2023-10-02T12:00:00Z"
}
], - "customFields": [
- {
- "id": 1,
- "name": "Communication preference",
- "identifierPrefix": "contact.custom",
- "identifier": "communication_preference",
- "fieldType": "dropdown",
- "required": true,
- "options": [
- {
- "title": "WhatsApp",
- "value": "whatsapp"
}, - {
- "title": "Email",
- "value": "email"
}, - {
- "title": "SMS",
- "value": "sms"
}
], - "icon": "fas fa-envelope",
- "placeholder": "Select communication preference",
- "value": "whatsapp"
}
]
}
}| id required | integer >= 1 |
| workspaceId required | integer >= 1 |
| 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. |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
{- "teams": [
- null
], - "workspaceUsers": [
- {
- "id": 1,
- "firstName": "John",
- "lastName": "Doe",
- "status": "activated",
- "role": "agent",
- "language": "nl",
- "profilePic": {
- "filePath": "saysimple/messages/202503/jpeg",
- "fileName": "f8090c09-5d1f-4aab-bf3b-f8b99ec22cc8.jpeg"
}, - "createdAt": "2023-01-01T00:00:00Z",
- "updatedAt": "2023-01-02T00:00:00Z",
- "email": "user@example.com",
- "userLoginId": 1,
- "teams": [
- {
- "id": 1,
- "name": "Support Team",
- "color": "#FF5733",
- "createdAt": "2023-10-01T12:00:00Z"
}
]
}
]
}Contacts are the users that can be reached through channels. They can (optional) be linked to chats.
| workspaceId required | integer >= 1 |
| 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. |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
{- "data": [
- {
- "id": 1,
- "firstName": "John",
- "lastName": "Doe",
- "emailAddresses": [
- "email1@example.com",
- "email2@example.com"
], - "phoneNumbers": [
- {
- "type": "mobile",
- "number": "+31612345678"
}, - {
- "type": "work",
- "number": "+31201234567"
}
], - "country": "nl",
- "reference": "12345",
- "isFavorite": true,
- "isBlocked": false,
- "createdAt": "2023-10-01T12:00:00Z",
- "labels": [
- {
- "id": 1,
- "name": "Label 1",
- "color": "#FFFFFF",
- "createdAt": "2023-10-01T12:00:00Z",
- "updatedAt": "2023-10-02T12:00:00Z"
}
], - "customFields": [
- {
- "id": 1,
- "name": "Communication preference",
- "identifierPrefix": "contact.custom",
- "identifier": "communication_preference",
- "fieldType": "dropdown",
- "required": true,
- "options": [
- {
- "title": "WhatsApp",
- "value": "whatsapp"
}, - {
- "title": "Email",
- "value": "email"
}, - {
- "title": "SMS",
- "value": "sms"
}
], - "icon": "fas fa-envelope",
- "placeholder": "Select communication preference",
- "value": "whatsapp"
}
]
}
], - "count": 20,
- "total": 100,
- "page": 1,
- "pageCount": 5
}| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
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 |
{- "firstName": "John",
- "lastName": "Doe",
- "emailAddresses": [
- "email1@example.com",
- "email2@example.com"
], - "phoneNumbers": [
- {
- "type": "mobile",
- "number": "+31612345678"
}, - {
- "type": "work",
- "number": "+31201234567"
}
], - "country": "nl",
- "reference": "12345",
- "isFavorite": false,
- "isBlocked": false,
- "labels": [
- {
- "id": 1,
- "name": "Label 1",
- "color": "#FFFFFF",
- "createdAt": "2023-10-01T12:00:00Z",
- "updatedAt": "2023-10-02T12:00:00Z"
}
], - "customFields": [
- {
- "id": 1,
- "name": "Communication preference",
- "identifierPrefix": "contact.custom",
- "identifier": "communication_preference",
- "fieldType": "dropdown",
- "required": true,
- "options": [
- {
- "title": "WhatsApp",
- "value": "whatsapp"
}, - {
- "title": "Email",
- "value": "email"
}, - {
- "title": "SMS",
- "value": "sms"
}
], - "icon": "fas fa-envelope",
- "placeholder": "Select communication preference",
- "value": "whatsapp"
}
]
}{- "id": 1,
- "firstName": "John",
- "lastName": "Doe",
- "emailAddresses": [
- "email1@example.com",
- "email2@example.com"
], - "phoneNumbers": [
- {
- "type": "mobile",
- "number": "+31612345678"
}, - {
- "type": "work",
- "number": "+31201234567"
}
], - "country": "nl",
- "reference": "12345",
- "isFavorite": true,
- "isBlocked": false,
- "createdAt": "2023-10-01T12:00:00Z",
- "labels": [
- {
- "id": 1,
- "name": "Label 1",
- "color": "#FFFFFF",
- "createdAt": "2023-10-01T12:00:00Z",
- "updatedAt": "2023-10-02T12:00:00Z"
}
], - "customFields": [
- {
- "id": 1,
- "name": "Communication preference",
- "identifierPrefix": "contact.custom",
- "identifier": "communication_preference",
- "fieldType": "dropdown",
- "required": true,
- "options": [
- {
- "title": "WhatsApp",
- "value": "whatsapp"
}, - {
- "title": "Email",
- "value": "email"
}, - {
- "title": "SMS",
- "value": "sms"
}
], - "icon": "fas fa-envelope",
- "placeholder": "Select communication preference",
- "value": "whatsapp"
}
]
}| id required | integer >= 1 |
| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
{- "id": 1,
- "firstName": "John",
- "lastName": "Doe",
- "emailAddresses": [
- "email1@example.com",
- "email2@example.com"
], - "phoneNumbers": [
- {
- "type": "mobile",
- "number": "+31612345678"
}, - {
- "type": "work",
- "number": "+31201234567"
}
], - "country": "nl",
- "reference": "12345",
- "isFavorite": true,
- "isBlocked": false,
- "createdAt": "2023-10-01T12:00:00Z",
- "labels": [
- {
- "id": 1,
- "name": "Label 1",
- "color": "#FFFFFF",
- "createdAt": "2023-10-01T12:00:00Z",
- "updatedAt": "2023-10-02T12:00:00Z"
}
], - "customFields": [
- {
- "id": 1,
- "name": "Communication preference",
- "identifierPrefix": "contact.custom",
- "identifier": "communication_preference",
- "fieldType": "dropdown",
- "required": true,
- "options": [
- {
- "title": "WhatsApp",
- "value": "whatsapp"
}, - {
- "title": "Email",
- "value": "email"
}, - {
- "title": "SMS",
- "value": "sms"
}
], - "icon": "fas fa-envelope",
- "placeholder": "Select communication preference",
- "value": "whatsapp"
}
]
}| id required | integer >= 1 |
| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
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 |
{- "workspaceId": 1,
- "firstName": "John",
- "lastName": "Doe",
- "emailAddresses": [
- "email1@example.com",
- "email2@example.com"
], - "phoneNumbers": [
- {
- "type": "mobile",
- "number": "+31612345678"
}, - {
- "type": "work",
- "number": "+31201234567"
}
], - "country": "nl",
- "reference": "12345",
- "isFavorite": true,
- "isBlocked": false,
- "labels": [
- {
- "id": 1,
- "name": "Label 1",
- "color": "#FFFFFF",
- "createdAt": "2023-10-01T12:00:00Z",
- "updatedAt": "2023-10-02T12:00:00Z"
}
], - "customFields": [
- {
- "id": 1,
- "name": "Communication preference",
- "identifierPrefix": "contact.custom",
- "identifier": "communication_preference",
- "fieldType": "dropdown",
- "required": true,
- "options": [
- {
- "title": "WhatsApp",
- "value": "whatsapp"
}, - {
- "title": "Email",
- "value": "email"
}, - {
- "title": "SMS",
- "value": "sms"
}
], - "icon": "fas fa-envelope",
- "placeholder": "Select communication preference",
- "value": "whatsapp"
}
]
}{- "id": 1,
- "firstName": "John",
- "lastName": "Doe",
- "emailAddresses": [
- "email1@example.com",
- "email2@example.com"
], - "phoneNumbers": [
- {
- "type": "mobile",
- "number": "+31612345678"
}, - {
- "type": "work",
- "number": "+31201234567"
}
], - "country": "nl",
- "reference": "12345",
- "isFavorite": true,
- "isBlocked": false,
- "createdAt": "2023-10-01T12:00:00Z",
- "labels": [
- {
- "id": 1,
- "name": "Label 1",
- "color": "#FFFFFF",
- "createdAt": "2023-10-01T12:00:00Z",
- "updatedAt": "2023-10-02T12:00:00Z"
}
], - "customFields": [
- {
- "id": 1,
- "name": "Communication preference",
- "identifierPrefix": "contact.custom",
- "identifier": "communication_preference",
- "fieldType": "dropdown",
- "required": true,
- "options": [
- {
- "title": "WhatsApp",
- "value": "whatsapp"
}, - {
- "title": "Email",
- "value": "email"
}, - {
- "title": "SMS",
- "value": "sms"
}
], - "icon": "fas fa-envelope",
- "placeholder": "Select communication preference",
- "value": "whatsapp"
}
]
}| id required | integer >= 1 |
| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
{- "id": 1
}| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
Body
| contactIds required | Array of integers [ 1 .. 100 ] items List of contact IDs to update |
required | object |
{- "contactIds": [
- 1,
- 2,
- 3
], - "contact": {
- "workspaceId": 1,
- "firstName": "John",
- "lastName": "Doe",
- "emailAddresses": [
- "email1@example.com",
- "email2@example.com"
], - "phoneNumbers": [
- {
- "type": "mobile",
- "number": "+31612345678"
}, - {
- "type": "work",
- "number": "+31201234567"
}
], - "country": "nl",
- "reference": "12345",
- "isFavorite": true,
- "isBlocked": false,
- "labels": [
- {
- "id": 1,
- "name": "Label 1",
- "color": "#FFFFFF",
- "createdAt": "2023-10-01T12:00:00Z",
- "updatedAt": "2023-10-02T12:00:00Z"
}
], - "customFields": [
- {
- "id": 1,
- "name": "Communication preference",
- "identifierPrefix": "contact.custom",
- "identifier": "communication_preference",
- "fieldType": "dropdown",
- "required": true,
- "options": [
- {
- "title": "WhatsApp",
- "value": "whatsapp"
}, - {
- "title": "Email",
- "value": "email"
}, - {
- "title": "SMS",
- "value": "sms"
}
], - "icon": "fas fa-envelope",
- "placeholder": "Select communication preference",
- "value": "whatsapp"
}
]
}
}[- {
- "id": 1,
- "firstName": "John",
- "lastName": "Doe",
- "emailAddresses": [
- "email1@example.com",
- "email2@example.com"
], - "phoneNumbers": [
- {
- "type": "mobile",
- "number": "+31612345678"
}, - {
- "type": "work",
- "number": "+31201234567"
}
], - "country": "nl",
- "reference": "12345",
- "isFavorite": true,
- "isBlocked": false,
- "createdAt": "2023-10-01T12:00:00Z",
- "labels": [
- {
- "id": 1,
- "name": "Label 1",
- "color": "#FFFFFF",
- "createdAt": "2023-10-01T12:00:00Z",
- "updatedAt": "2023-10-02T12:00:00Z"
}
], - "customFields": [
- {
- "id": 1,
- "name": "Communication preference",
- "identifierPrefix": "contact.custom",
- "identifier": "communication_preference",
- "fieldType": "dropdown",
- "required": true,
- "options": [
- {
- "title": "WhatsApp",
- "value": "whatsapp"
}, - {
- "title": "Email",
- "value": "email"
}, - {
- "title": "SMS",
- "value": "sms"
}
], - "icon": "fas fa-envelope",
- "placeholder": "Select communication preference",
- "value": "whatsapp"
}
]
}
]| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
Body
[- 1,
- 2,
- 3
][- 1,
- 2,
- 3
]| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
{- "contacts": 150,
- "favorites": 30,
- "blocked": 5
}| id required | integer >= 1 |
| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
Body
[- 1,
- 2
]{- "id": 1,
- "workspaceId": 1,
- "firstName": "John",
- "lastName": "Doe",
- "emailAddresses": [
- "email1@example.com",
- "email2@example.com"
], - "phoneNumbers": [
- {
- "type": "mobile",
- "number": "+31612345678"
}, - {
- "type": "work",
- "number": "+31201234567"
}
], - "country": "nl",
- "reference": "12345",
- "isFavorite": true,
- "isBlocked": false,
- "createdAt": "2023-10-01T12:00:00Z",
- "updatedAt": "2023-10-02T12:00:00Z",
- "labels": [
- {
- "id": 1,
- "name": "Label 1",
- "color": "#FFFFFF",
- "createdAt": "2023-10-01T12:00:00Z",
- "updatedAt": "2023-10-02T12:00:00Z"
}
], - "customFields": [
- {
- "id": 1,
- "name": "Communication preference",
- "identifierPrefix": "contact.custom",
- "identifier": "communication_preference",
- "fieldType": "dropdown",
- "required": true,
- "options": [
- {
- "title": "WhatsApp",
- "value": "whatsapp"
}, - {
- "title": "Email",
- "value": "email"
}, - {
- "title": "SMS",
- "value": "sms"
}
], - "icon": "fas fa-envelope",
- "placeholder": "Select communication preference",
- "value": "whatsapp"
}
]
}| id required | integer >= 1 |
| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
Body
| labelIds required | Array of integers List of label IDs to add or remove from the contact |
{- "labelIds": [
- 1,
- 2,
- 3
]
}{- "id": 1,
- "firstName": "John",
- "lastName": "Doe",
- "emailAddresses": [
- "email1@example.com",
- "email2@example.com"
], - "phoneNumbers": [
- {
- "type": "mobile",
- "number": "+31612345678"
}, - {
- "type": "work",
- "number": "+31201234567"
}
], - "country": "nl",
- "reference": "12345",
- "isFavorite": true,
- "isBlocked": false,
- "createdAt": "2023-10-01T12:00:00Z",
- "labels": [
- {
- "id": 1,
- "name": "Label 1",
- "color": "#FFFFFF",
- "createdAt": "2023-10-01T12:00:00Z",
- "updatedAt": "2023-10-02T12:00:00Z"
}
], - "customFields": [
- {
- "id": 1,
- "name": "Communication preference",
- "identifierPrefix": "contact.custom",
- "identifier": "communication_preference",
- "fieldType": "dropdown",
- "required": true,
- "options": [
- {
- "title": "WhatsApp",
- "value": "whatsapp"
}, - {
- "title": "Email",
- "value": "email"
}, - {
- "title": "SMS",
- "value": "sms"
}
], - "icon": "fas fa-envelope",
- "placeholder": "Select communication preference",
- "value": "whatsapp"
}
]
}| id required | integer >= 1 |
| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
Body
| labelIds required | Array of integers List of label IDs to add or remove from the contact |
{- "labelIds": [
- 1,
- 2,
- 3
]
}{- "id": 1,
- "firstName": "John",
- "lastName": "Doe",
- "emailAddresses": [
- "email1@example.com",
- "email2@example.com"
], - "phoneNumbers": [
- {
- "type": "mobile",
- "number": "+31612345678"
}, - {
- "type": "work",
- "number": "+31201234567"
}
], - "country": "nl",
- "reference": "12345",
- "isFavorite": true,
- "isBlocked": false,
- "createdAt": "2023-10-01T12:00:00Z",
- "labels": [
- {
- "id": 1,
- "name": "Label 1",
- "color": "#FFFFFF",
- "createdAt": "2023-10-01T12:00:00Z",
- "updatedAt": "2023-10-02T12:00:00Z"
}
], - "customFields": [
- {
- "id": 1,
- "name": "Communication preference",
- "identifierPrefix": "contact.custom",
- "identifier": "communication_preference",
- "fieldType": "dropdown",
- "required": true,
- "options": [
- {
- "title": "WhatsApp",
- "value": "whatsapp"
}, - {
- "title": "Email",
- "value": "email"
}, - {
- "title": "SMS",
- "value": "sms"
}
], - "icon": "fas fa-envelope",
- "placeholder": "Select communication preference",
- "value": "whatsapp"
}
]
}Custom fields are additional fields that can be added to contacts to store extra information. They can be created, updated, deleted, and reordered.
| workspaceId required | integer >= 1 |
| 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. |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
[- {
- "id": 1,
- "name": "Custom field 1",
- "identifierPrefix": "contact.custom",
- "identifier": "custom_field_1",
- "fieldType": "text",
- "required": false,
- "options": [
- {
- "value": "1",
- "title": "Option 1"
}, - {
- "value": "2",
- "title": "Option 2"
}
], - "icon": "fas fa-user",
- "placeholder": "Enter your text here",
- "order": 1,
- "createdAt": "2023-10-01T12:00:00Z",
- "updatedAt": "2023-10-02T12:00:00Z"
}
]| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
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 |
{- "name": "Custom field 1",
- "identifier": "custom_field_1",
- "fieldType": "text",
- "required": false,
- "icon": "fas fa-user",
- "placeholder": "Enter your text here",
- "options": [
- {
- "title": "Option 1"
}, - {
- "title": "Option 2"
}
]
}{- "id": 1,
- "name": "Custom field 1",
- "identifierPrefix": "contact.custom",
- "identifier": "custom_field_1",
- "fieldType": "text",
- "required": false,
- "options": [
- {
- "value": "1",
- "title": "Option 1"
}, - {
- "value": "2",
- "title": "Option 2"
}
], - "icon": "fas fa-user",
- "placeholder": "Enter your text here",
- "order": 1,
- "createdAt": "2023-10-01T12:00:00Z",
- "updatedAt": "2023-10-02T12:00:00Z"
}| id required | integer >= 1 |
| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
{- "id": 1,
- "name": "Custom field 1",
- "identifierPrefix": "contact.custom",
- "identifier": "custom_field_1",
- "fieldType": "text",
- "required": false,
- "options": [
- {
- "value": "1",
- "title": "Option 1"
}, - {
- "value": "2",
- "title": "Option 2"
}
], - "icon": "fas fa-user",
- "placeholder": "Enter your text here",
- "order": 1,
- "createdAt": "2023-10-01T12:00:00Z",
- "updatedAt": "2023-10-02T12:00:00Z"
}| id required | integer >= 1 |
| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
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 |
{- "name": "Custom field 1",
- "identifier": "custom_field_1",
- "fieldType": "text",
- "required": false,
- "icon": "fas fa-user",
- "placeholder": "Enter your text here",
- "options": [
- {
- "title": "Option 1"
}, - {
- "title": "Option 2"
}
]
}{- "id": 1,
- "name": "Custom field 1",
- "identifierPrefix": "contact.custom",
- "identifier": "custom_field_1",
- "fieldType": "text",
- "required": false,
- "options": [
- {
- "value": "1",
- "title": "Option 1"
}, - {
- "value": "2",
- "title": "Option 2"
}
], - "icon": "fas fa-user",
- "placeholder": "Enter your text here",
- "order": 1,
- "createdAt": "2023-10-01T12:00:00Z",
- "updatedAt": "2023-10-02T12:00:00Z"
}| id required | integer >= 1 |
| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
{- "id": 1
}| id required | integer >= 1 |
| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
Body
| order required | integer >= 1 Order of the custom field in the list |
{- "order": 1
}{- "id": 1,
- "name": "Custom field 1",
- "identifierPrefix": "contact.custom",
- "identifier": "custom_field_1",
- "fieldType": "text",
- "required": false,
- "options": [
- {
- "value": "1",
- "title": "Option 1"
}, - {
- "value": "2",
- "title": "Option 2"
}
], - "icon": "fas fa-user",
- "placeholder": "Enter your text here",
- "order": 1,
- "createdAt": "2023-10-01T12:00:00Z",
- "updatedAt": "2023-10-02T12:00:00Z"
}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.
| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
{- "CloudFront-Key-Pair-Id": "APKAEXAMPLEKEYPAIRID",
- "CloudFront-Signature": "abc123signature",
- "CloudFront-Policy": "policyString",
- "expirationTime": "2025-03-01T12:00:00Z"
}| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
Body
| filePath required | string Path to the file in the storage system |
| fileName required | string Name of the file in the storage system |
{- "filePath": "saysimple/messages/202503/jpeg",
- "fileName": "f8090c09-5d1f-4aab-bf3b-f8b99ec22cc8.jpeg"
}| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
{- "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 are used to categorize and organize chats and contacts. They can be created, updated, and deleted.
| workspaceId required | integer >= 1 |
| 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. |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
{- "data": [
- {
- "id": 1,
- "name": "Label 1",
- "color": "#FFFFFF",
- "createdAt": "2023-10-01T12:00:00Z",
- "updatedAt": "2023-10-02T12:00:00Z"
}
], - "count": 20,
- "total": 100,
- "page": 1,
- "pageCount": 5
}| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
Body
| name required | string [ 1 .. 100 ] characters Name of the label |
| color required | string = 7 characters Hex color code for the label |
{- "name": "Label 1",
- "color": "#FFFFFF"
}{- "id": 1,
- "name": "Label 1",
- "color": "#FFFFFF",
- "createdAt": "2023-10-01T12:00:00Z",
- "updatedAt": "2023-10-02T12:00:00Z"
}| id required | integer >= 1 |
| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
{- "id": 1,
- "name": "Label 1",
- "color": "#FFFFFF",
- "createdAt": "2023-10-01T12:00:00Z",
- "updatedAt": "2023-10-02T12:00:00Z"
}| id required | integer >= 1 |
| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
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 |
{- "workspaceId": 1,
- "name": "Label 1",
- "color": "#FFFFFF"
}{- "id": 1,
- "name": "Label 1",
- "color": "#FFFFFF",
- "createdAt": "2023-10-01T12:00:00Z",
- "updatedAt": "2023-10-02T12:00:00Z"
}| id required | integer >= 1 |
| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
{- "id": 1
}| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string |
Body
| 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. |
{- "channelId": 1,
- "to": "+31612345678",
- "type": "text",
- "text": {
- "body": "Hello, world!",
- "preview_url": false
}
}{- "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": {
- "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
}, - "workspaceUser": null,
- "parentEntry": null,
- "reactions": [
- null
], - "workspaceUserId": 1
}| workspaceId required | integer >= 1 |
| chatId required | integer >= 1 |
| 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. |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
{- "data": [
- {
- "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": {
- "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
}, - "workspaceUser": null,
- "parentEntry": null,
- "reactions": [
- null
], - "workspaceUserId": 1
}
], - "cursor": {
- "after": "dGltZXN0YW1wOjE3NTU1MDc4NjgwMDAsaWQ6MTY5OQ",
- "before": "dGltZXN0YW1wOjE3NTU1MDc4NjgwMDAsaWQ6MTY5OQ"
}
}| workspaceId required | integer >= 1 |
| chatId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
Body
| workspaceUserId | integer ID of the workspace user who created the note |
required | object (Text) |
{- "workspaceUserId": 1,
- "metadata": {
- "body": "string"
}
}{- "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": {
- "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
}, - "workspaceUser": null,
- "parentEntry": null,
- "reactions": [
- null
], - "workspaceUserId": 1
}| id required | integer >= 1 |
| workspaceId required | integer >= 1 |
| chatId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
{- "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": {
- "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
}, - "workspaceUser": null,
- "parentEntry": null,
- "reactions": [
- null
], - "workspaceUserId": 1
}| id required | integer >= 1 |
| workspaceId required | integer >= 1 |
| chatId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
Body
| workspaceUserId | integer ID of the workspace user who created the note |
object (Text) |
{- "workspaceUserId": 1,
- "metadata": {
- "body": "string"
}
}{- "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": {
- "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
}, - "workspaceUser": null,
- "parentEntry": null,
- "reactions": [
- null
], - "workspaceUserId": 1
}| id required | integer >= 1 |
| workspaceId required | integer >= 1 |
| chatId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
{- "id": 1
}| workspaceId required | integer >= 1 |
| 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. |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
{- "data": [
- null
], - "count": 20,
- "total": 100,
- "page": 1,
- "pageCount": 5
}| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
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 |
{- "name": "Development Team",
- "color": "#FFFFFF",
- "userIds": [
- 1,
- 2,
- 3
], - "channelIds": [
- 1,
- 2,
- 3
]
}null| id required | integer >= 1 |
| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
null| id required | integer >= 1 |
| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
Body
| name | string [ 1 .. 100 ] characters Name of the team |
| color | string = 7 characters Hex color code for the label |
{- "name": "Development Team",
- "color": "#FFFFFF"
}null| id required | integer >= 1 |
| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
{- "id": 1
}| id required | integer >= 1 |
| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
Body
| workspaceUserIds required | Array of integers Array of workspace user IDs to be added or removed from the team |
{- "workspaceUserIds": [
- 1,
- 2,
- 3
]
}null| id required | integer >= 1 |
| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
Body
| workspaceUserIds required | Array of integers Array of workspace user IDs to be added or removed from the team |
{- "workspaceUserIds": [
- 1,
- 2,
- 3
]
}null| id required | integer >= 1 |
| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
Body
| channelIds required | Array of integers Array of channel IDs to be added or removed from the team |
{- "channelIds": [
- 1,
- 2,
- 3
]
}null| id required | integer >= 1 |
| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
Body
| channelIds required | Array of integers Array of channel IDs to be added or removed from the team |
{- "channelIds": [
- 1,
- 2,
- 3
]
}nullTemplates are predefined messages that can be used to send messages in chats outside customer care window. Templates needs to be approved by Meta.
| workspaceId required | integer >= 1 |
| 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. |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
{- "data": [
- {
- "id": 1,
- "name": "order_confirmation",
- "language": "en_US",
- "components": [
- {
- "type": "header",
- "format": "text",
- "text": "Welcome to Saysimple!",
- "example": {
- "header_text": [
- "Welcome to Saysimple!"
], - "header_text_named_params": [
- {
- "param_name": "name",
- "example": "Saysimple"
}
]
}
}
], - "externalReference": "12345679891234",
- "category": "utility",
- "qualityRating": "unknown",
- "status": "pending",
- "reason": "Template is under review.",
- "parameterFormat": "positional",
- "otherInfo": {
- "property1": null,
- "property2": null
}, - "updateDates": [
- "2023-10-01T12:00:00Z",
- "2023-10-02T15:30:00Z"
], - "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": {
- "id": 1,
- "type": "waba",
- "metadata": {
- "wabaId": "112047008171337",
- "accessToken": "EAAONJ4cl..."
}, - "createdAt": "2023-10-01T12:00:00Z"
}
}
], - "count": 20,
- "total": 100,
- "page": 1,
- "pageCount": 5
}| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
Body
| 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. |
{- "accountId": 1,
- "name": "test_buttons",
- "language": "en",
- "category": "utility",
- "components": [
- {
- "type": "body",
- "text": "Hi, please click on one of the buttons below."
}, - {
- "type": "buttons",
- "buttons": [
- {
- "type": "url",
- "text": "See website 2",
- "example": [
- "42"
]
}, - {
- "type": "phone_number",
- "text": "Call",
- "phone_number": "+31 6 12345678"
}, - {
- "type": "quick_reply",
- "text": "Quick reply"
}
]
}
]
}{- "id": 1,
- "name": "order_confirmation",
- "language": "en_US",
- "components": [
- {
- "type": "header",
- "format": "text",
- "text": "Welcome to Saysimple!",
- "example": {
- "header_text": [
- "Welcome to Saysimple!"
], - "header_text_named_params": [
- {
- "param_name": "name",
- "example": "Saysimple"
}
]
}
}
], - "externalReference": "12345679891234",
- "category": "utility",
- "qualityRating": "unknown",
- "status": "pending",
- "reason": "Template is under review.",
- "parameterFormat": "positional",
- "otherInfo": {
- "property1": null,
- "property2": null
}, - "updateDates": [
- "2023-10-01T12:00:00Z",
- "2023-10-02T15:30:00Z"
], - "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": {
- "id": 1,
- "type": "waba",
- "metadata": {
- "wabaId": "112047008171337",
- "accessToken": "EAAONJ4cl..."
}, - "createdAt": "2023-10-01T12:00:00Z"
}
}| id required | integer >= 1 |
| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
{- "id": 1,
- "name": "order_confirmation",
- "language": "en_US",
- "components": [
- {
- "type": "header",
- "format": "text",
- "text": "Welcome to Saysimple!",
- "example": {
- "header_text": [
- "Welcome to Saysimple!"
], - "header_text_named_params": [
- {
- "param_name": "name",
- "example": "Saysimple"
}
]
}
}
], - "externalReference": "12345679891234",
- "category": "utility",
- "qualityRating": "unknown",
- "status": "pending",
- "reason": "Template is under review.",
- "parameterFormat": "positional",
- "otherInfo": {
- "property1": null,
- "property2": null
}, - "updateDates": [
- "2023-10-01T12:00:00Z",
- "2023-10-02T15:30:00Z"
], - "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": {
- "id": 1,
- "type": "waba",
- "metadata": {
- "wabaId": "112047008171337",
- "accessToken": "EAAONJ4cl..."
}, - "createdAt": "2023-10-01T12:00:00Z"
}
}| id required | integer >= 1 |
| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
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. |
{- "components": [
- {
- "type": "header",
- "format": "text",
- "text": "Welcome to Saysimple!",
- "example": {
- "header_text": [
- "Welcome to Saysimple!"
], - "header_text_named_params": [
- {
- "param_name": "name",
- "example": "Saysimple"
}
]
}
}
], - "category": "utility",
- "isMediaLocked": false
}{- "id": 1,
- "name": "order_confirmation",
- "language": "en_US",
- "components": [
- {
- "type": "header",
- "format": "text",
- "text": "Welcome to Saysimple!",
- "example": {
- "header_text": [
- "Welcome to Saysimple!"
], - "header_text_named_params": [
- {
- "param_name": "name",
- "example": "Saysimple"
}
]
}
}
], - "externalReference": "12345679891234",
- "category": "utility",
- "qualityRating": "unknown",
- "status": "pending",
- "reason": "Template is under review.",
- "parameterFormat": "positional",
- "otherInfo": {
- "property1": null,
- "property2": null
}, - "updateDates": [
- "2023-10-01T12:00:00Z",
- "2023-10-02T15:30:00Z"
], - "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": {
- "id": 1,
- "type": "waba",
- "metadata": {
- "wabaId": "112047008171337",
- "accessToken": "EAAONJ4cl..."
}, - "createdAt": "2023-10-01T12:00:00Z"
}
}| id required | integer >= 1 |
| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
{- "id": 1
}| workspaceId required | integer >= 1 |
| 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. |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
{- "data": [
- {
- "id": 1,
- "name": "Topic 1",
- "color": "#FFFFFF",
- "isSticky": true,
- "createdAt": "2023-10-01T12:00:00Z",
- "updatedAt": "2023-10-01T12:00:00Z"
}
], - "count": 20,
- "total": 100,
- "page": 1,
- "pageCount": 5
}| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
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 |
{- "name": "Topic 1",
- "color": "#FFFFFF",
- "isSticky": true
}{- "id": 1,
- "name": "Topic 1",
- "color": "#FFFFFF",
- "isSticky": true,
- "createdAt": "2023-10-01T12:00:00Z",
- "updatedAt": "2023-10-01T12:00:00Z"
}| id required | integer >= 1 |
| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
{- "id": 1,
- "name": "Topic 1",
- "color": "#FFFFFF",
- "isSticky": true,
- "createdAt": "2023-10-01T12:00:00Z",
- "updatedAt": "2023-10-01T12:00:00Z"
}| id required | integer >= 1 |
| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
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 |
{- "workspaceId": 1,
- "name": "Topic 1",
- "color": "#FFFFFF",
- "isSticky": true
}{- "id": 1,
- "name": "Topic 1",
- "color": "#FFFFFF",
- "isSticky": true,
- "createdAt": "2023-10-01T12:00:00Z",
- "updatedAt": "2023-10-01T12:00:00Z"
}| id required | integer >= 1 |
| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
{- "id": 1
}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.
| workspaceId required | integer >= 1 |
| 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. |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
{- "data": [
- {
- "id": 1,
- "workspaceId": 1,
- "active": true,
- "eventType": "entry::received",
- "customHeaders": {
- "x-custom-header1": "value1",
- "x-custom-header2": "value2"
}, - "createdAt": "2023-10-01T12:00:00Z",
- "updatedAt": "2023-10-02T12:00:00Z"
}
], - "count": 20,
- "total": 100,
- "page": 1,
- "pageCount": 5
}| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
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. |
{- "active": true,
- "eventType": "entry::received",
- "customHeaders": {
- "x-custom-header1": "value1",
- "x-custom-header2": "value2"
}
}{- "id": 1,
- "workspaceId": 1,
- "active": true,
- "eventType": "entry::received",
- "customHeaders": {
- "x-custom-header1": "value1",
- "x-custom-header2": "value2"
}, - "createdAt": "2023-10-01T12:00:00Z",
- "updatedAt": "2023-10-02T12:00:00Z"
}| id required | integer >= 1 |
| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
{- "id": 1,
- "workspaceId": 1,
- "active": true,
- "eventType": "entry::received",
- "customHeaders": {
- "x-custom-header1": "value1",
- "x-custom-header2": "value2"
}, - "createdAt": "2023-10-01T12:00:00Z",
- "updatedAt": "2023-10-02T12:00:00Z"
}| id required | integer >= 1 |
| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
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. |
{- "active": true,
- "eventType": "entry::received",
- "customHeaders": {
- "x-custom-header1": "value1",
- "x-custom-header2": "value2"
}
}{- "id": 1,
- "workspaceId": 1,
- "active": true,
- "eventType": "entry::received",
- "customHeaders": {
- "x-custom-header1": "value1",
- "x-custom-header2": "value2"
}, - "createdAt": "2023-10-01T12:00:00Z",
- "updatedAt": "2023-10-02T12:00:00Z"
}| id required | integer >= 1 |
| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
{- "id": 1
}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.
This event is triggered when a new entry is received (e.g., a message from WhatsApp).
| 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. |
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 |
{- "eventType": "entry::received",
- "eventId": "d6703cc8-9e79-415d-ac03-a4dc7f6ab43c",
- "originalEventDate": "2019-08-24T14:15:22Z",
- "data": {
- "chat": {
- "id": "1",
- "channelId": "1",
- "contactId": "1",
- "contactHandle": "31612345678",
- "contactName": "John Doe",
- "assignedWorkspaceUserId": null,
- "assignedTeamId": null,
- "status": "open",
- "subject": "This is an optional chat subject",
- "isSpam": false,
- "snoozedUntil": "2025-10-01T12:00:00Z",
- "timestamp": "2025-10-01T12:00:00Z",
- "sortTimestamp": "2025-10-01T12:00:00Z",
- "lastMessageEntry": null,
- "topics": [
- {
- "id": "1",
- "workspaceId": "1",
- "name": "Support",
- "color": "#FF5733",
- "createdAt": "2025-10-01T12:00:00Z",
- "updatedAt": "2025-10-01T12:00:00Z"
}
], - "contact": {
- "id": 1,
- "workspaceId": 1,
- "firstName": "John",
- "lastName": "Doe",
- "emailAddresses": [
- "user+email1@example.com",
- "user+email2@example.com"
], - "phoneNumbers": [
- {
- "type": "mobile",
- "number": "+31612345678"
}, - {
- "type": "work",
- "number": "+31612345678"
}
], - "country": "nl",
- "reference": "12345",
- "isFavorite": true,
- "isBlocked": false,
- "createdAt": "2023-10-01T12:00:00Z",
- "updatedAt": "2023-10-01T12:00:00Z",
- "labels": [
- {
- "id": 1,
- "workspaceId": 1,
- "name": "VIP",
- "color": "#FF5733",
- "createdAt": "2023-10-01T12:00:00Z",
- "updatedAt": "2023-10-01T12:00:00Z"
}
]
}
}, - "entry": {
- "id": 1,
- "chatId": 1,
- "status": null,
- "statusReason": null,
- "direction": "in",
- "type": "text",
- "createdByType": "handle",
- "metadata": {
- "body": "I like to use SaySimple for my messaging needs!"
}, - "timestamp": "2023-10-01T12:00:00Z",
- "file": {
- "fileSize": 133742,
- "filePath": "saysimple/messages/202508/jpeg",
- "fileName": "f591b8f2-90a0-459b-91b8-f290a0b59b57.jpeg",
- "originalFileName": "image.jpeg"
}, - "workspaceUser": null,
- "parentEntry": {
- "id": 1,
- "chatId": 1,
- "status": "read",
- "statusReason": null,
- "direction": "out",
- "type": "text",
- "createdByType": "handle",
- "metadata": {
- "body": "Hi, can I help you?"
}, - "timestamp": "2023-10-01T12:00:00Z",
- "reactions": null
}, - "reactions": [
- {
- "emoji": "👍",
- "createdByType": "contact"
}, - {
- "emoji": "😃",
- "createdByType": "workspaceUser",
- "workspaceUserId": 1
}
]
}, - "originalEventData": { }
}
}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.
| 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. |
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 |
{- "eventType": "entry::sent",
- "eventId": "d6703cc8-9e79-415d-ac03-a4dc7f6ab43c",
- "originalEventDate": "2019-08-24T14:15:22Z",
- "data": {
- "chat": {
- "id": "1",
- "channelId": "1",
- "contactId": "1",
- "contactHandle": "31612345678",
- "contactName": "John Doe",
- "assignedWorkspaceUserId": null,
- "assignedTeamId": null,
- "status": "open",
- "subject": "This is an optional chat subject",
- "isSpam": false,
- "snoozedUntil": "2025-10-01T12:00:00Z",
- "timestamp": "2025-10-01T12:00:00Z",
- "sortTimestamp": "2025-10-01T12:00:00Z",
- "lastMessageEntry": null,
- "topics": [
- {
- "id": "1",
- "workspaceId": "1",
- "name": "Support",
- "color": "#FF5733",
- "createdAt": "2025-10-01T12:00:00Z",
- "updatedAt": "2025-10-01T12:00:00Z"
}
], - "contact": {
- "id": 1,
- "workspaceId": 1,
- "firstName": "John",
- "lastName": "Doe",
- "emailAddresses": [
- "user+email1@example.com",
- "user+email2@example.com"
], - "phoneNumbers": [
- {
- "type": "mobile",
- "number": "+31612345678"
}, - {
- "type": "work",
- "number": "+31612345678"
}
], - "country": "nl",
- "reference": "12345",
- "isFavorite": true,
- "isBlocked": false,
- "createdAt": "2023-10-01T12:00:00Z",
- "updatedAt": "2023-10-01T12:00:00Z",
- "labels": [
- {
- "id": 1,
- "workspaceId": 1,
- "name": "VIP",
- "color": "#FF5733",
- "createdAt": "2023-10-01T12:00:00Z",
- "updatedAt": "2023-10-01T12:00:00Z"
}
]
}
}, - "entry": {
- "id": 1,
- "chatId": 1,
- "status": "sent",
- "statusReason": null,
- "direction": "out",
- "type": "text",
- "createdByType": "handle",
- "metadata": {
- "body": "I like to use SaySimple for my messaging needs!"
}, - "timestamp": "2023-10-01T12:00:00Z",
- "file": {
- "fileSize": 133742,
- "filePath": "saysimple/messages/202508/jpeg",
- "fileName": "f591b8f2-90a0-459b-91b8-f290a0b59b57.jpeg",
- "originalFileName": "image.jpeg"
}, - "workspaceUser": null,
- "parentEntry": {
- "id": 1,
- "chatId": 1,
- "status": "read",
- "statusReason": null,
- "direction": "out",
- "type": "text",
- "createdByType": "handle",
- "metadata": {
- "body": "Hi, can I help you?"
}, - "timestamp": "2023-10-01T12:00:00Z",
- "reactions": null
}, - "reactions": [
- {
- "emoji": "👍",
- "createdByType": "contact"
}, - {
- "emoji": "😃",
- "createdByType": "workspaceUser",
- "workspaceUserId": 1
}
]
}, - "originalEventData": { }
}
}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).
| 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. |
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 |
{- "eventType": "entry::delivered",
- "eventId": "d6703cc8-9e79-415d-ac03-a4dc7f6ab43c",
- "originalEventDate": "2019-08-24T14:15:22Z",
- "data": {
- "chat": {
- "id": "1",
- "channelId": "1",
- "contactId": "1",
- "contactHandle": "31612345678",
- "contactName": "John Doe",
- "assignedWorkspaceUserId": null,
- "assignedTeamId": null,
- "status": "open",
- "subject": "This is an optional chat subject",
- "isSpam": false,
- "snoozedUntil": "2025-10-01T12:00:00Z",
- "timestamp": "2025-10-01T12:00:00Z",
- "sortTimestamp": "2025-10-01T12:00:00Z",
- "lastMessageEntry": null,
- "topics": [
- {
- "id": "1",
- "workspaceId": "1",
- "name": "Support",
- "color": "#FF5733",
- "createdAt": "2025-10-01T12:00:00Z",
- "updatedAt": "2025-10-01T12:00:00Z"
}
], - "contact": {
- "id": 1,
- "workspaceId": 1,
- "firstName": "John",
- "lastName": "Doe",
- "emailAddresses": [
- "user+email1@example.com",
- "user+email2@example.com"
], - "phoneNumbers": [
- {
- "type": "mobile",
- "number": "+31612345678"
}, - {
- "type": "work",
- "number": "+31612345678"
}
], - "country": "nl",
- "reference": "12345",
- "isFavorite": true,
- "isBlocked": false,
- "createdAt": "2023-10-01T12:00:00Z",
- "updatedAt": "2023-10-01T12:00:00Z",
- "labels": [
- {
- "id": 1,
- "workspaceId": 1,
- "name": "VIP",
- "color": "#FF5733",
- "createdAt": "2023-10-01T12:00:00Z",
- "updatedAt": "2023-10-01T12:00:00Z"
}
]
}
}, - "entry": {
- "id": 1,
- "chatId": 1,
- "status": "delivered",
- "statusReason": null,
- "direction": "out",
- "type": "text",
- "createdByType": "handle",
- "metadata": {
- "body": "I like to use SaySimple for my messaging needs!"
}, - "timestamp": "2023-10-01T12:00:00Z",
- "file": {
- "fileSize": 133742,
- "filePath": "saysimple/messages/202508/jpeg",
- "fileName": "f591b8f2-90a0-459b-91b8-f290a0b59b57.jpeg",
- "originalFileName": "image.jpeg"
}, - "workspaceUser": null,
- "parentEntry": {
- "id": 1,
- "chatId": 1,
- "status": "read",
- "statusReason": null,
- "direction": "out",
- "type": "text",
- "createdByType": "handle",
- "metadata": {
- "body": "Hi, can I help you?"
}, - "timestamp": "2023-10-01T12:00:00Z",
- "reactions": null
}, - "reactions": [
- {
- "emoji": "👍",
- "createdByType": "contact"
}, - {
- "emoji": "😃",
- "createdByType": "workspaceUser",
- "workspaceUserId": 1
}
]
}, - "originalEventData": { }
}
}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).
| 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. |
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 |
{- "eventType": "entry::read",
- "eventId": "d6703cc8-9e79-415d-ac03-a4dc7f6ab43c",
- "originalEventDate": "2019-08-24T14:15:22Z",
- "data": {
- "chat": {
- "id": "1",
- "channelId": "1",
- "contactId": "1",
- "contactHandle": "31612345678",
- "contactName": "John Doe",
- "assignedWorkspaceUserId": null,
- "assignedTeamId": null,
- "status": "open",
- "subject": "This is an optional chat subject",
- "isSpam": false,
- "snoozedUntil": "2025-10-01T12:00:00Z",
- "timestamp": "2025-10-01T12:00:00Z",
- "sortTimestamp": "2025-10-01T12:00:00Z",
- "lastMessageEntry": null,
- "topics": [
- {
- "id": "1",
- "workspaceId": "1",
- "name": "Support",
- "color": "#FF5733",
- "createdAt": "2025-10-01T12:00:00Z",
- "updatedAt": "2025-10-01T12:00:00Z"
}
], - "contact": {
- "id": 1,
- "workspaceId": 1,
- "firstName": "John",
- "lastName": "Doe",
- "emailAddresses": [
- "user+email1@example.com",
- "user+email2@example.com"
], - "phoneNumbers": [
- {
- "type": "mobile",
- "number": "+31612345678"
}, - {
- "type": "work",
- "number": "+31612345678"
}
], - "country": "nl",
- "reference": "12345",
- "isFavorite": true,
- "isBlocked": false,
- "createdAt": "2023-10-01T12:00:00Z",
- "updatedAt": "2023-10-01T12:00:00Z",
- "labels": [
- {
- "id": 1,
- "workspaceId": 1,
- "name": "VIP",
- "color": "#FF5733",
- "createdAt": "2023-10-01T12:00:00Z",
- "updatedAt": "2023-10-01T12:00:00Z"
}
]
}
}, - "entry": {
- "id": 1,
- "chatId": 1,
- "status": "read",
- "statusReason": null,
- "direction": "out",
- "type": "text",
- "createdByType": "handle",
- "metadata": {
- "body": "I like to use SaySimple for my messaging needs!"
}, - "timestamp": "2023-10-01T12:00:00Z",
- "file": {
- "fileSize": 133742,
- "filePath": "saysimple/messages/202508/jpeg",
- "fileName": "f591b8f2-90a0-459b-91b8-f290a0b59b57.jpeg",
- "originalFileName": "image.jpeg"
}, - "workspaceUser": null,
- "parentEntry": {
- "id": 1,
- "chatId": 1,
- "status": "read",
- "statusReason": null,
- "direction": "out",
- "type": "text",
- "createdByType": "handle",
- "metadata": {
- "body": "Hi, can I help you?"
}, - "timestamp": "2023-10-01T12:00:00Z",
- "reactions": null
}, - "reactions": [
- {
- "emoji": "👍",
- "createdByType": "contact"
}, - {
- "emoji": "😃",
- "createdByType": "workspaceUser",
- "workspaceUserId": 1
}
]
}, - "originalEventData": { }
}
}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).
| 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. |
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 |
{- "eventType": "entry::failed",
- "eventId": "d6703cc8-9e79-415d-ac03-a4dc7f6ab43c",
- "originalEventDate": "2019-08-24T14:15:22Z",
- "data": {
- "chat": {
- "id": "1",
- "channelId": "1",
- "contactId": "1",
- "contactHandle": "31612345678",
- "contactName": "John Doe",
- "assignedWorkspaceUserId": null,
- "assignedTeamId": null,
- "status": "open",
- "subject": "This is an optional chat subject",
- "isSpam": false,
- "snoozedUntil": "2025-10-01T12:00:00Z",
- "timestamp": "2025-10-01T12:00:00Z",
- "sortTimestamp": "2025-10-01T12:00:00Z",
- "lastMessageEntry": null,
- "topics": [
- {
- "id": "1",
- "workspaceId": "1",
- "name": "Support",
- "color": "#FF5733",
- "createdAt": "2025-10-01T12:00:00Z",
- "updatedAt": "2025-10-01T12:00:00Z"
}
], - "contact": {
- "id": 1,
- "workspaceId": 1,
- "firstName": "John",
- "lastName": "Doe",
- "emailAddresses": [
- "user+email1@example.com",
- "user+email2@example.com"
], - "phoneNumbers": [
- {
- "type": "mobile",
- "number": "+31612345678"
}, - {
- "type": "work",
- "number": "+31612345678"
}
], - "country": "nl",
- "reference": "12345",
- "isFavorite": true,
- "isBlocked": false,
- "createdAt": "2023-10-01T12:00:00Z",
- "updatedAt": "2023-10-01T12:00:00Z",
- "labels": [
- {
- "id": 1,
- "workspaceId": 1,
- "name": "VIP",
- "color": "#FF5733",
- "createdAt": "2023-10-01T12:00:00Z",
- "updatedAt": "2023-10-01T12:00:00Z"
}
]
}
}, - "entry": {
- "id": 1,
- "chatId": 1,
- "status": "failed",
- "statusReason": null,
- "direction": "out",
- "type": "text",
- "createdByType": "handle",
- "metadata": {
- "body": "I like to use SaySimple for my messaging needs!"
}, - "timestamp": "2023-10-01T12:00:00Z",
- "file": {
- "fileSize": 133742,
- "filePath": "saysimple/messages/202508/jpeg",
- "fileName": "f591b8f2-90a0-459b-91b8-f290a0b59b57.jpeg",
- "originalFileName": "image.jpeg"
}, - "workspaceUser": null,
- "parentEntry": {
- "id": 1,
- "chatId": 1,
- "status": "read",
- "statusReason": null,
- "direction": "out",
- "type": "text",
- "createdByType": "handle",
- "metadata": {
- "body": "Hi, can I help you?"
}, - "timestamp": "2023-10-01T12:00:00Z",
- "reactions": null
}, - "reactions": [
- {
- "emoji": "👍",
- "createdByType": "contact"
}, - {
- "emoji": "😃",
- "createdByType": "workspaceUser",
- "workspaceUserId": 1
}
]
}, - "originalEventData": { }
}
}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.
| 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. |
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 |
{- "eventType": "chat::created",
- "eventId": "d6703cc8-9e79-415d-ac03-a4dc7f6ab43c",
- "originalEventDate": "2019-08-24T14:15:22Z",
- "data": {
- "chat": {
- "id": "1",
- "channelId": "1",
- "contactId": "1",
- "contactHandle": "31612345678",
- "contactName": "John Doe",
- "assignedWorkspaceUserId": null,
- "assignedTeamId": null,
- "status": "open",
- "subject": "This is an optional chat subject",
- "isSpam": false,
- "snoozedUntil": "2025-10-01T12:00:00Z",
- "timestamp": "2025-10-01T12:00:00Z",
- "sortTimestamp": "2025-10-01T12:00:00Z",
- "lastMessageEntry": null,
- "topics": [
- {
- "id": "1",
- "workspaceId": "1",
- "name": "Support",
- "color": "#FF5733",
- "createdAt": "2025-10-01T12:00:00Z",
- "updatedAt": "2025-10-01T12:00:00Z"
}
], - "contact": {
- "id": 1,
- "workspaceId": 1,
- "firstName": "John",
- "lastName": "Doe",
- "emailAddresses": [
- "user+email1@example.com",
- "user+email2@example.com"
], - "phoneNumbers": [
- {
- "type": "mobile",
- "number": "+31612345678"
}, - {
- "type": "work",
- "number": "+31612345678"
}
], - "country": "nl",
- "reference": "12345",
- "isFavorite": true,
- "isBlocked": false,
- "createdAt": "2023-10-01T12:00:00Z",
- "updatedAt": "2023-10-01T12:00:00Z",
- "labels": [
- {
- "id": 1,
- "workspaceId": 1,
- "name": "VIP",
- "color": "#FF5733",
- "createdAt": "2023-10-01T12:00:00Z",
- "updatedAt": "2023-10-01T12:00:00Z"
}
]
}
}
}
}This event is triggered when a chat is (re)assigned to an agent or team.
| 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. |
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 |
{- "eventType": "chat::assigned",
- "eventId": "d6703cc8-9e79-415d-ac03-a4dc7f6ab43c",
- "originalEventDate": "2019-08-24T14:15:22Z",
- "data": {
- "chat": {
- "id": "1",
- "channelId": "1",
- "contactId": "1",
- "contactHandle": "31612345678",
- "contactName": "John Doe",
- "assignedWorkspaceUserId": 1,
- "assignedTeamId": 1,
- "status": "open",
- "subject": "This is an optional chat subject",
- "isSpam": false,
- "snoozedUntil": "2025-10-01T12:00:00Z",
- "timestamp": "2025-10-01T12:00:00Z",
- "sortTimestamp": "2025-10-01T12:00:00Z",
- "lastMessageEntry": null,
- "topics": [
- {
- "id": "1",
- "workspaceId": "1",
- "name": "Support",
- "color": "#FF5733",
- "createdAt": "2025-10-01T12:00:00Z",
- "updatedAt": "2025-10-01T12:00:00Z"
}
], - "contact": {
- "id": 1,
- "workspaceId": 1,
- "firstName": "John",
- "lastName": "Doe",
- "emailAddresses": [
- "user+email1@example.com",
- "user+email2@example.com"
], - "phoneNumbers": [
- {
- "type": "mobile",
- "number": "+31612345678"
}, - {
- "type": "work",
- "number": "+31612345678"
}
], - "country": "nl",
- "reference": "12345",
- "isFavorite": true,
- "isBlocked": false,
- "createdAt": "2023-10-01T12:00:00Z",
- "updatedAt": "2023-10-01T12:00:00Z",
- "labels": [
- {
- "id": 1,
- "workspaceId": 1,
- "name": "VIP",
- "color": "#FF5733",
- "createdAt": "2023-10-01T12:00:00Z",
- "updatedAt": "2023-10-01T12:00:00Z"
}
]
}
}
}
}This event is triggered when a chat is unassigned from an agent or team.
| 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. |
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 |
{- "eventType": "chat::unassigned",
- "eventId": "d6703cc8-9e79-415d-ac03-a4dc7f6ab43c",
- "originalEventDate": "2019-08-24T14:15:22Z",
- "data": {
- "chat": {
- "id": "1",
- "channelId": "1",
- "contactId": "1",
- "contactHandle": "31612345678",
- "contactName": "John Doe",
- "assignedWorkspaceUserId": null,
- "assignedTeamId": null,
- "status": "open",
- "subject": "This is an optional chat subject",
- "isSpam": false,
- "snoozedUntil": "2025-10-01T12:00:00Z",
- "timestamp": "2025-10-01T12:00:00Z",
- "sortTimestamp": "2025-10-01T12:00:00Z",
- "lastMessageEntry": null,
- "topics": [
- {
- "id": "1",
- "workspaceId": "1",
- "name": "Support",
- "color": "#FF5733",
- "createdAt": "2025-10-01T12:00:00Z",
- "updatedAt": "2025-10-01T12:00:00Z"
}
], - "contact": {
- "id": 1,
- "workspaceId": 1,
- "firstName": "John",
- "lastName": "Doe",
- "emailAddresses": [
- "user+email1@example.com",
- "user+email2@example.com"
], - "phoneNumbers": [
- {
- "type": "mobile",
- "number": "+31612345678"
}, - {
- "type": "work",
- "number": "+31612345678"
}
], - "country": "nl",
- "reference": "12345",
- "isFavorite": true,
- "isBlocked": false,
- "createdAt": "2023-10-01T12:00:00Z",
- "updatedAt": "2023-10-01T12:00:00Z",
- "labels": [
- {
- "id": 1,
- "workspaceId": 1,
- "name": "VIP",
- "color": "#FF5733",
- "createdAt": "2023-10-01T12:00:00Z",
- "updatedAt": "2023-10-01T12:00:00Z"
}
]
}
}
}
}This event is triggered when a chat is resolved.
| 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. |
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 |
{- "eventType": "chat::closed",
- "eventId": "d6703cc8-9e79-415d-ac03-a4dc7f6ab43c",
- "originalEventDate": "2019-08-24T14:15:22Z",
- "data": {
- "chat": {
- "id": "1",
- "channelId": "1",
- "contactId": "1",
- "contactHandle": "31612345678",
- "contactName": "John Doe",
- "assignedWorkspaceUserId": null,
- "assignedTeamId": null,
- "status": "closed",
- "subject": "This is an optional chat subject",
- "isSpam": false,
- "snoozedUntil": "2025-10-01T12:00:00Z",
- "timestamp": "2025-10-01T12:00:00Z",
- "sortTimestamp": "2025-10-01T12:00:00Z",
- "lastMessageEntry": null,
- "topics": [
- {
- "id": "1",
- "workspaceId": "1",
- "name": "Support",
- "color": "#FF5733",
- "createdAt": "2025-10-01T12:00:00Z",
- "updatedAt": "2025-10-01T12:00:00Z"
}
], - "contact": {
- "id": 1,
- "workspaceId": 1,
- "firstName": "John",
- "lastName": "Doe",
- "emailAddresses": [
- "user+email1@example.com",
- "user+email2@example.com"
], - "phoneNumbers": [
- {
- "type": "mobile",
- "number": "+31612345678"
}, - {
- "type": "work",
- "number": "+31612345678"
}
], - "country": "nl",
- "reference": "12345",
- "isFavorite": true,
- "isBlocked": false,
- "createdAt": "2023-10-01T12:00:00Z",
- "updatedAt": "2023-10-01T12:00:00Z",
- "labels": [
- {
- "id": 1,
- "workspaceId": 1,
- "name": "VIP",
- "color": "#FF5733",
- "createdAt": "2023-10-01T12:00:00Z",
- "updatedAt": "2023-10-01T12:00:00Z"
}
]
}
}
}
}This event is triggered when a chat is reopened.
| 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. |
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 |
{- "eventType": "chat::reopened",
- "eventId": "d6703cc8-9e79-415d-ac03-a4dc7f6ab43c",
- "originalEventDate": "2019-08-24T14:15:22Z",
- "data": {
- "chat": {
- "id": "1",
- "channelId": "1",
- "contactId": "1",
- "contactHandle": "31612345678",
- "contactName": "John Doe",
- "assignedWorkspaceUserId": null,
- "assignedTeamId": null,
- "status": "open",
- "subject": "This is an optional chat subject",
- "isSpam": false,
- "snoozedUntil": "2025-10-01T12:00:00Z",
- "timestamp": "2025-10-01T12:00:00Z",
- "sortTimestamp": "2025-10-01T12:00:00Z",
- "lastMessageEntry": null,
- "topics": [
- {
- "id": "1",
- "workspaceId": "1",
- "name": "Support",
- "color": "#FF5733",
- "createdAt": "2025-10-01T12:00:00Z",
- "updatedAt": "2025-10-01T12:00:00Z"
}
], - "contact": {
- "id": 1,
- "workspaceId": 1,
- "firstName": "John",
- "lastName": "Doe",
- "emailAddresses": [
- "user+email1@example.com",
- "user+email2@example.com"
], - "phoneNumbers": [
- {
- "type": "mobile",
- "number": "+31612345678"
}, - {
- "type": "work",
- "number": "+31612345678"
}
], - "country": "nl",
- "reference": "12345",
- "isFavorite": true,
- "isBlocked": false,
- "createdAt": "2023-10-01T12:00:00Z",
- "updatedAt": "2023-10-01T12:00:00Z",
- "labels": [
- {
- "id": 1,
- "workspaceId": 1,
- "name": "VIP",
- "color": "#FF5733",
- "createdAt": "2023-10-01T12:00:00Z",
- "updatedAt": "2023-10-01T12:00:00Z"
}
]
}
}
}
}This event is triggered when a new contact is created. New incoming messages does not create a contact automatically.
| 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. |
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 |
{- "eventType": "contact::created",
- "eventId": "d6703cc8-9e79-415d-ac03-a4dc7f6ab43c",
- "originalEventDate": "2019-08-24T14:15:22Z",
- "data": {
- "contact": {
- "id": 1,
- "workspaceId": 1,
- "firstName": "John",
- "lastName": "Doe",
- "emailAddresses": [
- "user+email1@example.com",
- "user+email2@example.com"
], - "phoneNumbers": [
- {
- "type": "mobile",
- "number": "+31612345678"
}, - {
- "type": "work",
- "number": "+31612345678"
}
], - "country": "nl",
- "reference": "12345",
- "isFavorite": true,
- "isBlocked": false,
- "createdAt": "2023-10-01T12:00:00Z",
- "updatedAt": "2023-10-01T12:00:00Z",
- "labels": [
- {
- "id": 1,
- "workspaceId": 1,
- "name": "VIP",
- "color": "#FF5733",
- "createdAt": "2023-10-01T12:00:00Z",
- "updatedAt": "2023-10-01T12:00:00Z"
}
]
}
}
}This event is triggered when an existing contact is updated.
| 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. |
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 |
{- "eventType": "contact::updated",
- "eventId": "d6703cc8-9e79-415d-ac03-a4dc7f6ab43c",
- "originalEventDate": "2019-08-24T14:15:22Z",
- "data": {
- "contact": {
- "id": 1,
- "workspaceId": 1,
- "firstName": "John",
- "lastName": "Doe",
- "emailAddresses": [
- "user+email1@example.com",
- "user+email2@example.com"
], - "phoneNumbers": [
- {
- "type": "mobile",
- "number": "+31612345678"
}, - {
- "type": "work",
- "number": "+31612345678"
}
], - "country": "nl",
- "reference": "12345",
- "isFavorite": true,
- "isBlocked": false,
- "createdAt": "2023-10-01T12:00:00Z",
- "updatedAt": "2023-10-01T12:00:00Z",
- "labels": [
- {
- "id": 1,
- "workspaceId": 1,
- "name": "VIP",
- "color": "#FF5733",
- "createdAt": "2023-10-01T12:00:00Z",
- "updatedAt": "2023-10-01T12:00:00Z"
}
]
}
}
}This event is triggered when an existing contact is deleted.
| 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. |
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 |
{- "eventType": "contact::deleted",
- "eventId": "d6703cc8-9e79-415d-ac03-a4dc7f6ab43c",
- "originalEventDate": "2019-08-24T14:15:22Z",
- "data": {
- "contact": {
- "contact": {
- "id": 1
}
}
}
}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.
| 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. |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
{- "data": [
- {
- "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": {
- "id": 1,
- "name": "Enterprise",
- "icon": "string",
- "infoText": "string"
}, - "licenseId": 1,
- "countryId": 1,
- "status": "activated",
- "updatedAt": "2025-10-01T12:00:00Z",
- "createdAt": "2025-10-01T12:00:00Z",
- "modulesSettings": {
- "apiModuleEnabled": true
}, - "workspaceUsers": [
- {
- "id": 1,
- "firstName": "John",
- "lastName": "Doe",
- "status": "activated",
- "role": "agent",
- "language": "nl",
- "profilePic": {
- "filePath": "saysimple/messages/202503/jpeg",
- "fileName": "f8090c09-5d1f-4aab-bf3b-f8b99ec22cc8.jpeg"
}, - "createdAt": "2023-01-01T00:00:00Z",
- "updatedAt": "2023-01-02T00:00:00Z",
- "email": "user@example.com",
- "userLoginId": 1,
- "teams": [
- {
- "id": 1,
- "name": "Support Team",
- "color": "#FF5733",
- "createdAt": "2023-10-01T12:00:00Z"
}
]
}
]
}
], - "count": 20,
- "total": 100,
- "page": 1,
- "pageCount": 5
}| id required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
{- "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": {
- "id": 1,
- "name": "Enterprise",
- "icon": "string",
- "infoText": "string"
}, - "licenseId": 1,
- "countryId": 1,
- "status": "activated",
- "updatedAt": "2025-10-01T12:00:00Z",
- "createdAt": "2025-10-01T12:00:00Z",
- "modulesSettings": {
- "apiModuleEnabled": true
}, - "workspaceUsers": [
- {
- "id": 1,
- "firstName": "John",
- "lastName": "Doe",
- "status": "activated",
- "role": "agent",
- "language": "nl",
- "profilePic": {
- "filePath": "saysimple/messages/202503/jpeg",
- "fileName": "f8090c09-5d1f-4aab-bf3b-f8b99ec22cc8.jpeg"
}, - "createdAt": "2023-01-01T00:00:00Z",
- "updatedAt": "2023-01-02T00:00:00Z",
- "email": "user@example.com",
- "userLoginId": 1,
- "teams": [
- {
- "id": 1,
- "name": "Support Team",
- "color": "#FF5733",
- "createdAt": "2023-10-01T12:00:00Z"
}
]
}
]
}| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
Body
null{- "webhookSecret": "d400944a25b044ed90ef6492ea3867dc"
}| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
{- "webhookSecret": "d400944a25b044ed90ef6492ea3867dc"
}| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
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 |
{- "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": {
- "id": 1
}, - "country": {
- "id": 1
}, - "modulesSettings": {
- "apiModuleEnabled": true
}
}{- "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": {
- "id": 1,
- "name": "Enterprise",
- "icon": "string",
- "infoText": "string"
}, - "licenseId": 1,
- "countryId": 1,
- "status": "activated",
- "updatedAt": "2025-10-01T12:00:00Z",
- "createdAt": "2025-10-01T12:00:00Z",
- "modulesSettings": {
- "apiModuleEnabled": true
}, - "workspaceUsers": [
- {
- "id": 1,
- "firstName": "John",
- "lastName": "Doe",
- "status": "activated",
- "role": "agent",
- "language": "nl",
- "profilePic": {
- "filePath": "saysimple/messages/202503/jpeg",
- "fileName": "f8090c09-5d1f-4aab-bf3b-f8b99ec22cc8.jpeg"
}, - "createdAt": "2023-01-01T00:00:00Z",
- "updatedAt": "2023-01-02T00:00:00Z",
- "email": "user@example.com",
- "userLoginId": 1,
- "teams": [
- {
- "id": 1,
- "name": "Support Team",
- "color": "#FF5733",
- "createdAt": "2023-10-01T12:00:00Z"
}
]
}
]
}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.
| workspaceId required | integer >= 1 |
| 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. |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
{- "data": [
- {
- "id": 1,
- "firstName": "John",
- "lastName": "Doe",
- "status": "activated",
- "role": "agent",
- "language": "nl",
- "profilePic": {
- "filePath": "saysimple/messages/202503/jpeg",
- "fileName": "f8090c09-5d1f-4aab-bf3b-f8b99ec22cc8.jpeg"
}, - "createdAt": "2023-01-01T00:00:00Z",
- "updatedAt": "2023-01-02T00:00:00Z",
- "email": "user@example.com",
- "userLoginId": 1,
- "teams": [
- {
- "id": 1,
- "name": "Support Team",
- "color": "#FF5733",
- "createdAt": "2023-10-01T12:00:00Z"
}
]
}
], - "count": 20,
- "total": 100,
- "page": 1,
- "pageCount": 5
}| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
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 |
{- "firstName": "John",
- "lastName": "Doe",
- "role": "agent",
- "language": "nl",
- "profilePic": {
- "filePath": "saysimple/messages/202503/jpeg",
- "fileName": "f8090c09-5d1f-4aab-bf3b-f8b99ec22cc8.jpeg"
}, - "email": "user@example.com",
- "teamIds": [
- 1,
- 2,
- 3
]
}{- "id": 1,
- "firstName": "John",
- "lastName": "Doe",
- "status": "activated",
- "role": "agent",
- "language": "nl",
- "profilePic": {
- "filePath": "saysimple/messages/202503/jpeg",
- "fileName": "f8090c09-5d1f-4aab-bf3b-f8b99ec22cc8.jpeg"
}, - "createdAt": "2023-01-01T00:00:00Z",
- "updatedAt": "2023-01-02T00:00:00Z",
- "email": "user@example.com",
- "userLoginId": 1,
- "teams": [
- {
- "id": 1,
- "name": "Support Team",
- "color": "#FF5733",
- "createdAt": "2023-10-01T12:00:00Z"
}
]
}| id required | integer >= 1 |
| workspaceId required | integer >= 1 |
| 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. |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
{- "id": 1,
- "firstName": "John",
- "lastName": "Doe",
- "status": "activated",
- "role": "agent",
- "language": "nl",
- "profilePic": {
- "filePath": "saysimple/messages/202503/jpeg",
- "fileName": "f8090c09-5d1f-4aab-bf3b-f8b99ec22cc8.jpeg"
}, - "createdAt": "2023-01-01T00:00:00Z",
- "updatedAt": "2023-01-02T00:00:00Z",
- "email": "user@example.com",
- "userLoginId": 1,
- "teams": [
- {
- "id": 1,
- "name": "Support Team",
- "color": "#FF5733",
- "createdAt": "2023-10-01T12:00:00Z"
}
]
}| id required | integer >= 1 |
| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
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 |
{- "firstName": "John",
- "lastName": "Doe",
- "status": "activated",
- "role": "agent",
- "language": "nl",
- "profilePic": "string"
}{- "id": 1,
- "firstName": "John",
- "lastName": "Doe",
- "status": "activated",
- "role": "agent",
- "language": "nl",
- "profilePic": {
- "filePath": "saysimple/messages/202503/jpeg",
- "fileName": "f8090c09-5d1f-4aab-bf3b-f8b99ec22cc8.jpeg"
}, - "createdAt": "2023-01-01T00:00:00Z",
- "updatedAt": "2023-01-02T00:00:00Z",
- "email": "user@example.com",
- "userLoginId": 1,
- "teams": [
- {
- "id": 1,
- "name": "Support Team",
- "color": "#FF5733",
- "createdAt": "2023-10-01T12:00:00Z"
}
]
}| id required | integer >= 1 |
| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
Body
| teamIds required | Array of integers Array of team IDs to add or remove the user from |
{- "teamIds": [
- 1,
- 2,
- 3
]
}{- "id": 1,
- "firstName": "John",
- "lastName": "Doe",
- "status": "activated",
- "role": "agent",
- "language": "nl",
- "profilePic": {
- "filePath": "saysimple/messages/202503/jpeg",
- "fileName": "f8090c09-5d1f-4aab-bf3b-f8b99ec22cc8.jpeg"
}, - "createdAt": "2023-01-01T00:00:00Z",
- "updatedAt": "2023-01-02T00:00:00Z",
- "email": "user@example.com",
- "userLoginId": 1,
- "teams": [
- {
- "id": 1,
- "name": "Support Team",
- "color": "#FF5733",
- "createdAt": "2023-10-01T12:00:00Z"
}
]
}| id required | integer >= 1 |
| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
Body
| teamIds required | Array of integers Array of team IDs to add or remove the user from |
{- "teamIds": [
- 1,
- 2,
- 3
]
}{- "id": 1,
- "firstName": "John",
- "lastName": "Doe",
- "status": "activated",
- "role": "agent",
- "language": "nl",
- "profilePic": {
- "filePath": "saysimple/messages/202503/jpeg",
- "fileName": "f8090c09-5d1f-4aab-bf3b-f8b99ec22cc8.jpeg"
}, - "createdAt": "2023-01-01T00:00:00Z",
- "updatedAt": "2023-01-02T00:00:00Z",
- "email": "user@example.com",
- "userLoginId": 1,
- "teams": [
- {
- "id": 1,
- "name": "Support Team",
- "color": "#FF5733",
- "createdAt": "2023-10-01T12:00:00Z"
}
]
}| workspaceId required | integer >= 1 |
| 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. |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
{- "data": [
- {
- "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": {
- "id": 1,
- "type": "waba",
- "metadata": {
- "wabaId": "112047008171337",
- "accessToken": "EAAONJ4cl..."
}, - "createdAt": "2023-10-01T12:00:00Z"
}, - "handle": "108721008524666",
- "status": "activated",
- "metadata": {
- "phoneNumber": "31612345678",
- "phoneNumberId": "108721008524666"
}, - "teams": [
- null
]
}
], - "count": 20,
- "total": 100,
- "page": 1,
- "pageCount": 5
}| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
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 |
{- "api_version": "string",
- "content": {
- "card": {
- "card_type": "string",
- "created_at": 0,
- "customer_id": "string",
- "expiry_month": 0,
- "expiry_year": 0,
- "funding_type": "string",
- "gateway": "string",
- "gateway_account_id": "string",
- "iin": "string",
- "ip_address": "string",
- "last4": "string",
- "masked_number": "string",
- "object": "card",
- "payment_source_id": "string",
- "resource_version": 0,
- "status": "string",
- "updated_at": 0
}, - "customer": {
- "allow_direct_debit": true,
- "auto_close_invoices": true,
- "auto_collection": "string",
- "card_status": "string",
- "channel": "string",
- "created_at": 0,
- "created_from_ip": "string",
- "deleted": true,
- "excess_payments": 0,
- "id": "string",
- "mrr": 0,
- "net_term_days": 0,
- "object": "customer",
- "payment_method": {
- "gateway": "string",
- "gateway_account_id": "string",
- "object": "payment_method",
- "reference_id": "string",
- "status": "string",
- "type": "string"
}, - "pii_cleared": "string",
- "preferred_currency_code": "string",
- "primary_payment_source_id": "string",
- "promotional_credits": 0,
- "refundable_credits": 0,
- "resource_version": 0,
- "taxability": "string",
- "unbilled_charges": 0,
- "updated_at": 0
}, - "invoice": {
- "adjustment_credit_notes": [
- null
], - "amount_adjusted": 0,
- "amount_due": 0,
- "amount_paid": 0,
- "amount_to_collect": 0,
- "applied_credits": [
- null
], - "base_currency_code": "string",
- "channel": "string",
- "credits_applied": 0,
- "currency_code": "string",
- "customer_id": "string",
- "date": 0,
- "deleted": true,
- "due_date": 0,
- "dunning_attempts": [
- null
], - "exchange_rate": 0,
- "first_invoice": true,
- "generated_at": 0,
- "has_advance_charges": true,
- "id": "string",
- "is_gifted": true,
- "issued_credit_notes": [
- null
], - "line_item_tiers": [
- {
- "ending_unit": 0,
- "line_item_id": "string",
- "object": "line_item_tier",
- "quantity_used": 0,
- "starting_unit": 0,
- "unit_amount": 0
}
], - "line_items": [
- {
- "amount": 0,
- "customer_id": "string",
- "date_from": 0,
- "date_to": 0,
- "description": "string",
- "discount_amount": 0,
- "entity_id": "string",
- "entity_type": "string",
- "id": "string",
- "is_taxed": true,
- "item_level_discount_amount": 0,
- "metered": true,
- "object": "line_item",
- "pricing_model": "string",
- "quantity": 0,
- "subscription_id": "string",
- "tax_amount": 0,
- "tax_exempt_reason": "string",
- "unit_amount": 0
}
], - "linked_orders": [
- null
], - "linked_payments": [
- {
- "applied_amount": 0,
- "applied_at": 0,
- "txn_amount": 0,
- "txn_date": 0,
- "txn_id": "string",
- "txn_status": "string"
}
], - "net_term_days": 0,
- "new_sales_amount": 0,
- "object": "invoice",
- "paid_at": 0,
- "price_type": "string",
- "recurring": true,
- "reference_transactions": [
- {
- "applied_amount": 0,
- "applied_at": 0,
- "txn_amount": 0,
- "txn_date": 0,
- "txn_id": "string",
- "txn_status": "string",
- "txn_type": "string"
}
], - "resource_version": 0,
- "round_off_amount": 0,
- "site_details_at_creation": {
- "organization_address": {
- "city": "string",
- "country_code": "string",
- "line1": "string",
- "organization_name": "string",
- "phone": "string",
- "state": "string",
- "website": "string",
- "zip": "string"
}, - "timezone": "string"
}, - "status": "string",
- "sub_total": 0,
- "subscription_id": "string",
- "tax": 0,
- "tax_origin": {
- "country": "string"
}, - "term_finalized": true,
- "total": 0,
- "updated_at": 0,
- "write_off_amount": 0
}, - "subscription": {
- "activated_at": 0,
- "auto_close_invoices": true,
- "billing_period": 0,
- "billing_period_unit": "string",
- "cf_main_contact_last_name": "string",
- "cf_main_contact_email": "string",
- "cf_main_contact_first_name": "string",
- "cf_main_contact_phone_number": "string",
- "cf_workspace_name": "string",
- "channel": "string",
- "charged_items": [
- {
- "item_price_id": "string",
- "last_charged_at": 0,
- "object": "charged_item"
}
], - "create_pending_invoices": true,
- "created_at": 0,
- "created_from_ip": "string",
- "currency_code": "string",
- "current_term_end": 0,
- "current_term_start": 0,
- "customer_id": "string",
- "deleted": true,
- "due_invoices_count": 0,
- "has_scheduled_advance_invoices": true,
- "has_scheduled_changes": true,
- "id": "string",
- "item_tiers": [
- {
- "ending_unit": 0,
- "item_price_id": "string",
- "object": "item_tier",
- "price": 0,
- "starting_unit": 0
}
], - "mrr": 0,
- "next_billing_at": 0,
- "object": "subscription",
- "resource_version": 0,
- "started_at": 0,
- "status": "string",
- "subscription_items": [
- {
- "amount": 0,
- "billing_period": 0,
- "billing_period_unit": "string",
- "current_term_end": 0,
- "current_term_start": 0,
- "free_quantity": 0,
- "item_price_id": "string",
- "item_type": "string",
- "next_billing_at": 0,
- "object": "subscription_item",
- "quantity": 0,
- "unit_price": 0,
- "metered_quantity": "string",
- "charge_on_event": "string",
- "charge_once": true
}
], - "updated_at": 0
}
}, - "event_type": "pending_invoice_created",
- "id": "string",
- "object": "event",
- "occurred_at": 0,
- "source": "string",
- "user": "string",
- "webhook_status": "string"
}{- "success": true,
- "message": "string",
- "workspaceId": 0
}| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
{- "channels": {
- "property1": {
- "newCount": 0,
- "allCount": 0,
- "assignedCount": 0
}, - "property2": {
- "newCount": 0,
- "allCount": 0,
- "assignedCount": 0
}
}, - "personal": {
- "myInboxCount": 0,
- "snoozedCount": 0
}
}| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
{- "filePath": "saysimple/messages/202503/jpeg",
- "fileName": "f8090c09-5d1f-4aab-bf3b-f8b99ec22cc8.jpeg",
}| workspaceId required | integer >= 1 |
| 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. |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
{- "signature": "string"
}| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
Body
| usedFlows required | integer >= 0 |
| sentAt required | string |
{- "usedFlows": 0,
- "sentAt": "string"
}{- "success": true,
- "message": "string"
}| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
Body
| newPlan required | string Enum: "start" "grow" "scale" The new plan to upgrade to. |
{- "newPlan": "scale"
}{- "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": [
- {
- "quantity": 5,
- "usedQuantity": 5,
- "productId": "users",
- "isMetered": true
}
]
}| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
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. |
{- "productId": "flow-builder-flows",
- "quantity": 1
}{- "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": {
- "id": 1,
- "name": "Enterprise",
- "icon": "string",
- "infoText": "string"
}, - "licenseId": 1,
- "countryId": 1,
- "status": "activated",
- "updatedAt": "2025-10-01T12:00:00Z",
- "createdAt": "2025-10-01T12:00:00Z",
- "modulesSettings": {
- "apiModuleEnabled": true
}, - "workspaceUsers": [
- {
- "id": 1,
- "firstName": "John",
- "lastName": "Doe",
- "status": "activated",
- "role": "agent",
- "language": "nl",
- "profilePic": {
- "filePath": "saysimple/messages/202503/jpeg",
- "fileName": "f8090c09-5d1f-4aab-bf3b-f8b99ec22cc8.jpeg"
}, - "createdAt": "2023-01-01T00:00:00Z",
- "updatedAt": "2023-01-02T00:00:00Z",
- "email": "user@example.com",
- "userLoginId": 1,
- "teams": [
- {
- "id": 1,
- "name": "Support Team",
- "color": "#FF5733",
- "createdAt": "2023-10-01T12:00:00Z"
}
]
}
]
}| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
{- "name": "Scale Plan",
- "description": "Scale Plan description",
- "productId": "scale",
- "price": 10000,
- "currencyCode": "eur",
- "period": 3,
- "periodUnit": "month",
- "addons": [
- {
- "productId": "users",
- "itemName": "Users",
- "itemPrice": {
- "pricingModel": "tiered",
- "period": 3,
- "currencyCode": "eur",
- "periodUnit": "month",
- "price": 10000,
- "tiers": [
- {
- "startingUnit": 1,
- "endingUnit": 5,
- "price": 9000
}
], - "metadata": {
- "quantity_meta": {
- "type": "range",
- "min": 0,
- "max": 0,
- "step": 0
}
}
}
}
], - "entitlements": [
- {
- "featureId": "contacts",
- "featureName": "Contacts",
- "value": "1000",
- "name": "1000 contacts"
}
]
}| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
[- {
- "name": "Scale Plan",
- "description": "Scale Plan description",
- "productId": "scale",
- "price": 10000,
- "currencyCode": "eur",
- "period": 3,
- "periodUnit": "month",
- "addons": [
- {
- "productId": "users",
- "itemName": "Users",
- "itemPrice": {
- "pricingModel": "tiered",
- "period": 3,
- "currencyCode": "eur",
- "periodUnit": "month",
- "price": 10000,
- "tiers": [
- {
- "startingUnit": 1,
- "endingUnit": 5,
- "price": 9000
}
], - "metadata": {
- "quantity_meta": {
- "type": "range",
- "min": 0,
- "max": 0,
- "step": 0
}
}
}
}
], - "entitlements": [
- {
- "featureId": "contacts",
- "featureName": "Contacts",
- "value": "1000",
- "name": "1000 contacts"
}
]
}
]| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
{- "billingAddress": {
- "city": "string",
- "company": "string",
- "country": "string",
- "email": "user@example.com",
- "first_name": "string",
- "last_name": "string",
- "line1": "string",
- "line2": "string",
- "line3": "string",
- "phone": "string",
- "zip": "string"
}, - "defaultPaymentSource": {
- "type": "card",
- "status": "valid",
- "gateway": "stripe",
- "card": {
- "firstName": "string",
- "lastName": "string",
- "brand": "visa",
- "last4": "4242",
- "expiry_month": 12,
- "expiry_year": 2025,
- "funding_type": "credit"
}, - "bank_account": {
- "first_name": "string",
- "last_name": "string",
- "last4": "1234",
- "name_on_account": "string",
- "direct_debit_scheme": "sepa",
- "bank_name": "string",
- "mandate_id": "string",
- "account_type": "checking",
- "echeck_type": "string",
- "account_holder_type": "individual"
}
}
}| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
{- "created_at": 1767784451,
- "customer_id": "Magdacompany",
- "expires_at": 1767788051,
- "id": "portal_BTU5l8V7cBP9VCHF",
- "linked_customers": [
- {
- "customer_id": "Magdacompany",
- "customer_name": "Magdacompany"
}
], - "object": "portal_session",
- "status": "created",
- "token": "4yxVvJ3WnCcuEpTntSfu3qi3jMN8Ali8w"
}| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
{- "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": [
- {
- "quantity": 5,
- "usedQuantity": 5,
- "productId": "users",
- "isMetered": true
}
]
}| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
Body
null{- "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": [
- {
- "quantity": 5,
- "usedQuantity": 5,
- "productId": "users",
- "isMetered": true
}
]
}| workspaceId required | integer >= 1 |
| invoiceId required | string |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
null| workspaceId required | integer >= 1 |
| pageSize | integer or null Default: 20 |
| cursorNext | string |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
{- "data": [
- {
- "id": "2025-313",
- "customerId": "11DBaRV0RfrUxDM0",
- "subscriptionId": "USAEXzV2BBbfU8A",
- "recurring": true,
- "status": "paid",
- "date": "2024-01-01T00:00:00Z",
- "dueDate": "2024-01-01T00:00:00Z",
- "poNumber": "1234567890",
- "currencyCode": "eur",
- "total": 10000
}
], - "cursor": {
- "after": "string"
}
}| workspaceId required | integer >= 1 |
| 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. |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
{- "data": [
- null
], - "count": 20,
- "total": 100,
- "page": 1,
- "pageCount": 5
}| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
{- "id": 1,
- "firstName": "John",
- "lastName": "Doe",
- "status": "activated",
- "language": "nl",
- "profilePic": {
- "filePath": "saysimple/messages/202503/jpeg",
- "fileName": "f8090c09-5d1f-4aab-bf3b-f8b99ec22cc8.jpeg"
}, - "createdAt": "2023-01-01T00:00:00Z",
- "updatedAt": "2023-01-02T00:00:00Z",
- "email": "user@example.com",
- "userLoginId": 1,
- "teams": [
- {
- "id": 1,
- "name": "Support Team",
- "color": "#FF5733",
- "createdAt": "2023-10-01T12:00:00Z"
}
], - "role": {
- "name": "read",
- "abilities": [
- {
- "subject": "accounts",
- "action": "manage",
- "conditions": {
- "property1": null,
- "property2": null
}
}
]
}, - "impersonatedBy": 5,
- "userLogin": {
- "id": 0,
- "email": "user@example.com"
}, - "userTeams": [
- null
], - "workspace": null
}| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
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 |
{- "firstName": "John",
- "lastName": "Doe",
- "status": "activated",
- "role": "agent",
- "language": "nl",
- "profilePic": "string"
}{- "id": 1,
- "firstName": "John",
- "lastName": "Doe",
- "status": "activated",
- "role": "agent",
- "language": "nl",
- "profilePic": {
- "filePath": "saysimple/messages/202503/jpeg",
- "fileName": "f8090c09-5d1f-4aab-bf3b-f8b99ec22cc8.jpeg"
}, - "createdAt": "2023-01-01T00:00:00Z",
- "updatedAt": "2023-01-02T00:00:00Z",
- "email": "user@example.com",
- "userLoginId": 1,
- "teams": [
- {
- "id": 1,
- "name": "Support Team",
- "color": "#FF5733",
- "createdAt": "2023-10-01T12:00:00Z"
}
]
}| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
{- "generalInboxVisible": true,
- "generalInboxVisibleCategories": [
- "all",
- "unassigned",
- "assigned"
], - "myInboxVisible": true,
- "myInboxVisibleCategories": [
- "all",
- "unassigned",
- "assigned"
], - "teamsInboxVisible": true,
- "teamsInboxVisibleIds": [
- 1,
- 2,
- 3
], - "topicsInboxVisible": true,
- "topicsInboxVisibleIds": [
- 1,
- 2,
- 3
], - "chatCategoryMapping": {
- "property1": [
- "all"
], - "property2": [
- "all"
]
}
}| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
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 |
{- "generalInboxVisible": true,
- "generalInboxVisibleCategories": [
- "all",
- "unassigned",
- "assigned"
], - "myInboxVisible": true,
- "myInboxVisibleCategories": [
- "all",
- "unassigned",
- "assigned"
], - "teamsInboxVisible": true,
- "teamsInboxVisibleIds": [
- 1,
- 2,
- 3
], - "topicsInboxVisible": true,
- "topicsInboxVisibleIds": [
- 1,
- 2,
- 3
]
}{- "generalInboxVisible": true,
- "generalInboxVisibleCategories": [
- "all",
- "unassigned",
- "assigned"
], - "myInboxVisible": true,
- "myInboxVisibleCategories": [
- "all",
- "unassigned",
- "assigned"
], - "teamsInboxVisible": true,
- "teamsInboxVisibleIds": [
- 1,
- 2,
- 3
], - "topicsInboxVisible": true,
- "topicsInboxVisibleIds": [
- 1,
- 2,
- 3
], - "chatCategoryMapping": {
- "property1": [
- "all"
], - "property2": [
- "all"
]
}
}| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
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 |
{- "currentPassword": "currentPassword123",
- "newPassword": "NewPassword123!"
}{- "success": true
}| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
{- "conversation:new": {
- "pushEnabled": true,
- "pushPlaySound": true,
- "emailEnabled": true
}, - "conversation:assigned": {
- "pushEnabled": true,
- "pushPlaySound": true,
- "emailEnabled": true
}, - "newMessage:assignedConversation": {
- "pushEnabled": true,
- "pushPlaySound": true,
- "emailEnabled": true
}, - "newMessage:unassignedConversation": {
- "pushEnabled": true,
- "pushPlaySound": true,
- "emailEnabled": true
}
}| workspaceId required | integer >= 1 |
| x-api-key | string |
| authorization | string |
| x-websocket-id | string WebSocket ID for real-time updates. Mostly unused. |
Body
object | |
object | |
object | |
object |
{- "conversation:new": {
- "pushEnabled": true,
- "pushPlaySound": true,
- "emailEnabled": true
}, - "conversation:assigned": {
- "pushEnabled": true,
- "pushPlaySound": true,
- "emailEnabled": true
}, - "newMessage:assignedConversation": {
- "pushEnabled": true,
- "pushPlaySound": true,
- "emailEnabled": true
}, - "newMessage:unassignedConversation": {
- "pushEnabled": true,
- "pushPlaySound": true,
- "emailEnabled": true
}
}{- "conversation:new": {
- "pushEnabled": true,
- "pushPlaySound": true,
- "emailEnabled": true
}, - "conversation:assigned": {
- "pushEnabled": true,
- "pushPlaySound": true,
- "emailEnabled": true
}, - "newMessage:assignedConversation": {
- "pushEnabled": true,
- "pushPlaySound": true,
- "emailEnabled": true
}, - "newMessage:unassignedConversation": {
- "pushEnabled": true,
- "pushPlaySound": true,
- "emailEnabled": true
}
}