Base URL
https://app.wessaal.com/integration/v1
Linked Devices documentation is live for developers. Official API integration is marked coming soon and is not reachable until its public contract is ready.
Base URL
https://app.wessaal.com/integration/v1
Authentication
X-API-Key
Platform Status
Live
Developer portal
Wessaal currently exposes the Linked Devices integration track. Official API integration content is marked as coming soon while the public contract is being finalized.
Live platform
Linked Devices
Base path
/integration/v1
Authentication
X-API-Key
API keys
Send the API key with every Linked Devices request. The backend middleware reads the authenticated key and enforces the permission required by the route group.
curl "https://app.wessaal.com/integration/v1/ping" \
-H "X-API-Key: sk_live_your_key"Recommended flow
Start with a health check, inspect the authenticated key, list available instances, then queue a message using an instance ID or instance_name.
Call GET /ping. A valid key returns success=true and message=pong.
Call GET /me to confirm the key owner and permissions.
Call GET /instances with manage_instances permission and pick an instance.
Call POST /messages/send with send_message permission.
Use GET /messages/{messageId}/status or GET /messages/{messageId}.
OpenAPI download
Download the Integration API v1 OpenAPI collection and import it into Postman, Insomnia, Bruno, or any OpenAPI-compatible client.
OpenAPI JSON
OpenAPI 3.0.1 collection with authentication, variables, examples, and endpoint schemas.
Production handling
Responses are JSON. Send endpoints return queued messages, validation failures return field-level errors, and policy or credit failures include an error_code when available.
Coming soon
Official integration is coming soon. The documentation, endpoint reference, request examples, and production access for this platform are intentionally unavailable right now.
Endpoint reference
These are the live Linked Devices routes. Permission names match the API key middleware scopes.
send_message
Queue one or more messages.
read_messages
Read message records and delivery status.
manage_instances
List and inspect connected sender instances.
manage_contacts
Create, update, read, and delete contacts.
manage_templates
Create and list message templates.
manage_workspaces
List and inspect workspaces.
Validate that the API key is accepted and the integration API is reachable.
Endpoint
https://app.wessaal.com/integration/v1/ping
curl -X GET "https://app.wessaal.com/integration/v1/ping" \
-H "X-API-Key: sk_live_your_key"Example response
{
"success": true,
"message": "pong",
"timestamp": "2026-06-02T09:30:00.000000Z"
}Return information about the authenticated API key, user, and assigned permissions.
Endpoint
https://app.wessaal.com/integration/v1/me
curl -X GET "https://app.wessaal.com/integration/v1/me" \
-H "X-API-Key: sk_live_your_key"Example response
{
"success": true,
"data": {}
}Queue a single text message. You can send direct content or use an approved text template owned by the authenticated user.
Endpoint
https://app.wessaal.com/integration/v1/messages/send
| Parameter | Type | Required | Description |
|---|---|---|---|
| instance | string | Yes | Instance ID or instance_name. |
| recipient | string | unless contact_id | E.164 phone number. |
| contact_id | integer | No | Existing contact ID. |
| content | string | unless template_id | Direct text content. |
| template_id | integer | unless content | Approved text template ID. |
| template_variables | object | No | Template placeholder overrides. |
| delay | integer | No | Optional delay in milliseconds. |
| quoted | object | No | Quoted message payload. |
| link_preview | boolean | No | Enable link preview. |
| mentions_everyone | boolean | No | Mention everyone in a group. |
| mentioned | array | No | List of JIDs to mention. |
curl -X POST "https://app.wessaal.com/integration/v1/messages/send" \
-H "X-API-Key: sk_live_your_key"
-H "Content-Type: application/json" \
-d '{
"instance": "main-whatsapp",
"recipient": "+966501234567",
"content": "Your appointment is confirmed.",
"link_preview": false
}'Example response
{
"success": true,
"message": "Message queued for sending",
"data": {
"message_id": 1245,
"status": "pending",
"type": "text",
"recipient": "+966501234567",
"queued_at": "2026-06-02T09:30:00.000000Z",
"instance": {
"id": 12,
"name": "main-whatsapp"
},
"template_used": false,
"content_type": "direct",
"message_type": "text",
"credits_charged": 1
}
}Queue up to 100 text messages in one request. Each item may use recipient or contact_id.
Endpoint
https://app.wessaal.com/integration/v1/messages/send-bulk
| Parameter | Type | Required | Description |
|---|---|---|---|
| instance | string | Yes | Instance ID or instance_name. |
| content | string | unless template_id | Shared direct text content. |
| template_id | integer | unless content | Shared approved text template. |
| template_variables | object | No | Shared template variables. |
| messages | array | Yes | 1 to 100 recipient objects. |
| messages.*.recipient | string | unless contact_id | Recipient phone number. |
| messages.*.contact_id | integer | No | Existing contact ID. |
| messages.*.template_variables | object | No | Per-recipient overrides. |
curl -X POST "https://app.wessaal.com/integration/v1/messages/send-bulk" \
-H "X-API-Key: sk_live_your_key"
-H "Content-Type: application/json" \
-d '{
"instance": "main-whatsapp",
"content": "Your monthly statement is ready.",
"messages": [
{
"recipient": "+966501234567"
},
{
"contact_id": 902,
"template_variables": {
"first_name": "Ahmad"
}
}
]
}'Example response
{
"success": true,
"message": "Bulk: 2 queued, 0 failed",
"data": {
"total": 2,
"success_count": 2,
"failure_count": 0,
"content_type": "direct",
"message_type": "text",
"results": [
{
"index": 0,
"recipient": "+966501234567",
"success": true,
"message_id": 1246,
"status": "pending"
},
{
"index": 1,
"recipient": "+966555987654",
"success": true,
"message_id": 1247,
"status": "pending"
}
]
}
}Read the delivery status for a message ID returned by a send endpoint.
Endpoint
https://app.wessaal.com/integration/v1/messages/{messageId}/status
| Parameter | Type | Required | Description |
|---|---|---|---|
| messageId | integer | Yes | Wessaal message ID. |
curl -X GET "https://app.wessaal.com/integration/v1/messages/{messageId}/status" \
-H "X-API-Key: sk_live_your_key"Example response
{
"success": true,
"data": {}
}List message records available to the authenticated user.
Endpoint
https://app.wessaal.com/integration/v1/messages
curl -X GET "https://app.wessaal.com/integration/v1/messages" \
-H "X-API-Key: sk_live_your_key"Example response
{
"success": true,
"data": {}
}Read a single message record by ID.
Endpoint
https://app.wessaal.com/integration/v1/messages/{messageId}
| Parameter | Type | Required | Description |
|---|---|---|---|
| messageId | integer | Yes | Wessaal message ID. |
curl -X GET "https://app.wessaal.com/integration/v1/messages/{messageId}" \
-H "X-API-Key: sk_live_your_key"Example response
{
"success": true,
"data": {}
}List connected WhatsApp sender instances available to the authenticated user.
Endpoint
https://app.wessaal.com/integration/v1/instances
curl -X GET "https://app.wessaal.com/integration/v1/instances" \
-H "X-API-Key: sk_live_your_key"Example response
{
"success": true,
"data": {}
}Inspect a single connected sender instance.
Endpoint
https://app.wessaal.com/integration/v1/instances/{instanceId}
| Parameter | Type | Required | Description |
|---|---|---|---|
| instanceId | integer|string | Yes | Instance ID. |
curl -X GET "https://app.wessaal.com/integration/v1/instances/{instanceId}" \
-H "X-API-Key: sk_live_your_key"Example response
{
"success": true,
"data": {}
}Read connection status for a connected sender instance.
Endpoint
https://app.wessaal.com/integration/v1/instances/{instanceId}/status
| Parameter | Type | Required | Description |
|---|---|---|---|
| instanceId | integer|string | Yes | Instance ID. |
curl -X GET "https://app.wessaal.com/integration/v1/instances/{instanceId}/status" \
-H "X-API-Key: sk_live_your_key"Example response
{
"success": true,
"data": {}
}List saved contacts for the authenticated user.
Endpoint
https://app.wessaal.com/integration/v1/contacts
curl -X GET "https://app.wessaal.com/integration/v1/contacts" \
-H "X-API-Key: sk_live_your_key"Example response
{
"success": true,
"data": {}
}Create a contact that can later be used with contact_id in send requests.
Endpoint
https://app.wessaal.com/integration/v1/contacts
curl -X POST "https://app.wessaal.com/integration/v1/contacts" \
-H "X-API-Key: sk_live_your_key"
-H "Content-Type: application/json" \
-d '{
"phone_number": "+966501234567",
"label": "Operations Manager",
"name": "Ahmad Saleh"
}'Example response
{
"success": true,
"data": {}
}Read one saved contact.
Endpoint
https://app.wessaal.com/integration/v1/contacts/{contactId}
| Parameter | Type | Required | Description |
|---|---|---|---|
| contactId | integer | Yes | Contact ID. |
curl -X GET "https://app.wessaal.com/integration/v1/contacts/{contactId}" \
-H "X-API-Key: sk_live_your_key"Example response
{
"success": true,
"data": {}
}Update a saved contact.
Endpoint
https://app.wessaal.com/integration/v1/contacts/{contactId}
| Parameter | Type | Required | Description |
|---|---|---|---|
| contactId | integer | Yes | Contact ID. |
curl -X PUT "https://app.wessaal.com/integration/v1/contacts/{contactId}" \
-H "X-API-Key: sk_live_your_key"
-H "Content-Type: application/json" \
-d '{
"label": "Billing Manager",
"name": "Ahmad Saleh"
}'Example response
{
"success": true,
"data": {}
}Delete a saved contact.
Endpoint
https://app.wessaal.com/integration/v1/contacts/{contactId}
| Parameter | Type | Required | Description |
|---|---|---|---|
| contactId | integer | Yes | Contact ID. |
curl -X DELETE "https://app.wessaal.com/integration/v1/contacts/{contactId}" \
-H "X-API-Key: sk_live_your_key"Example response
{
"success": true,
"data": {}
}Create a message template for later sending.
Endpoint
https://app.wessaal.com/integration/v1/templates
curl -X POST "https://app.wessaal.com/integration/v1/templates" \
-H "X-API-Key: sk_live_your_key"
-H "Content-Type: application/json" \
-d '{
"name": "appointment_confirmed",
"message_type": "text",
"content": "Hello {{first_name}}, your appointment is confirmed."
}'Example response
{
"success": true,
"data": {}
}List templates available to the authenticated user.
Endpoint
https://app.wessaal.com/integration/v1/templates
curl -X GET "https://app.wessaal.com/integration/v1/templates" \
-H "X-API-Key: sk_live_your_key"Example response
{
"success": true,
"data": {}
}List workspaces owned by or available to the authenticated user.
Endpoint
https://app.wessaal.com/integration/v1/workspaces
curl -X GET "https://app.wessaal.com/integration/v1/workspaces" \
-H "X-API-Key: sk_live_your_key"Example response
{
"success": true,
"data": {}
}Read a single workspace.
Endpoint
https://app.wessaal.com/integration/v1/workspaces/{workspaceId}
| Parameter | Type | Required | Description |
|---|---|---|---|
| workspaceId | integer | Yes | Workspace ID. |
curl -X GET "https://app.wessaal.com/integration/v1/workspaces/{workspaceId}" \
-H "X-API-Key: sk_live_your_key"Example response
{
"success": true,
"data": {}
}