Criar agendamento
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\"."
}
}Autorizações
Token da API no formato sk_live_….
Corpo
Canal de texto livre (web_whatsapp, web_whatsapp_premium): envie body.
Canal de WhatsApp oficial (whatsapp_business_account): envie template, porque o
primeiro contato exige um template aprovado. A API confere o nome e os parâmetros com os
templates do canal ao criar o agendamento, então um erro de template aparece na hora, antes do dia do envio.
Mídia: em canais de WhatsApp não oficial (web_whatsapp, web_whatsapp_premium), o
arquivo pode ser enviado junto, como multipart/form-data no campo file. Nesses canais o
arquivo é a própria mensagem e o body vira a legenda. Com anexo, o texto deixa de ser obrigatório.
Em canal oficial, o anexo só é aceito quando o template tem cabeçalho de mídia. Caso
contrário, a resposta é 400 ERR_API_TEMPLATE_MEDIA_NOT_ALLOWED, porque a Meta não aceita
anexo avulso.
Data e hora do envio, no formato ISO 8601. Precisa ser uma data futura.
Sem fuso, vale o fuso da sua empresa. 2026-09-15T09:00:00 envia às
nove da manhã no fuso configurado na empresa. Com fuso explícito
(2026-09-15T09:00:00-03:00) ou em UTC (Z), o valor é respeitado como
está.
"2026-09-15T09:00:00-03:00"
Contato ao qual este registro pertence.
1042
Canal por onde a conversa acontece. Veja os canais disponíveis em GET /channels.
4
Texto da mensagem. Use em canais de texto livre.
"Lembrete: sua consulta é amanhã às 14h."
Use em canais de WhatsApp oficial, no lugar de body.
Show child attributes
Show child attributes
{
"name": "confirmacao_pedido",
"parameters": { "body": ["Maria", "12345"] }
}
Id do usuário nesta empresa, o mesmo que GET /users devolve. A mesma pessoa tem um id diferente em cada empresa em que trabalha.
3
Fila de atendimento.
7
Resposta
Criado
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\"."
}
}
