Create scheduled message
curl --request POST \
--url https://api.connectadesk.com/api/v1/schedules \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"sendAt": "2026-09-15T09:00:00.000Z",
"contactId": 1042,
"channelId": 4,
"body": "Lembrete: sua consulta é amanhã às 14h."
}
'{
"data": {
"id": 318,
"body": "Oi {{name}}, sua reserva vence amanhã!",
"sendAt": "2026-08-20T13:00:00.000Z",
"sentAt": null,
"status": "pending",
"contact": {
"id": 842,
"name": "Maria Silva",
"number": "5511987654321",
"numberCountry": "BR",
"email": "maria.silva@exemplo.com.br",
"code": "CLI-00842",
"cpfCnpj": "12345678909",
"origin": "site",
"profilePicUrl": "https://cdn.exemplo.com/avatars/842.jpg",
"isGroup": false,
"instagramUsername": "maria.silva",
"lid": null,
"sourceUrl": "https://loja.exemplo.com.br/promo",
"sourceId": "23851234567890123",
"headline": "Coleção de inverno",
"mediaType": "image",
"mediaUrl": "https://cdn.exemplo.com/anuncios/inverno.jpg",
"utmSource": "instagram",
"utmMedium": "cpc",
"utmCampaign": "inverno-2026",
"utmId": "6543210987",
"fbclid": "IwAR0xYzAbC123",
"gclid": null,
"ctwaClid": null,
"tags": [
{
"id": 3,
"name": "Cliente VIP",
"color": "#6941C6"
}
],
"customFields": [
{
"key": "plano",
"value": "Ouro",
"customFieldId": 91,
"name": "Plano",
"type": "select"
}
],
"lastChannel": {
"id": 11,
"name": "Instagram Loja",
"type": "instagram"
},
"createdAt": "2026-07-14T13:22:05.412Z",
"updatedAt": "2026-08-18T09:41:17.883Z"
},
"user": {
"id": 3,
"name": "Gabriel Goulart"
},
"channelId": 11,
"mediaPath": null,
"mediaName": null,
"createdAt": "2026-08-18T15:10:00.000Z",
"updatedAt": "2026-08-18T15:10:00.000Z"
}
}{
"error": {
"code": "ERR_API_VALIDATION",
"message": "O parâmetro `application` é obrigatório e aceita \"contact\" ou \"card\"."
}
}Authorizations
API token in the sk_live_… format.
Body
Free-text channel (web_whatsapp, web_whatsapp_premium): send body.
Official WhatsApp channel (whatsapp_business_account): send template, because the
first contact requires an approved template. The API checks the name and parameters against the
channel's templates when the schedule is created, so a template error shows up right away, before the send date.
Media: on unofficial WhatsApp channels (web_whatsapp, web_whatsapp_premium), the
file can be sent along with the request, as multipart/form-data in the file field. On these channels the
file is the message itself and body becomes the caption. With an attachment, the text is no longer required.
On an official channel, an attachment is only accepted when the template has a media header. Otherwise
the response is 400 ERR_API_TEMPLATE_MEDIA_NOT_ALLOWED, because Meta does not accept
standalone attachments.
Date and time of the send, in ISO 8601. It must be a future date.
Without a time zone, your company's time zone applies. 2026-09-15T09:00:00 sends at
nine in the morning in the time zone set on the company. With an explicit offset
(2026-09-15T09:00:00-03:00) or in UTC (Z), the value is respected as it is.
"2026-09-15T09:00:00-03:00"
Contact this record belongs to.
1042
Channel where the conversation takes place. See the available channels at GET /channels.
4
Message text. Use on free-text channels.
"Lembrete: sua consulta é amanhã às 14h."
Use on official WhatsApp channels, instead of body.
Show child attributes
Show child attributes
{
"name": "confirmacao_pedido",
"parameters": { "body": ["Maria", "12345"] }
}
User id in this company, the same one GET /users returns. The same person has a different id in each company they work in.
3
Service queue.
7
Response
Created
Show child attributes
Show child attributes
{
"id": 318,
"body": "Oi {{name}}, sua reserva vence amanhã!",
"sendAt": "2026-08-20T13:00:00.000Z",
"sentAt": null,
"status": "pending",
"contact": {
"id": 842,
"name": "Maria Silva",
"number": "5511987654321",
"numberCountry": "BR",
"email": "maria.silva@exemplo.com.br",
"code": "CLI-00842",
"cpfCnpj": "12345678909",
"origin": "site",
"profilePicUrl": "https://cdn.exemplo.com/avatars/842.jpg",
"isGroup": false,
"instagramUsername": "maria.silva",
"lid": null,
"sourceUrl": "https://loja.exemplo.com.br/promo",
"sourceId": "23851234567890123",
"headline": "Coleção de inverno",
"mediaType": "image",
"mediaUrl": "https://cdn.exemplo.com/anuncios/inverno.jpg",
"utmSource": "instagram",
"utmMedium": "cpc",
"utmCampaign": "inverno-2026",
"utmId": "6543210987",
"fbclid": "IwAR0xYzAbC123",
"gclid": null,
"ctwaClid": null,
"tags": [
{
"id": 3,
"name": "Cliente VIP",
"color": "#6941C6"
}
],
"customFields": [
{
"key": "plano",
"value": "Ouro",
"customFieldId": 91,
"name": "Plano",
"type": "select"
}
],
"lastChannel": {
"id": 11,
"name": "Instagram Loja",
"type": "instagram"
},
"createdAt": "2026-07-14T13:22:05.412Z",
"updatedAt": "2026-08-18T09:41:17.883Z"
},
"user": { "id": 3, "name": "Gabriel Goulart" },
"channelId": 11,
"mediaPath": null,
"mediaName": null,
"createdAt": "2026-08-18T15:10:00.000Z",
"updatedAt": "2026-08-18T15:10:00.000Z"
}
curl --request POST \
--url https://api.connectadesk.com/api/v1/schedules \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"sendAt": "2026-09-15T09:00:00.000Z",
"contactId": 1042,
"channelId": 4,
"body": "Lembrete: sua consulta é amanhã às 14h."
}
'{
"data": {
"id": 318,
"body": "Oi {{name}}, sua reserva vence amanhã!",
"sendAt": "2026-08-20T13:00:00.000Z",
"sentAt": null,
"status": "pending",
"contact": {
"id": 842,
"name": "Maria Silva",
"number": "5511987654321",
"numberCountry": "BR",
"email": "maria.silva@exemplo.com.br",
"code": "CLI-00842",
"cpfCnpj": "12345678909",
"origin": "site",
"profilePicUrl": "https://cdn.exemplo.com/avatars/842.jpg",
"isGroup": false,
"instagramUsername": "maria.silva",
"lid": null,
"sourceUrl": "https://loja.exemplo.com.br/promo",
"sourceId": "23851234567890123",
"headline": "Coleção de inverno",
"mediaType": "image",
"mediaUrl": "https://cdn.exemplo.com/anuncios/inverno.jpg",
"utmSource": "instagram",
"utmMedium": "cpc",
"utmCampaign": "inverno-2026",
"utmId": "6543210987",
"fbclid": "IwAR0xYzAbC123",
"gclid": null,
"ctwaClid": null,
"tags": [
{
"id": 3,
"name": "Cliente VIP",
"color": "#6941C6"
}
],
"customFields": [
{
"key": "plano",
"value": "Ouro",
"customFieldId": 91,
"name": "Plano",
"type": "select"
}
],
"lastChannel": {
"id": 11,
"name": "Instagram Loja",
"type": "instagram"
},
"createdAt": "2026-07-14T13:22:05.412Z",
"updatedAt": "2026-08-18T09:41:17.883Z"
},
"user": {
"id": 3,
"name": "Gabriel Goulart"
},
"channelId": 11,
"mediaPath": null,
"mediaName": null,
"createdAt": "2026-08-18T15:10:00.000Z",
"updatedAt": "2026-08-18T15:10:00.000Z"
}
}{
"error": {
"code": "ERR_API_VALIDATION",
"message": "O parâmetro `application` é obrigatório e aceita \"contact\" ou \"card\"."
}
}
