Skip to main content
POST
/
campaigns
/
new
Criar e Disparar Campanha
curl --request POST \
  --url https://dash.superagentes.ai/api/campaigns/new \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "agentId": "<string>",
  "message": "<string>",
  "autoDispatch": true,
  "name": "<string>",
  "useAgentContacts": false,
  "manualPhoneNumbers": [
    "<string>"
  ]
}
'
import requests

url = "https://dash.superagentes.ai/api/campaigns/new"

payload = {
"agentId": "<string>",
"message": "<string>",
"autoDispatch": True,
"name": "<string>",
"useAgentContacts": False,
"manualPhoneNumbers": ["<string>"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.text)
const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
agentId: '<string>',
message: '<string>',
autoDispatch: true,
name: '<string>',
useAgentContacts: false,
manualPhoneNumbers: ['<string>']
})
};

fetch('https://dash.superagentes.ai/api/campaigns/new', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));
<?php

$curl = curl_init();

curl_setopt_array($curl, [
CURLOPT_URL => "https://dash.superagentes.ai/api/campaigns/new",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'agentId' => '<string>',
'message' => '<string>',
'autoDispatch' => true,
'name' => '<string>',
'useAgentContacts' => false,
'manualPhoneNumbers' => [
'<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
package main

import (
"fmt"
"strings"
"net/http"
"io"
)

func main() {

url := "https://dash.superagentes.ai/api/campaigns/new"

payload := strings.NewReader("{\n \"agentId\": \"<string>\",\n \"message\": \"<string>\",\n \"autoDispatch\": true,\n \"name\": \"<string>\",\n \"useAgentContacts\": false,\n \"manualPhoneNumbers\": [\n \"<string>\"\n ]\n}")

req, _ := http.NewRequest("POST", url, payload)

req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.post("https://dash.superagentes.ai/api/campaigns/new")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"agentId\": \"<string>\",\n \"message\": \"<string>\",\n \"autoDispatch\": true,\n \"name\": \"<string>\",\n \"useAgentContacts\": false,\n \"manualPhoneNumbers\": [\n \"<string>\"\n ]\n}")
.asString();
require 'uri'
require 'net/http'

url = URI("https://dash.superagentes.ai/api/campaigns/new")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"agentId\": \"<string>\",\n \"message\": \"<string>\",\n \"autoDispatch\": true,\n \"name\": \"<string>\",\n \"useAgentContacts\": false,\n \"manualPhoneNumbers\": [\n \"<string>\"\n ]\n}"

response = http.request(request)
puts response.read_body
{
  "id": "<string>",
  "name": "<string>",
  "message": "<string>",
  "startedAt": "2023-11-07T05:31:56Z",
  "usedPhoneNumbers": [
    "<string>"
  ],
  "manualPhoneNumbers": [
    "<string>"
  ],
  "agentId": "<string>"
}
{
"error": "<string>",
"details": "<string>"
}

Criar e Disparar Campanha

Crie e dispare uma nova campanha de mensagens via WhatsApp usando este endpoint.

Requisição

Headers

Content-Type: application/json
Authorization: Bearer seu_token_aqui

Parâmetros

CampoTipoObrigatórioDescriçãoExemplo
agentIdstringSimID do agente que fará o disparo”agent_123”
namestringNãoNome da campanha. Se não informado, será usado um nome padrão”Campanha de Marketing”
useAgentContactsbooleanNãoCUIDADO! Essa opção dispara para todos os contatos que conversaram com o agente. Padrão: falsefalse
manualPhoneNumbersstring[]NãoArray de números de telefone para disparo manual[“+5511999999999”]
preferredProviderstringNãoProvedor preferido para o disparo. Opções: “official”, “evolution”, “evolution-qr”, “z-api""evolution”
messagestringSimConteúdo da mensagem a ser enviada”Olá, esta é uma mensagem de teste”
autoDispatchbooleanSimDefine se a campanha será disparada automaticamente ou apenas criadatrue

Exemplo de Requisição

curl -X POST \
  'https://dash.superagentes.ai/api/campaigns/new' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer seu_token_aqui' \
  -d '{
    "agentId": "agent_123",
    "name": "Campanha de Marketing",
    "useAgentContacts": false,
    "manualPhoneNumbers": ["+5511999999999"],
    "preferredProvider": "evolution",
    "message": "Olá, esta é uma mensagem de teste",
    "autoDispatch": true
  }'

Resposta

Sucesso

{
  "id": "campaign_123",
  "name": "Campanha de Marketing",
  "status": "IN_PROGRESS",
  "message": "Olá, esta é uma mensagem de teste",
  "startedAt": "2024-03-21T10:00:00Z",
  "usedPhoneNumbers": [],
  "manualPhoneNumbers": ["+5511999999999"],
  "agentId": "agent_123"
}

Erro

{
  "error": "Mensagem de erro",
  "details": "Detalhes adicionais do erro (se disponíveis)"
}

Códigos de Status

  • 200: Sucesso
  • 400: Erro de validação ou dados inválidos
  • 401: Não autorizado (token inválido ou ausente)
  • 403: Proibido (sem permissão)
  • 404: Agente não encontrado
  • 500: Erro interno do servidor

Observações Importantes

  1. Provedor de WhatsApp
    • Se o preferredProvider especificado não estiver disponível, será usado o primeiro provedor conectado ao agente
    • O provedor deve estar ativo e configurado corretamente no agente
  2. Números de Telefone
    • Os números devem estar no formato internacional (ex: +5511999999999)
    • Se useAgentContacts for true, os contatos do agente serão incluídos no disparo
    • Números duplicados serão automaticamente removidos
  3. Disparo Automático
    • Se autoDispatch for false, a campanha será criada com status “DRAFT”
    • Se autoDispatch for true, a campanha será iniciada imediatamente
    • O disparo é feito de forma assíncrona com delay entre as mensagens
  4. Limitações
    • O sistema possui limites de taxa para evitar bloqueios
    • As mensagens são enviadas com delay para evitar bloqueios do WhatsApp
    • Em caso de falha, o sistema fará até 3 tentativas de envio

Exemplos de Uso

  1. Criar campanha sem disparar
curl -X POST \
  'https://dash.superagentes.ai/api/campaigns/new' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer seu_token_aqui' \
  -d '{
    "agentId": "agent_123",
    "message": "Mensagem de teste",
    "autoDispatch": false
  }'
  1. Disparar para números específicos
curl -X POST \
  'https://dash.superagentes.ai/api/campaigns/new' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer seu_token_aqui' \
  -d '{
    "agentId": "agent_123",
    "useAgentContacts": false,
    "manualPhoneNumbers": ["+5511999999999", "+5511888888888"],
    "message": "Mensagem de teste",
    "autoDispatch": true
  }'
  1. Usar provedor específico
curl -X POST \
  'https://dash.superagentes.ai/api/campaigns/new' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer seu_token_aqui' \
  -d '{
    "agentId": "agent_123",
    "preferredProvider": "z-api",
    "message": "Mensagem de teste",
    "autoDispatch": true
  }'

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Body

application/json
agentId
string
required

ID do agente que fará o disparo

message
string
required

Conteúdo da mensagem a ser enviada

autoDispatch
boolean
required

Define se a campanha será disparada automaticamente ou apenas criada

name
string

Nome da campanha. Se não informado, será usado um nome padrão

useAgentContacts
boolean
default:false

Define se deve usar os contatos do agente. Padrão: false

manualPhoneNumbers
string[]

Array de números de telefone para disparo manual

preferredProvider
enum<string>

Provedor preferido para o disparo

Available options:
official,
evolution,
evolution-qr,
z-api

Response

Sucesso

id
string

ID único da campanha

name
string

Nome da campanha

status
enum<string>

Status atual da campanha

Available options:
DRAFT,
IN_PROGRESS,
COMPLETED,
FAILED
message
string

Conteúdo da mensagem

startedAt
string<date-time>

Data e hora de início da campanha

usedPhoneNumbers
string[]

Números de telefone utilizados na campanha

manualPhoneNumbers
string[]

Números de telefone fornecidos manualmente

agentId
string

ID do agente responsável pela campanha