Criar uma campanha
Cria uma campanha de voz (bloco voice, com o agente) ou de texto (bloco text, com o canal oficial e o template), já com a lista se ela vier em contacts. Nasce em draft por padrão; scheduled ou active põe a campanha para ligar ou enviar, exige campaigns:execute, ao menos um contato aceito e o cliente sem bloqueio financeiro (402). Linhas com telefone inválido voltam em import.refused em vez de derrubar o pedido. A Idempotency-Key é obrigatória: uma retentativa depois de um timeout devolve a mesma campanha em vez de criar outra com a lista em dobro. Nome repetido no mesmo agente ou canal responde 409.
Autorização
bearer campaigns:writeCredencial da v3: o JWT da sessão (o mesmo da v2) ou um token pessoal dom_pat_…. A lista de escopos de cada operação diz o que ela exige: uma capacidade (agents:read), authenticated ou session-only. Segredo de máquina (X-Agent-Secret, X-API-Token, sdk_…) não é aceito.
Em: header
Escopo: campaigns:write
Parâmetros de cabeçalho
Chave de 1 a 255 caracteres ASCII visíveis, estável por intenção do usuário: a mesma chave numa retentativa devolve a primeira resposta em vez de repetir o efeito.
Corpo da requisição
application/json
Definições TypeScript
Use o tipo request body no TypeScript.
O corpo de POST /campaigns, discriminado por type (08 §4.3): o comum
(tenant_id, name, cadence_id, window, status, contacts) e o
bloco do tipo — voice numa campanha de voz, text numa de texto. O
bloco do outro tipo não casa com a variante (422).
Liga para cada contato por um agente de voz.
Corpo da resposta
application/json
application/json
curl -X POST "https://example.com/campaigns" \ -H "Idempotency-Key: b3f0c1e2-4a5b-4c6d-8e9f-0a1b2c3d4e5f" \ -H "Content-Type: application/json" \ -d '{ "cadence_id": "2dae81ce-ac29-4d7f-99da-5935c6305153", "name": "string", "type": "voice", "voice": { "agent_id": "2b1e3b65-2c04-4fa2-a2d7-467901e98978" } }'{ "campaign": { "cadence": { "agent_id": "2b1e3b65-2c04-4fa2-a2d7-467901e98978", "call_spacing_seconds": 0, "created_at": "2019-08-24T14:15:22Z", "description": "string", "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "max_attempts": 0, "name": "string", "retry_interval_seconds": 0, "tenant_id": 0, "updated_at": "2019-08-24T14:15:22Z" }, "counters": { "active": 0, "answered": 0, "completed": 0, "failed": 0, "pending": 0, "total": 0 }, "created_at": "2019-08-24T14:15:22Z", "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": "string", "next_attempt_at": "2019-08-24T14:15:22Z", "progress": 0, "status": "draft", "tenant_id": 0, "updated_at": "2019-08-24T14:15:22Z", "window": { "allowed_weekdays": [ 0 ], "daily_end_time": "string", "daily_start_time": "string", "end_at": "2019-08-24T14:15:22Z", "start_at": "2019-08-24T14:15:22Z", "timezone": "string" }, "type": "voice", "voice": { "agent_context_columns": [ "string" ], "agent_id": "2b1e3b65-2c04-4fa2-a2d7-467901e98978", "agent_task": "string", "source_file_name": "string" } }, "import": null}