Criar conta grátis

Referência da API

Jornadas

Crie jornadas em rascunho, teste com um contato, ative, pause ou arquive, ponha contatos nelas e acompanhe as execuções e os números de cada passo.

  • 15 operações
  • URL basehttps://api.messages.ccxcompany.co
  • AutenticaçãoBearer com a sua chave de API

O texto técnico abaixo vem do contrato público, o openapi.json, no idioma em que o contrato foi escrito.

Lista as jornadas

GET/v2/journeys

Jornadas da organização, da mais nova para a mais antiga, sem o grafo (passos) — para ele, GET /v2/journeys/{id}. Até 200 jornadas não arquivadas por organização. Permissão: campaigns:read.

Respostas

  • 200Default Response

    Campos e exemplo da resposta
    CampoTipoDescrição
    itemsobrigatórioobject[]
    items[].idobrigatóriostring
    items[].nameobrigatóriostring
    items[].statusobrigatóriostringValores:rascunhoativapausadaarquivada
    items[].gatilhoobrigatórioobject
    items[].gatilho.tipoopcionalstringValores:segmento
    items[].gatilho.listIdopcionalstring
    items[].gatilho.nomeopcionalstring
    items[].gatilho.segmentIdopcionalstring
    items[].reentradaobrigatóriostringValores:nuncaapos_concluir
    items[].intervaloReentradaHorasopcionalinteger
    items[].execucoesopcionalobject
    items[].execucoes.ativaobrigatóriointeger
    items[].execucoes.concluidaobrigatóriointeger
    items[].execucoes.canceladaobrigatóriointeger
    items[].execucoes.erroobrigatóriointeger
    items[].pausadaPoropcionalobject
    items[].pausadaPor.motivoobrigatóriostring
    items[].pausadaPor.passoobrigatóriostring
    items[].pausadaPor.emobrigatóriostring
    items[].pausadaPor.rotuloopcionalstring
    items[].ativadaEmopcionalstring
    items[].silencioopcionalobject
    items[].silencio.inicioobrigatóriostring
    items[].silencio.fimobrigatóriostring
    items[].tetoDeFrequenciaopcionalobject
    items[].tetoDeFrequencia.mensagensobrigatóriointeger
    items[].tetoDeFrequencia.diasobrigatóriointeger
    items[].metaopcionalobject
    items[].meta.eventoobrigatóriostring
    items[].versaoopcionalinteger
    items[].versaoDeopcionalstring
    items[].substituidaPoropcionalstring
    items[].entradasEncerradasopcionalboolean
    items[].createdAtobrigatóriostring
    items[].updatedAtobrigatóriostring
    items[].canaisobrigatóriostring[]
    items[].fluxoobrigatóriostring[]
    items[].metaEventoopcionalstring
    items[].listaopcionalobject
    items[].lista.nomeobrigatóriostring
    items[].lista.tamanhoobrigatóriointeger
    items[].segmentoopcionalobject
    items[].segmento.nomeobrigatóriostring
    JSON
    {  "items": [    {      "id": "string",      "name": "string",      "status": "rascunho",      "gatilho": {        "tipo": "lista",        "listId": "string"      },      "reentrada": "nunca",      "intervaloReentradaHoras": 0,      "execucoes": {        "ativa": 0,        "concluida": 0,        "cancelada": 0,        "erro": 0      },      "pausadaPor": {        "motivo": "string",        "passo": "string",        "em": "string",        "rotulo": "string"      },      "ativadaEm": "string",      "silencio": {        "inicio": "string",        "fim": "string"      },      "tetoDeFrequencia": {        "mensagens": 1,        "dias": 1      },      "meta": {        "evento": "string"      },      "versao": 1,      "versaoDe": "string",      "substituidaPor": "string",      "entradasEncerradas": true,      "createdAt": "string",      "updatedAt": "string",      "canais": [        "whatsapp"      ],      "fluxo": [        "gatilho"      ],      "metaEvento": "string",      "lista": {        "nome": "string",        "tamanho": 0      },      "segmento": {        "nome": "string"      }    }  ]}
  • 401RFC 7807 problem details for UNAUTHORIZED (401).

  • 403RFC 7807 problem details for FORBIDDEN (403).

As respostas de erro seguem o formato RFC 7807 (application/problem+json), com um código estável no campo code. Ver os códigos de erro

Exemplo em curl

cURL
curl 'https://api.messages.ccxcompany.co/v2/journeys' \  -H "Authorization: Bearer $CCX_API_KEY"
Só os campos obrigatórios. Troque os valores de exemplo pelos seus.

Cria uma jornada (em rascunho)

POST/v2/journeys

Uma jornada põe contatos numa sequência de passos. Nasce em rascunho e só envia depois de POST …/activate.

Gatilho (gatilho): lista (membros de uma lista estática — cada um entra uma vez), evento (cada POST /v2/events NOVO, de chave de produção, com esse nome e contato, ocorrido depois da ativação e há menos de 72 h) ou api (POST …/entries).

Passos (passos, até 50, sem ciclo):

  • enviar — WhatsApp (template aprovado + numberId), SMS (smsRoute, padrão premium) ou e-mail. variaveis diz de onde sai cada {{n}}: contato (campo do cadastro), entrada (dado da entrada: properties do evento ou dados do POST …/entries) ou fixo. Envio que não dá para montar (sem telefone, variável vazia, template indisponível) é pulado — nada sai quebrado — e a jornada segue.
  • esperar — de 1 minuto a 90 dias.
  • condicao — desvia pelo desfecho de um envio anterior dentro de janelaMinutos, contada a partir do DISPARO: entregue, lido e respondeu (WhatsApp), entregue (SMS) ou converteu (evento do cliente com o nome em evento, qualquer canal). O "não" nunca sai com o envio original ainda na fila: ou ele é recolhido, ou a condição espera. Envio que talvez tenha saído (o provedor não confirmou) não dispara o plano B.
  • webhook — avisa um sistema seu (ex.: a agenda do vendedor) que o contato chegou a este ponto: POST assinado (X-CCX-Signature, o segredo da assinatura) para uma assinatura cadastrada em Webhooks (webhookId, ativa, com os cabeçalhos próprios dela), evento journey.action, corpo com a jornada, o contato (id, externalId) e os dados da entrada — sem nome, telefone ou e-mail. X-CCX-Idempotency-Key = execução:passo. 2xx segue o proximo; 5xx/429/rede tenta de novo até 3 vezes; 4xx ou esgotado segue seFalhar (padrão: proximo).
  • fim.

Opt-out cancela a execução do contato: a jornada não segue para outro canal.

Reentrada: nunca (padrão) ou apos_concluir, com intervaloReentradaHoras mínimo entre duas entradas do mesmo contato (padrão 24).

Grafo com problema (passo sem saída, template sem variável mapeada…) é recusado com 422. Com ?permitirProblemas=true o rascunho é salvo assim mesmo e a resposta lista o que falta em problemas — a ativação continua recusando enquanto houver algum. Permissão: campaigns:write.

Parâmetros

CampoOndeTipoDescrição
permitirProblemasopcionalquerystringValores:truefalse

Corpo da requisiçãoapplication/json

CampoTipoDescrição
nameobrigatóriostring
gatilhoobrigatórioobject
gatilho.tipoopcionalstringValores:segmento
gatilho.listIdopcionalstring
gatilho.nomeopcionalstring
gatilho.segmentIdopcionalstring
inicioobrigatóriostring
passosobrigatórioobject[]
passos[].idopcionalstring
passos[].tipoopcionalstringValores:fim
passos[].canalopcionalstringValores:whatsappsmsemailrcs
passos[].templateIdopcionalstring
passos[].numberIdopcionalstring
passos[].smsRouteopcionalstringValores:premiumotp
passos[].rcsopcionalobject
passos[].rcs.conteudoobrigatórioobject
passos[].rcs.fallbackopcionalobject
passos[].rcs.rotaopcionalstringValores:easy_rcseasy_otp_rcs
passos[].variaveisopcionalobject
passos[].proximoopcionalstring
passos[].minutosopcionalinteger
passos[].sobreopcionalstring
passos[].sinalopcionalstringValores:entreguelidoclicourespondeuconverteu
passos[].eventoopcionalstring
passos[].janelaMinutosopcionalinteger
passos[].simopcionalstring
passos[].naoopcionalstring
passos[].webhookIdopcionalstring
passos[].seFalharopcionalstring
passos[].diasopcionalinteger[]
passos[].horaopcionalstring
passos[].ramosopcionalobject[]
passos[].ramos[].nomeobrigatóriostring
passos[].ramos[].pesoobrigatóriointeger
passos[].ramos[].proximoobrigatóriostring
passos[].campoopcionalstring
passos[].operadoropcionalstringValores:igualdiferentecontemexistenao_existemaiormenor
passos[].valoropcionalstring
reentradaopcionalstringValores:nuncaapos_concluirPadrão:nunca
intervaloReentradaHorasopcionalinteger
silencioopcionalobject
silencio.inicioobrigatóriostring
silencio.fimobrigatóriostring
tetoDeFrequenciaopcionalobject
tetoDeFrequencia.mensagensobrigatóriointeger
tetoDeFrequencia.diasobrigatóriointeger
metaopcionalobject
meta.eventoobrigatóriostring
Exemplo completo do corpo
JSON
{  "name": "string",  "gatilho": {    "tipo": "lista",    "listId": "string"  },  "inicio": "string",  "passos": [    {      "id": "string",      "tipo": "enviar",      "canal": "whatsapp",      "templateId": "string",      "numberId": "string",      "smsRoute": "premium",      "rcs": {        "conteudo": {          "text": "string"        },        "fallback": {          "text": "string"        },        "rota": "easy_rcs"      },      "variaveis": {},      "proximo": "string"    }  ],  "reentrada": "nunca",  "intervaloReentradaHoras": 1,  "silencio": {    "inicio": "string",    "fim": "string"  },  "tetoDeFrequencia": {    "mensagens": 1,    "dias": 1  },  "meta": {    "evento": "string"  }}

Respostas

  • 201Default Response

    Campos e exemplo da resposta
    CampoTipoDescrição
    idobrigatóriostring
    nameobrigatóriostring
    statusobrigatóriostringValores:rascunhoativapausadaarquivada
    gatilhoobrigatórioobject
    gatilho.tipoopcionalstringValores:segmento
    gatilho.listIdopcionalstring
    gatilho.nomeopcionalstring
    gatilho.segmentIdopcionalstring
    inicioobrigatóriostring
    passosobrigatórioobject[]
    passos[].idopcionalstring
    passos[].tipoopcionalstringValores:fim
    passos[].canalopcionalstringValores:whatsappsmsemailrcs
    passos[].templateIdopcionalstring
    passos[].numberIdopcionalstring
    passos[].smsRouteopcionalstringValores:premiumotp
    passos[].rcsopcionalobject
    passos[].rcs.conteudoobrigatórioobject
    passos[].rcs.fallbackopcionalobject
    passos[].rcs.rotaopcionalstringValores:easy_rcseasy_otp_rcs
    passos[].variaveisopcionalobject
    passos[].proximoopcionalstring
    passos[].minutosopcionalinteger
    passos[].sobreopcionalstring
    passos[].sinalopcionalstringValores:entreguelidoclicourespondeuconverteu
    passos[].eventoopcionalstring
    passos[].janelaMinutosopcionalinteger
    passos[].simopcionalstring
    passos[].naoopcionalstring
    passos[].webhookIdopcionalstring
    passos[].seFalharopcionalstring
    passos[].diasopcionalinteger[]
    passos[].horaopcionalstring
    passos[].ramosopcionalobject[]
    passos[].ramos[].nomeobrigatóriostring
    passos[].ramos[].pesoobrigatóriointeger
    passos[].ramos[].proximoobrigatóriostring
    passos[].campoopcionalstring
    passos[].operadoropcionalstringValores:igualdiferentecontemexistenao_existemaiormenor
    passos[].valoropcionalstring
    reentradaobrigatóriostringValores:nuncaapos_concluir
    intervaloReentradaHorasopcionalinteger
    execucoesopcionalobject
    execucoes.ativaobrigatóriointeger
    execucoes.concluidaobrigatóriointeger
    execucoes.canceladaobrigatóriointeger
    execucoes.erroobrigatóriointeger
    pausadaPoropcionalobject
    pausadaPor.motivoobrigatóriostring
    pausadaPor.passoobrigatóriostring
    pausadaPor.emobrigatóriostring
    pausadaPor.rotuloopcionalstring
    ativadaEmopcionalstring
    silencioopcionalobject
    silencio.inicioobrigatóriostring
    silencio.fimobrigatóriostring
    tetoDeFrequenciaopcionalobject
    tetoDeFrequencia.mensagensobrigatóriointeger
    tetoDeFrequencia.diasobrigatóriointeger
    metaopcionalobject

    Mais 8 campos no openapi.json.

    JSON
    {  "id": "string",  "name": "string",  "status": "rascunho",  "gatilho": {    "tipo": "lista",    "listId": "string"  },  "inicio": "string",  "passos": [    {      "id": "string",      "tipo": "enviar",      "canal": "whatsapp",      "templateId": "string",      "numberId": "string",      "smsRoute": "premium",      "rcs": {        "conteudo": {          "text": "string"        },        "fallback": {          "text": "string"        },        "rota": "easy_rcs"      },      "variaveis": {},      "proximo": "string"    }  ],  "reentrada": "nunca",  "intervaloReentradaHoras": 0,  "execucoes": {    "ativa": 0,    "concluida": 0,    "cancelada": 0,    "erro": 0  },  "pausadaPor": {    "motivo": "string",    "passo": "string",    "em": "string",    "rotulo": "string"  },  "ativadaEm": "string",  "silencio": {    "inicio": "string",    "fim": "string"  },  "tetoDeFrequencia": {    "mensagens": 1,    "dias": 1  },  "meta": {    "evento": "string"  },  "versao": 1,  "versaoDe": "string",  "substituidaPor": "string",  "entradasEncerradas": true,  "problemas": [    "string"  ],  "createdAt": "string",  "updatedAt": "string"}
  • 400RFC 7807 problem details for BAD_REQUEST (400).

  • 401RFC 7807 problem details for UNAUTHORIZED (401).

  • 403RFC 7807 problem details for FORBIDDEN (403).

  • 404RFC 7807 problem details for NOT_FOUND (404).

  • 409RFC 7807 problem details for CONFLICT (409).

  • 412RFC 7807 problem details for PRECONDITION_FAILED (412).

  • 422RFC 7807 problem details for VALIDATION_ERROR (422).

As respostas de erro seguem o formato RFC 7807 (application/problem+json), com um código estável no campo code. Ver os códigos de erro

Exemplo em curl

cURL
curl -X POST 'https://api.messages.ccxcompany.co/v2/journeys' \  -H "Authorization: Bearer $CCX_API_KEY" \  -H "Idempotency-Key: order-4821" \  -H "Content-Type: application/json" \  -d '{    "name": "string",    "gatilho": {      "tipo": "lista",      "listId": "string"    },    "inicio": "string",    "passos": [      {        "id": "string",        "tipo": "enviar",        "canal": "whatsapp"      }    ]  }'
Só os campos obrigatórios. Troque os valores de exemplo pelos seus.

Uma jornada, com a contagem das execuções

GET/v2/journeys/{id}

execucoes: quantos contatos estão em curso (ativa), concluíram, foram cancelados (opt-out, arquivamento) ou deram erro. Permissão: campaigns:read.

Parâmetros

CampoOndeTipoDescrição
idobrigatóriocaminhostring

Respostas

  • 200Default Response

    Campos e exemplo da resposta
    CampoTipoDescrição
    idobrigatóriostring
    nameobrigatóriostring
    statusobrigatóriostringValores:rascunhoativapausadaarquivada
    gatilhoobrigatórioobject
    gatilho.tipoopcionalstringValores:segmento
    gatilho.listIdopcionalstring
    gatilho.nomeopcionalstring
    gatilho.segmentIdopcionalstring
    inicioobrigatóriostring
    passosobrigatórioobject[]
    passos[].idopcionalstring
    passos[].tipoopcionalstringValores:fim
    passos[].canalopcionalstringValores:whatsappsmsemailrcs
    passos[].templateIdopcionalstring
    passos[].numberIdopcionalstring
    passos[].smsRouteopcionalstringValores:premiumotp
    passos[].rcsopcionalobject
    passos[].rcs.conteudoobrigatórioobject
    passos[].rcs.fallbackopcionalobject
    passos[].rcs.rotaopcionalstringValores:easy_rcseasy_otp_rcs
    passos[].variaveisopcionalobject
    passos[].proximoopcionalstring
    passos[].minutosopcionalinteger
    passos[].sobreopcionalstring
    passos[].sinalopcionalstringValores:entreguelidoclicourespondeuconverteu
    passos[].eventoopcionalstring
    passos[].janelaMinutosopcionalinteger
    passos[].simopcionalstring
    passos[].naoopcionalstring
    passos[].webhookIdopcionalstring
    passos[].seFalharopcionalstring
    passos[].diasopcionalinteger[]
    passos[].horaopcionalstring
    passos[].ramosopcionalobject[]
    passos[].ramos[].nomeobrigatóriostring
    passos[].ramos[].pesoobrigatóriointeger
    passos[].ramos[].proximoobrigatóriostring
    passos[].campoopcionalstring
    passos[].operadoropcionalstringValores:igualdiferentecontemexistenao_existemaiormenor
    passos[].valoropcionalstring
    reentradaobrigatóriostringValores:nuncaapos_concluir
    intervaloReentradaHorasopcionalinteger
    execucoesopcionalobject
    execucoes.ativaobrigatóriointeger
    execucoes.concluidaobrigatóriointeger
    execucoes.canceladaobrigatóriointeger
    execucoes.erroobrigatóriointeger
    pausadaPoropcionalobject
    pausadaPor.motivoobrigatóriostring
    pausadaPor.passoobrigatóriostring
    pausadaPor.emobrigatóriostring
    pausadaPor.rotuloopcionalstring
    ativadaEmopcionalstring
    silencioopcionalobject
    silencio.inicioobrigatóriostring
    silencio.fimobrigatóriostring
    tetoDeFrequenciaopcionalobject
    tetoDeFrequencia.mensagensobrigatóriointeger
    tetoDeFrequencia.diasobrigatóriointeger
    metaopcionalobject

    Mais 8 campos no openapi.json.

    JSON
    {  "id": "string",  "name": "string",  "status": "rascunho",  "gatilho": {    "tipo": "lista",    "listId": "string"  },  "inicio": "string",  "passos": [    {      "id": "string",      "tipo": "enviar",      "canal": "whatsapp",      "templateId": "string",      "numberId": "string",      "smsRoute": "premium",      "rcs": {        "conteudo": {          "text": "string"        },        "fallback": {          "text": "string"        },        "rota": "easy_rcs"      },      "variaveis": {},      "proximo": "string"    }  ],  "reentrada": "nunca",  "intervaloReentradaHoras": 0,  "execucoes": {    "ativa": 0,    "concluida": 0,    "cancelada": 0,    "erro": 0  },  "pausadaPor": {    "motivo": "string",    "passo": "string",    "em": "string",    "rotulo": "string"  },  "ativadaEm": "string",  "silencio": {    "inicio": "string",    "fim": "string"  },  "tetoDeFrequencia": {    "mensagens": 1,    "dias": 1  },  "meta": {    "evento": "string"  },  "versao": 1,  "versaoDe": "string",  "substituidaPor": "string",  "entradasEncerradas": true,  "problemas": [    "string"  ],  "createdAt": "string",  "updatedAt": "string"}
  • 401RFC 7807 problem details for UNAUTHORIZED (401).

  • 403RFC 7807 problem details for FORBIDDEN (403).

  • 404RFC 7807 problem details for NOT_FOUND (404).

As respostas de erro seguem o formato RFC 7807 (application/problem+json), com um código estável no campo code. Ver os códigos de erro

Exemplo em curl

cURL
curl 'https://api.messages.ccxcompany.co/v2/journeys/<id>' \  -H "Authorization: Bearer $CCX_API_KEY"
Só os campos obrigatórios. Troque os valores de exemplo pelos seus.

Substitui a definição de uma jornada em rascunho

PUT/v2/journeys/{id}

Só o rascunho é editável — uma execução em curso está parada num passo, e trocar o grafo por baixo dela a perderia. Para mudar uma jornada que já rodou: arquive e crie outra (409). ?permitirProblemas=true salva o rascunho mesmo com problemas no grafo (ver POST /v2/journeys). Permissão: campaigns:write.

Parâmetros

CampoOndeTipoDescrição
permitirProblemasopcionalquerystringValores:truefalse
idobrigatóriocaminhostring

Corpo da requisiçãoapplication/json

CampoTipoDescrição
nameobrigatóriostring
gatilhoobrigatórioobject
gatilho.tipoopcionalstringValores:segmento
gatilho.listIdopcionalstring
gatilho.nomeopcionalstring
gatilho.segmentIdopcionalstring
inicioobrigatóriostring
passosobrigatórioobject[]
passos[].idopcionalstring
passos[].tipoopcionalstringValores:fim
passos[].canalopcionalstringValores:whatsappsmsemailrcs
passos[].templateIdopcionalstring
passos[].numberIdopcionalstring
passos[].smsRouteopcionalstringValores:premiumotp
passos[].rcsopcionalobject
passos[].rcs.conteudoobrigatórioobject
passos[].rcs.fallbackopcionalobject
passos[].rcs.rotaopcionalstringValores:easy_rcseasy_otp_rcs
passos[].variaveisopcionalobject
passos[].proximoopcionalstring
passos[].minutosopcionalinteger
passos[].sobreopcionalstring
passos[].sinalopcionalstringValores:entreguelidoclicourespondeuconverteu
passos[].eventoopcionalstring
passos[].janelaMinutosopcionalinteger
passos[].simopcionalstring
passos[].naoopcionalstring
passos[].webhookIdopcionalstring
passos[].seFalharopcionalstring
passos[].diasopcionalinteger[]
passos[].horaopcionalstring
passos[].ramosopcionalobject[]
passos[].ramos[].nomeobrigatóriostring
passos[].ramos[].pesoobrigatóriointeger
passos[].ramos[].proximoobrigatóriostring
passos[].campoopcionalstring
passos[].operadoropcionalstringValores:igualdiferentecontemexistenao_existemaiormenor
passos[].valoropcionalstring
reentradaopcionalstringValores:nuncaapos_concluirPadrão:nunca
intervaloReentradaHorasopcionalinteger
silencioopcionalobject
silencio.inicioobrigatóriostring
silencio.fimobrigatóriostring
tetoDeFrequenciaopcionalobject
tetoDeFrequencia.mensagensobrigatóriointeger
tetoDeFrequencia.diasobrigatóriointeger
metaopcionalobject
meta.eventoobrigatóriostring
Exemplo completo do corpo
JSON
{  "name": "string",  "gatilho": {    "tipo": "lista",    "listId": "string"  },  "inicio": "string",  "passos": [    {      "id": "string",      "tipo": "enviar",      "canal": "whatsapp",      "templateId": "string",      "numberId": "string",      "smsRoute": "premium",      "rcs": {        "conteudo": {          "text": "string"        },        "fallback": {          "text": "string"        },        "rota": "easy_rcs"      },      "variaveis": {},      "proximo": "string"    }  ],  "reentrada": "nunca",  "intervaloReentradaHoras": 1,  "silencio": {    "inicio": "string",    "fim": "string"  },  "tetoDeFrequencia": {    "mensagens": 1,    "dias": 1  },  "meta": {    "evento": "string"  }}

Respostas

  • 200Default Response

    Campos e exemplo da resposta
    CampoTipoDescrição
    idobrigatóriostring
    nameobrigatóriostring
    statusobrigatóriostringValores:rascunhoativapausadaarquivada
    gatilhoobrigatórioobject
    gatilho.tipoopcionalstringValores:segmento
    gatilho.listIdopcionalstring
    gatilho.nomeopcionalstring
    gatilho.segmentIdopcionalstring
    inicioobrigatóriostring
    passosobrigatórioobject[]
    passos[].idopcionalstring
    passos[].tipoopcionalstringValores:fim
    passos[].canalopcionalstringValores:whatsappsmsemailrcs
    passos[].templateIdopcionalstring
    passos[].numberIdopcionalstring
    passos[].smsRouteopcionalstringValores:premiumotp
    passos[].rcsopcionalobject
    passos[].rcs.conteudoobrigatórioobject
    passos[].rcs.fallbackopcionalobject
    passos[].rcs.rotaopcionalstringValores:easy_rcseasy_otp_rcs
    passos[].variaveisopcionalobject
    passos[].proximoopcionalstring
    passos[].minutosopcionalinteger
    passos[].sobreopcionalstring
    passos[].sinalopcionalstringValores:entreguelidoclicourespondeuconverteu
    passos[].eventoopcionalstring
    passos[].janelaMinutosopcionalinteger
    passos[].simopcionalstring
    passos[].naoopcionalstring
    passos[].webhookIdopcionalstring
    passos[].seFalharopcionalstring
    passos[].diasopcionalinteger[]
    passos[].horaopcionalstring
    passos[].ramosopcionalobject[]
    passos[].ramos[].nomeobrigatóriostring
    passos[].ramos[].pesoobrigatóriointeger
    passos[].ramos[].proximoobrigatóriostring
    passos[].campoopcionalstring
    passos[].operadoropcionalstringValores:igualdiferentecontemexistenao_existemaiormenor
    passos[].valoropcionalstring
    reentradaobrigatóriostringValores:nuncaapos_concluir
    intervaloReentradaHorasopcionalinteger
    execucoesopcionalobject
    execucoes.ativaobrigatóriointeger
    execucoes.concluidaobrigatóriointeger
    execucoes.canceladaobrigatóriointeger
    execucoes.erroobrigatóriointeger
    pausadaPoropcionalobject
    pausadaPor.motivoobrigatóriostring
    pausadaPor.passoobrigatóriostring
    pausadaPor.emobrigatóriostring
    pausadaPor.rotuloopcionalstring
    ativadaEmopcionalstring
    silencioopcionalobject
    silencio.inicioobrigatóriostring
    silencio.fimobrigatóriostring
    tetoDeFrequenciaopcionalobject
    tetoDeFrequencia.mensagensobrigatóriointeger
    tetoDeFrequencia.diasobrigatóriointeger
    metaopcionalobject

    Mais 8 campos no openapi.json.

    JSON
    {  "id": "string",  "name": "string",  "status": "rascunho",  "gatilho": {    "tipo": "lista",    "listId": "string"  },  "inicio": "string",  "passos": [    {      "id": "string",      "tipo": "enviar",      "canal": "whatsapp",      "templateId": "string",      "numberId": "string",      "smsRoute": "premium",      "rcs": {        "conteudo": {          "text": "string"        },        "fallback": {          "text": "string"        },        "rota": "easy_rcs"      },      "variaveis": {},      "proximo": "string"    }  ],  "reentrada": "nunca",  "intervaloReentradaHoras": 0,  "execucoes": {    "ativa": 0,    "concluida": 0,    "cancelada": 0,    "erro": 0  },  "pausadaPor": {    "motivo": "string",    "passo": "string",    "em": "string",    "rotulo": "string"  },  "ativadaEm": "string",  "silencio": {    "inicio": "string",    "fim": "string"  },  "tetoDeFrequencia": {    "mensagens": 1,    "dias": 1  },  "meta": {    "evento": "string"  },  "versao": 1,  "versaoDe": "string",  "substituidaPor": "string",  "entradasEncerradas": true,  "problemas": [    "string"  ],  "createdAt": "string",  "updatedAt": "string"}
  • 400RFC 7807 problem details for BAD_REQUEST (400).

  • 401RFC 7807 problem details for UNAUTHORIZED (401).

  • 403RFC 7807 problem details for FORBIDDEN (403).

  • 404RFC 7807 problem details for NOT_FOUND (404).

  • 409RFC 7807 problem details for CONFLICT (409).

  • 412RFC 7807 problem details for PRECONDITION_FAILED (412).

  • 422RFC 7807 problem details for VALIDATION_ERROR (422).

As respostas de erro seguem o formato RFC 7807 (application/problem+json), com um código estável no campo code. Ver os códigos de erro

Exemplo em curl

cURL
curl -X PUT 'https://api.messages.ccxcompany.co/v2/journeys/<id>' \  -H "Authorization: Bearer $CCX_API_KEY" \  -H "Content-Type: application/json" \  -d '{    "name": "string",    "gatilho": {      "tipo": "lista",      "listId": "string"    },    "inicio": "string",    "passos": [      {        "id": "string",        "tipo": "enviar",        "canal": "whatsapp"      }    ]  }'
Só os campos obrigatórios. Troque os valores de exemplo pelos seus.

Ativa a jornada (começa a enviar)

POST/v2/journeys/{id}/activate

Confere antes que cada template existe no canal (WhatsApp: aprovado), que o número e a lista são desta organização. Pausada volta a andar de onde parou. Exige chave de produção. Permissão: campaigns:start (a mesma que inicia campanha: ativar é começar a gastar).

Parâmetros

CampoOndeTipoDescrição
idobrigatóriocaminhostring

Respostas

  • 200Default Response

    Campos e exemplo da resposta
    CampoTipoDescrição
    idobrigatóriostring
    nameobrigatóriostring
    statusobrigatóriostringValores:rascunhoativapausadaarquivada
    gatilhoobrigatórioobject
    gatilho.tipoopcionalstringValores:segmento
    gatilho.listIdopcionalstring
    gatilho.nomeopcionalstring
    gatilho.segmentIdopcionalstring
    inicioobrigatóriostring
    passosobrigatórioobject[]
    passos[].idopcionalstring
    passos[].tipoopcionalstringValores:fim
    passos[].canalopcionalstringValores:whatsappsmsemailrcs
    passos[].templateIdopcionalstring
    passos[].numberIdopcionalstring
    passos[].smsRouteopcionalstringValores:premiumotp
    passos[].rcsopcionalobject
    passos[].rcs.conteudoobrigatórioobject
    passos[].rcs.fallbackopcionalobject
    passos[].rcs.rotaopcionalstringValores:easy_rcseasy_otp_rcs
    passos[].variaveisopcionalobject
    passos[].proximoopcionalstring
    passos[].minutosopcionalinteger
    passos[].sobreopcionalstring
    passos[].sinalopcionalstringValores:entreguelidoclicourespondeuconverteu
    passos[].eventoopcionalstring
    passos[].janelaMinutosopcionalinteger
    passos[].simopcionalstring
    passos[].naoopcionalstring
    passos[].webhookIdopcionalstring
    passos[].seFalharopcionalstring
    passos[].diasopcionalinteger[]
    passos[].horaopcionalstring
    passos[].ramosopcionalobject[]
    passos[].ramos[].nomeobrigatóriostring
    passos[].ramos[].pesoobrigatóriointeger
    passos[].ramos[].proximoobrigatóriostring
    passos[].campoopcionalstring
    passos[].operadoropcionalstringValores:igualdiferentecontemexistenao_existemaiormenor
    passos[].valoropcionalstring
    reentradaobrigatóriostringValores:nuncaapos_concluir
    intervaloReentradaHorasopcionalinteger
    execucoesopcionalobject
    execucoes.ativaobrigatóriointeger
    execucoes.concluidaobrigatóriointeger
    execucoes.canceladaobrigatóriointeger
    execucoes.erroobrigatóriointeger
    pausadaPoropcionalobject
    pausadaPor.motivoobrigatóriostring
    pausadaPor.passoobrigatóriostring
    pausadaPor.emobrigatóriostring
    pausadaPor.rotuloopcionalstring
    ativadaEmopcionalstring
    silencioopcionalobject
    silencio.inicioobrigatóriostring
    silencio.fimobrigatóriostring
    tetoDeFrequenciaopcionalobject
    tetoDeFrequencia.mensagensobrigatóriointeger
    tetoDeFrequencia.diasobrigatóriointeger
    metaopcionalobject

    Mais 8 campos no openapi.json.

    JSON
    {  "id": "string",  "name": "string",  "status": "rascunho",  "gatilho": {    "tipo": "lista",    "listId": "string"  },  "inicio": "string",  "passos": [    {      "id": "string",      "tipo": "enviar",      "canal": "whatsapp",      "templateId": "string",      "numberId": "string",      "smsRoute": "premium",      "rcs": {        "conteudo": {          "text": "string"        },        "fallback": {          "text": "string"        },        "rota": "easy_rcs"      },      "variaveis": {},      "proximo": "string"    }  ],  "reentrada": "nunca",  "intervaloReentradaHoras": 0,  "execucoes": {    "ativa": 0,    "concluida": 0,    "cancelada": 0,    "erro": 0  },  "pausadaPor": {    "motivo": "string",    "passo": "string",    "em": "string",    "rotulo": "string"  },  "ativadaEm": "string",  "silencio": {    "inicio": "string",    "fim": "string"  },  "tetoDeFrequencia": {    "mensagens": 1,    "dias": 1  },  "meta": {    "evento": "string"  },  "versao": 1,  "versaoDe": "string",  "substituidaPor": "string",  "entradasEncerradas": true,  "problemas": [    "string"  ],  "createdAt": "string",  "updatedAt": "string"}
  • 400RFC 7807 problem details for BAD_REQUEST (400).

  • 401RFC 7807 problem details for UNAUTHORIZED (401).

  • 403RFC 7807 problem details for FORBIDDEN (403).

  • 404RFC 7807 problem details for NOT_FOUND (404).

  • 409RFC 7807 problem details for CONFLICT (409).

  • 412RFC 7807 problem details for PRECONDITION_FAILED (412).

  • 422RFC 7807 problem details for VALIDATION_ERROR (422).

As respostas de erro seguem o formato RFC 7807 (application/problem+json), com um código estável no campo code. Ver os códigos de erro

Exemplo em curl

cURL
curl -X POST 'https://api.messages.ccxcompany.co/v2/journeys/<id>/activate' \  -H "Authorization: Bearer $CCX_API_KEY"
Só os campos obrigatórios. Troque os valores de exemplo pelos seus.

Pausa a jornada

POST/v2/journeys/{id}/pause

As execuções param onde estão, nenhum contato entra, e o que já estava na fila de envio espera junto. activate retoma de onde parou. Exige chave de produção. Permissão: campaigns:pause.

Parâmetros

CampoOndeTipoDescrição
idobrigatóriocaminhostring

Respostas

  • 200Default Response

    Campos e exemplo da resposta
    CampoTipoDescrição
    idobrigatóriostring
    nameobrigatóriostring
    statusobrigatóriostringValores:rascunhoativapausadaarquivada
    gatilhoobrigatórioobject
    gatilho.tipoopcionalstringValores:segmento
    gatilho.listIdopcionalstring
    gatilho.nomeopcionalstring
    gatilho.segmentIdopcionalstring
    inicioobrigatóriostring
    passosobrigatórioobject[]
    passos[].idopcionalstring
    passos[].tipoopcionalstringValores:fim
    passos[].canalopcionalstringValores:whatsappsmsemailrcs
    passos[].templateIdopcionalstring
    passos[].numberIdopcionalstring
    passos[].smsRouteopcionalstringValores:premiumotp
    passos[].rcsopcionalobject
    passos[].rcs.conteudoobrigatórioobject
    passos[].rcs.fallbackopcionalobject
    passos[].rcs.rotaopcionalstringValores:easy_rcseasy_otp_rcs
    passos[].variaveisopcionalobject
    passos[].proximoopcionalstring
    passos[].minutosopcionalinteger
    passos[].sobreopcionalstring
    passos[].sinalopcionalstringValores:entreguelidoclicourespondeuconverteu
    passos[].eventoopcionalstring
    passos[].janelaMinutosopcionalinteger
    passos[].simopcionalstring
    passos[].naoopcionalstring
    passos[].webhookIdopcionalstring
    passos[].seFalharopcionalstring
    passos[].diasopcionalinteger[]
    passos[].horaopcionalstring
    passos[].ramosopcionalobject[]
    passos[].ramos[].nomeobrigatóriostring
    passos[].ramos[].pesoobrigatóriointeger
    passos[].ramos[].proximoobrigatóriostring
    passos[].campoopcionalstring
    passos[].operadoropcionalstringValores:igualdiferentecontemexistenao_existemaiormenor
    passos[].valoropcionalstring
    reentradaobrigatóriostringValores:nuncaapos_concluir
    intervaloReentradaHorasopcionalinteger
    execucoesopcionalobject
    execucoes.ativaobrigatóriointeger
    execucoes.concluidaobrigatóriointeger
    execucoes.canceladaobrigatóriointeger
    execucoes.erroobrigatóriointeger
    pausadaPoropcionalobject
    pausadaPor.motivoobrigatóriostring
    pausadaPor.passoobrigatóriostring
    pausadaPor.emobrigatóriostring
    pausadaPor.rotuloopcionalstring
    ativadaEmopcionalstring
    silencioopcionalobject
    silencio.inicioobrigatóriostring
    silencio.fimobrigatóriostring
    tetoDeFrequenciaopcionalobject
    tetoDeFrequencia.mensagensobrigatóriointeger
    tetoDeFrequencia.diasobrigatóriointeger
    metaopcionalobject

    Mais 8 campos no openapi.json.

    JSON
    {  "id": "string",  "name": "string",  "status": "rascunho",  "gatilho": {    "tipo": "lista",    "listId": "string"  },  "inicio": "string",  "passos": [    {      "id": "string",      "tipo": "enviar",      "canal": "whatsapp",      "templateId": "string",      "numberId": "string",      "smsRoute": "premium",      "rcs": {        "conteudo": {          "text": "string"        },        "fallback": {          "text": "string"        },        "rota": "easy_rcs"      },      "variaveis": {},      "proximo": "string"    }  ],  "reentrada": "nunca",  "intervaloReentradaHoras": 0,  "execucoes": {    "ativa": 0,    "concluida": 0,    "cancelada": 0,    "erro": 0  },  "pausadaPor": {    "motivo": "string",    "passo": "string",    "em": "string",    "rotulo": "string"  },  "ativadaEm": "string",  "silencio": {    "inicio": "string",    "fim": "string"  },  "tetoDeFrequencia": {    "mensagens": 1,    "dias": 1  },  "meta": {    "evento": "string"  },  "versao": 1,  "versaoDe": "string",  "substituidaPor": "string",  "entradasEncerradas": true,  "problemas": [    "string"  ],  "createdAt": "string",  "updatedAt": "string"}
  • 400RFC 7807 problem details for BAD_REQUEST (400).

  • 401RFC 7807 problem details for UNAUTHORIZED (401).

  • 403RFC 7807 problem details for FORBIDDEN (403).

  • 404RFC 7807 problem details for NOT_FOUND (404).

  • 409RFC 7807 problem details for CONFLICT (409).

  • 412RFC 7807 problem details for PRECONDITION_FAILED (412).

  • 422RFC 7807 problem details for VALIDATION_ERROR (422).

As respostas de erro seguem o formato RFC 7807 (application/problem+json), com um código estável no campo code. Ver os códigos de erro

Exemplo em curl

cURL
curl -X POST 'https://api.messages.ccxcompany.co/v2/journeys/<id>/pause' \  -H "Authorization: Bearer $CCX_API_KEY"
Só os campos obrigatórios. Troque os valores de exemplo pelos seus.

Arquiva a jornada e cancela as execuções em curso

POST/v2/journeys/{id}/archive

Definitivo: nada mais sai desta jornada. canceladas é quantas execuções foram interrompidas; envios_cancelados, quantas mensagens que estavam na fila de envio foram recolhidas. Exige chave de produção. Permissão: campaigns:write.

Parâmetros

CampoOndeTipoDescrição
idobrigatóriocaminhostring

Respostas

  • 200Default Response

    Campos e exemplo da resposta
    CampoTipoDescrição
    idobrigatóriostring
    nameobrigatóriostring
    statusobrigatóriostringValores:rascunhoativapausadaarquivada
    gatilhoobrigatórioobject
    gatilho.tipoopcionalstringValores:segmento
    gatilho.listIdopcionalstring
    gatilho.nomeopcionalstring
    gatilho.segmentIdopcionalstring
    inicioobrigatóriostring
    passosobrigatórioobject[]
    passos[].idopcionalstring
    passos[].tipoopcionalstringValores:fim
    passos[].canalopcionalstringValores:whatsappsmsemailrcs
    passos[].templateIdopcionalstring
    passos[].numberIdopcionalstring
    passos[].smsRouteopcionalstringValores:premiumotp
    passos[].rcsopcionalobject
    passos[].rcs.conteudoobrigatórioobject
    passos[].rcs.fallbackopcionalobject
    passos[].rcs.rotaopcionalstringValores:easy_rcseasy_otp_rcs
    passos[].variaveisopcionalobject
    passos[].proximoopcionalstring
    passos[].minutosopcionalinteger
    passos[].sobreopcionalstring
    passos[].sinalopcionalstringValores:entreguelidoclicourespondeuconverteu
    passos[].eventoopcionalstring
    passos[].janelaMinutosopcionalinteger
    passos[].simopcionalstring
    passos[].naoopcionalstring
    passos[].webhookIdopcionalstring
    passos[].seFalharopcionalstring
    passos[].diasopcionalinteger[]
    passos[].horaopcionalstring
    passos[].ramosopcionalobject[]
    passos[].ramos[].nomeobrigatóriostring
    passos[].ramos[].pesoobrigatóriointeger
    passos[].ramos[].proximoobrigatóriostring
    passos[].campoopcionalstring
    passos[].operadoropcionalstringValores:igualdiferentecontemexistenao_existemaiormenor
    passos[].valoropcionalstring
    reentradaobrigatóriostringValores:nuncaapos_concluir
    intervaloReentradaHorasopcionalinteger
    execucoesopcionalobject
    execucoes.ativaobrigatóriointeger
    execucoes.concluidaobrigatóriointeger
    execucoes.canceladaobrigatóriointeger
    execucoes.erroobrigatóriointeger
    pausadaPoropcionalobject
    pausadaPor.motivoobrigatóriostring
    pausadaPor.passoobrigatóriostring
    pausadaPor.emobrigatóriostring
    pausadaPor.rotuloopcionalstring
    ativadaEmopcionalstring
    silencioopcionalobject
    silencio.inicioobrigatóriostring
    silencio.fimobrigatóriostring
    tetoDeFrequenciaopcionalobject
    tetoDeFrequencia.mensagensobrigatóriointeger
    tetoDeFrequencia.diasobrigatóriointeger
    metaopcionalobject

    Mais 10 campos no openapi.json.

    JSON
    {  "id": "string",  "name": "string",  "status": "rascunho",  "gatilho": {    "tipo": "lista",    "listId": "string"  },  "inicio": "string",  "passos": [    {      "id": "string",      "tipo": "enviar",      "canal": "whatsapp",      "templateId": "string",      "numberId": "string",      "smsRoute": "premium",      "rcs": {        "conteudo": {          "text": "string"        },        "fallback": {          "text": "string"        },        "rota": "easy_rcs"      },      "variaveis": {},      "proximo": "string"    }  ],  "reentrada": "nunca",  "intervaloReentradaHoras": 0,  "execucoes": {    "ativa": 0,    "concluida": 0,    "cancelada": 0,    "erro": 0  },  "pausadaPor": {    "motivo": "string",    "passo": "string",    "em": "string",    "rotulo": "string"  },  "ativadaEm": "string",  "silencio": {    "inicio": "string",    "fim": "string"  },  "tetoDeFrequencia": {    "mensagens": 1,    "dias": 1  },  "meta": {    "evento": "string"  },  "versao": 1,  "versaoDe": "string",  "substituidaPor": "string",  "entradasEncerradas": true,  "problemas": [    "string"  ],  "createdAt": "string",  "updatedAt": "string",  "canceladas": 0,  "envios_cancelados": 0}
  • 400RFC 7807 problem details for BAD_REQUEST (400).

  • 401RFC 7807 problem details for UNAUTHORIZED (401).

  • 403RFC 7807 problem details for FORBIDDEN (403).

  • 404RFC 7807 problem details for NOT_FOUND (404).

  • 409RFC 7807 problem details for CONFLICT (409).

  • 412RFC 7807 problem details for PRECONDITION_FAILED (412).

  • 422RFC 7807 problem details for VALIDATION_ERROR (422).

As respostas de erro seguem o formato RFC 7807 (application/problem+json), com um código estável no campo code. Ver os códigos de erro

Exemplo em curl

cURL
curl -X POST 'https://api.messages.ccxcompany.co/v2/journeys/<id>/archive' \  -H "Authorization: Bearer $CCX_API_KEY"
Só os campos obrigatórios. Troque os valores de exemplo pelos seus.

Põe contatos numa jornada ativa

POST/v2/journeys/{id}/entries

Até 500 por chamada. dados (opcional, até 30 campos de texto) alimenta as variáveis de origem entrada — ex.: o produto do carrinho.

Um resultado por entrada, na ordem do pedido: inscrito (com o runId), ja_esta (tem execução em curso), ja_passou (reentrada nunca), reentrada_cedo (reentrada apos_concluir antes do intervalo, padrão 24 h), opt_out, contato_inexistente, versao_substituida (esta versão da jornada foi substituída por uma mais nova — inscreva na versão ativa) ou repetido (o mesmo contato mais acima no pedido).

Reenviar o mesmo pedido depois de um timeout não manda duas vezes: quem entrou volta ja_esta/ja_passou/reentrada_cedo.

Exige chave de produção. Permissão: campaigns:start.

Parâmetros

CampoOndeTipoDescrição
idobrigatóriocaminhostring

Corpo da requisiçãoapplication/json

CampoTipoDescrição
entradasobrigatórioobject[]
entradas[].contactIdobrigatóriostring
entradas[].dadosopcionalobject
Exemplo completo do corpo
JSON
{  "entradas": [    {      "contactId": "string",      "dados": {}    }  ]}

Respostas

  • 200Default Response

    Campos e exemplo da resposta
    CampoTipoDescrição
    resultadosobrigatórioobject[]
    resultados[].contactIdobrigatóriostring
    resultados[].resultadoobrigatóriostringValores:inscritoja_estaja_passoureentrada_cedocontato_inexistenteopt_outrepetidoversao_substituida
    resultados[].runIdopcionalstring
    inscritosobrigatóriointeger
    JSON
    {  "resultados": [    {      "contactId": "string",      "resultado": "inscrito",      "runId": "string"    }  ],  "inscritos": 0}
  • 400RFC 7807 problem details for BAD_REQUEST (400).

  • 401RFC 7807 problem details for UNAUTHORIZED (401).

  • 403RFC 7807 problem details for FORBIDDEN (403).

  • 404RFC 7807 problem details for NOT_FOUND (404).

  • 409RFC 7807 problem details for CONFLICT (409).

  • 412RFC 7807 problem details for PRECONDITION_FAILED (412).

  • 422RFC 7807 problem details for VALIDATION_ERROR (422).

As respostas de erro seguem o formato RFC 7807 (application/problem+json), com um código estável no campo code. Ver os códigos de erro

Exemplo em curl

cURL
curl -X POST 'https://api.messages.ccxcompany.co/v2/journeys/<id>/entries' \  -H "Authorization: Bearer $CCX_API_KEY" \  -H "Content-Type: application/json" \  -d '{    "entradas": [      {        "contactId": "string"      }    ]  }'
Só os campos obrigatórios. Troque os valores de exemplo pelos seus.

As execuções de uma jornada

GET/v2/journeys/{id}/runs

Uma execução por contato por passagem, com o passo atual e o histórico (até os 200 últimos eventos), da mais nova para a mais antiga. Filtros: status, contactId, passo (onde a execução está agora) e q (nome, e-mail ou telefone do contato). Cada item traz o nome e o telefone do contato (mascarado sem pii:full).

A primeira página traz o total do filtro; a seguinte, o depois da resposta. Permissão: campaigns:read.

Parâmetros

CampoOndeTipoDescrição
statusopcionalquerystringValores:ativaconcluidacanceladaerro
contactIdopcionalquerystring
passoopcionalquerystring
qopcionalquerystring
depoisopcionalquerystring
limitopcionalqueryinteger
idobrigatóriocaminhostring

Respostas

  • 200Default Response

    Campos e exemplo da resposta
    CampoTipoDescrição
    itemsobrigatórioobject[]
    items[].idobrigatóriostring
    items[].journeyIdobrigatóriostring
    items[].contactIdobrigatóriostring
    items[].contactNameopcionalstring
    items[].contactPhoneopcionalstring
    items[].statusobrigatóriostringValores:ativaconcluidacanceladaerro
    items[].passoAtualobrigatóriostring
    items[].proximoEmobrigatóriostring
    items[].origemobrigatórioobject
    items[].origem.tipoobrigatóriostringValores:listaeventoapitestesegmento
    items[].origem.refopcionalstring
    items[].historicoobrigatórioobject[]
    items[].historico[].passoobrigatóriostring
    items[].historico[].atobrigatóriostring
    items[].historico[].resultadoobrigatóriostring
    items[].historico[].scheduledMessageIdopcionalstring
    items[].erroopcionalstring
    items[].metaEmopcionalstring
    items[].criadaEmobrigatóriostring
    items[].atualizadaEmobrigatóriostring
    depoisopcionalstring
    totalopcionalinteger
    JSON
    {  "items": [    {      "id": "string",      "journeyId": "string",      "contactId": "string",      "contactName": "string",      "contactPhone": "string",      "status": "ativa",      "passoAtual": "string",      "proximoEm": "string",      "origem": {        "tipo": "lista",        "ref": "string"      },      "historico": [        {          "passo": "string",          "at": "string",          "resultado": "string",          "scheduledMessageId": "string"        }      ],      "erro": "string",      "metaEm": "string",      "criadaEm": "string",      "atualizadaEm": "string"    }  ],  "depois": "string",  "total": 0}
  • 400RFC 7807 problem details for BAD_REQUEST (400).

  • 401RFC 7807 problem details for UNAUTHORIZED (401).

  • 403RFC 7807 problem details for FORBIDDEN (403).

  • 404RFC 7807 problem details for NOT_FOUND (404).

As respostas de erro seguem o formato RFC 7807 (application/problem+json), com um código estável no campo code. Ver os códigos de erro

Exemplo em curl

cURL
curl 'https://api.messages.ccxcompany.co/v2/journeys/<id>/runs' \  -H "Authorization: Bearer $CCX_API_KEY"
Só os campos obrigatórios. Troque os valores de exemplo pelos seus.

Números por passo de uma jornada

GET/v2/journeys/{id}/metricas

Por passo: quantos passaram e quantos estão parados nele agora; no enviar, agendados, pulados, enviados, falhas, entregues e lidos (null onde o canal não informa: e-mail e RCS não têm leitura); na condicao, sim e não; no webhook, ok e falhou; no fim, chegaram.

Custo líquido (consumo − estornos) em coins (1 coin = R$ 0,0001), por canal, e conversões atribuídas. Calculado a cada 60 s no máximo. Permissão: campaigns:read.

Parâmetros

CampoOndeTipoDescrição
idobrigatóriocaminhostring

Respostas

  • 200Default Response

    Campos e exemplo da resposta
    CampoTipoDescrição
    passosobrigatórioobject
    entraramobrigatóriointeger
    execucoesobrigatórioobject
    execucoes.ativaobrigatóriointeger
    execucoes.concluidaobrigatóriointeger
    execucoes.canceladaobrigatóriointeger
    execucoes.erroobrigatóriointeger
    enviadosPorCanalobrigatórioobject
    custoobrigatórioobject
    custo.totalCoinsobrigatóriointeger
    custo.porCanalobrigatórioobject
    custo.atualizadoAteobrigatóriostring | null
    conversoesobrigatórioobject
    conversoes.eventosobrigatóriointeger
    conversoes.receitaobrigatórionumber
    conversoes.moedaobrigatóriostring
    calculadoEmobrigatóriostring
    JSON
    {  "passos": {},  "entraram": 0,  "execucoes": {    "ativa": 0,    "concluida": 0,    "cancelada": 0,    "erro": 0  },  "enviadosPorCanal": {},  "custo": {    "totalCoins": 0,    "porCanal": {},    "atualizadoAte": "string"  },  "conversoes": {    "eventos": 0,    "receita": 0,    "moeda": "string"  },  "calculadoEm": "string"}
  • 401RFC 7807 problem details for UNAUTHORIZED (401).

  • 403RFC 7807 problem details for FORBIDDEN (403).

  • 404RFC 7807 problem details for NOT_FOUND (404).

As respostas de erro seguem o formato RFC 7807 (application/problem+json), com um código estável no campo code. Ver os códigos de erro

Exemplo em curl

cURL
curl 'https://api.messages.ccxcompany.co/v2/journeys/<id>/metricas' \  -H "Authorization: Bearer $CCX_API_KEY"
Só os campos obrigatórios. Troque os valores de exemplo pelos seus.

Uma execução, com os envios

GET/v2/journeys/{id}/runs/{runId}

O contato (telefone e e-mail mascarados sem pii:full), os dados da entrada, cada envio com o que aconteceu (agendado, pulado e por quê, enviado, entregue, lido) e as conversões atribuídas a esta execução. Permissão: campaigns:read.

Parâmetros

CampoOndeTipoDescrição
idobrigatóriocaminhostring
runIdobrigatóriocaminhostring

Respostas

  • 200Default Response

    Campos e exemplo da resposta
    CampoTipoDescrição
    idobrigatóriostring
    journeyIdobrigatóriostring
    contactIdobrigatóriostring
    contactNameopcionalstring
    contactPhoneopcionalstring
    statusobrigatóriostringValores:ativaconcluidacanceladaerro
    passoAtualobrigatóriostring
    proximoEmobrigatóriostring
    origemobrigatórioobject
    origem.tipoobrigatóriostringValores:listaeventoapitestesegmento
    origem.refopcionalstring
    historicoobrigatórioobject[]
    historico[].passoobrigatóriostring
    historico[].atobrigatóriostring
    historico[].resultadoobrigatóriostring
    historico[].scheduledMessageIdopcionalstring
    erroopcionalstring
    metaEmopcionalstring
    criadaEmobrigatóriostring
    atualizadaEmobrigatóriostring
    contatoobrigatórioobject | null
    contato.nomeobrigatóriostring
    contato.iniciaisobrigatóriostring
    contato.telefoneopcionalstring
    contato.emailopcionalstring
    dadosobrigatórioobject
    enviosobrigatórioobject[]
    envios[].passoobrigatóriostring
    envios[].canalobrigatóriostringValores:whatsappsmsemailrcs
    envios[].situacaoobrigatóriostring
    envios[].motivoopcionalstring
    envios[].templateNomeopcionalstring
    envios[].previaopcionalstring
    envios[].messageIdopcionalstring
    envios[].enviadoEmopcionalstring
    envios[].entregueEmopcionalstring
    envios[].lidoEmopcionalstring
    conversoesobrigatórioobject[]
    conversoes[].nomeobrigatóriostring
    conversoes[].emobrigatóriostring
    conversoes[].valoropcionalnumber
    conversoes[].moedaopcionalstring
    JSON
    {  "id": "string",  "journeyId": "string",  "contactId": "string",  "contactName": "string",  "contactPhone": "string",  "status": "ativa",  "passoAtual": "string",  "proximoEm": "string",  "origem": {    "tipo": "lista",    "ref": "string"  },  "historico": [    {      "passo": "string",      "at": "string",      "resultado": "string",      "scheduledMessageId": "string"    }  ],  "erro": "string",  "metaEm": "string",  "criadaEm": "string",  "atualizadaEm": "string",  "contato": {    "nome": "string",    "iniciais": "string",    "telefone": "string",    "email": "string"  },  "dados": {},  "envios": [    {      "passo": "string",      "canal": "whatsapp",      "situacao": "string",      "motivo": "string",      "templateNome": "string",      "previa": "string",      "messageId": "string",      "enviadoEm": "string",      "entregueEm": "string",      "lidoEm": "string"    }  ],  "conversoes": [    {      "nome": "string",      "em": "string",      "valor": 0,      "moeda": "string"    }  ]}
  • 401RFC 7807 problem details for UNAUTHORIZED (401).

  • 403RFC 7807 problem details for FORBIDDEN (403).

  • 404RFC 7807 problem details for NOT_FOUND (404).

As respostas de erro seguem o formato RFC 7807 (application/problem+json), com um código estável no campo code. Ver os códigos de erro

Exemplo em curl

cURL
curl 'https://api.messages.ccxcompany.co/v2/journeys/<id>/runs/<runId>' \  -H "Authorization: Bearer $CCX_API_KEY"
Só os campos obrigatórios. Troque os valores de exemplo pelos seus.

Tira um contato da jornada

POST/v2/journeys/{id}/runs/{runId}/cancel

Cancela a execução e recolhe o que ela tinha na fila de envio. O que já estava saindo não volta. Execução que não está em curso responde 409. Exige chave de produção. Permissão: campaigns:pause.

Parâmetros

CampoOndeTipoDescrição
idobrigatóriocaminhostring
runIdobrigatóriocaminhostring

Respostas

  • 200Default Response

    Campos e exemplo da resposta
    CampoTipoDescrição
    canceladaobrigatórioboolean
    enviosRecolhidosobrigatóriointeger
    JSON
    {  "cancelada": true,  "enviosRecolhidos": 0}
  • 400RFC 7807 problem details for BAD_REQUEST (400).

  • 401RFC 7807 problem details for UNAUTHORIZED (401).

  • 403RFC 7807 problem details for FORBIDDEN (403).

  • 404RFC 7807 problem details for NOT_FOUND (404).

  • 409RFC 7807 problem details for CONFLICT (409).

  • 412RFC 7807 problem details for PRECONDITION_FAILED (412).

  • 422RFC 7807 problem details for VALIDATION_ERROR (422).

As respostas de erro seguem o formato RFC 7807 (application/problem+json), com um código estável no campo code. Ver os códigos de erro

Exemplo em curl

cURL
curl -X POST 'https://api.messages.ccxcompany.co/v2/journeys/<id>/runs/<runId>/cancel' \  -H "Authorization: Bearer $CCX_API_KEY"
Só os campos obrigatórios. Troque os valores de exemplo pelos seus.

Testa o rascunho com um contato

POST/v2/journeys/{id}/teste

Roda a jornada em rascunho para UM contato da base (contactId ou identificador: telefone/e-mail). Envia de verdade e é cobrado; toda espera dura 10 s e a janela de uma condição, no máximo 2 min. A mesma conferência da ativação vale aqui. Não conta para a reentrada: depois de ativada, a pessoa entra normalmente.

Ativar a jornada encerra os testes em curso. Exige chave de produção. Permissão: campaigns:start.

Parâmetros

CampoOndeTipoDescrição
idobrigatóriocaminhostring

Corpo da requisiçãoapplication/json

CampoTipoDescrição
contactIdopcionalstring
identificadoropcionalstring
Exemplo completo do corpo
JSON
{  "contactId": "string",  "identificador": "string"}

Respostas

  • 201Default Response

    Campos e exemplo da resposta
    CampoTipoDescrição
    runIdobrigatóriostring
    contatoobrigatóriostring
    JSON
    {  "runId": "string",  "contato": "string"}
  • 400RFC 7807 problem details for BAD_REQUEST (400).

  • 401RFC 7807 problem details for UNAUTHORIZED (401).

  • 403RFC 7807 problem details for FORBIDDEN (403).

  • 404RFC 7807 problem details for NOT_FOUND (404).

  • 409RFC 7807 problem details for CONFLICT (409).

  • 412RFC 7807 problem details for PRECONDITION_FAILED (412).

  • 422RFC 7807 problem details for VALIDATION_ERROR (422).

As respostas de erro seguem o formato RFC 7807 (application/problem+json), com um código estável no campo code. Ver os códigos de erro

Exemplo em curl

cURL
curl -X POST 'https://api.messages.ccxcompany.co/v2/journeys/<id>/teste' \  -H "Authorization: Bearer $CCX_API_KEY" \  -H "Content-Type: application/json" \  -d '{}'
Só os campos obrigatórios. Troque os valores de exemplo pelos seus.

Cria a próxima versão de uma jornada que já rodou

POST/v2/journeys/{id}/versao

Uma jornada ativa ou pausada não muda (as execuções estão paradas em passos dela): muda-se criando a próxima versão, em rascunho e com a mesma definição. Ao ativar a nova, a anterior deixa de receber entradas (quem está no meio termina nela) e a reentrada passa a valer para as duas — ninguém entra nas duas.

Se o rascunho da próxima versão já existe, ele volta. Permissão: campaigns:write.

Parâmetros

CampoOndeTipoDescrição
idobrigatóriocaminhostring

Respostas

  • 201Default Response

    Campos e exemplo da resposta
    CampoTipoDescrição
    idobrigatóriostring
    nameobrigatóriostring
    statusobrigatóriostringValores:rascunhoativapausadaarquivada
    gatilhoobrigatórioobject
    gatilho.tipoopcionalstringValores:segmento
    gatilho.listIdopcionalstring
    gatilho.nomeopcionalstring
    gatilho.segmentIdopcionalstring
    inicioobrigatóriostring
    passosobrigatórioobject[]
    passos[].idopcionalstring
    passos[].tipoopcionalstringValores:fim
    passos[].canalopcionalstringValores:whatsappsmsemailrcs
    passos[].templateIdopcionalstring
    passos[].numberIdopcionalstring
    passos[].smsRouteopcionalstringValores:premiumotp
    passos[].rcsopcionalobject
    passos[].rcs.conteudoobrigatórioobject
    passos[].rcs.fallbackopcionalobject
    passos[].rcs.rotaopcionalstringValores:easy_rcseasy_otp_rcs
    passos[].variaveisopcionalobject
    passos[].proximoopcionalstring
    passos[].minutosopcionalinteger
    passos[].sobreopcionalstring
    passos[].sinalopcionalstringValores:entreguelidoclicourespondeuconverteu
    passos[].eventoopcionalstring
    passos[].janelaMinutosopcionalinteger
    passos[].simopcionalstring
    passos[].naoopcionalstring
    passos[].webhookIdopcionalstring
    passos[].seFalharopcionalstring
    passos[].diasopcionalinteger[]
    passos[].horaopcionalstring
    passos[].ramosopcionalobject[]
    passos[].ramos[].nomeobrigatóriostring
    passos[].ramos[].pesoobrigatóriointeger
    passos[].ramos[].proximoobrigatóriostring
    passos[].campoopcionalstring
    passos[].operadoropcionalstringValores:igualdiferentecontemexistenao_existemaiormenor
    passos[].valoropcionalstring
    reentradaobrigatóriostringValores:nuncaapos_concluir
    intervaloReentradaHorasopcionalinteger
    execucoesopcionalobject
    execucoes.ativaobrigatóriointeger
    execucoes.concluidaobrigatóriointeger
    execucoes.canceladaobrigatóriointeger
    execucoes.erroobrigatóriointeger
    pausadaPoropcionalobject
    pausadaPor.motivoobrigatóriostring
    pausadaPor.passoobrigatóriostring
    pausadaPor.emobrigatóriostring
    pausadaPor.rotuloopcionalstring
    ativadaEmopcionalstring
    silencioopcionalobject
    silencio.inicioobrigatóriostring
    silencio.fimobrigatóriostring
    tetoDeFrequenciaopcionalobject
    tetoDeFrequencia.mensagensobrigatóriointeger
    tetoDeFrequencia.diasobrigatóriointeger
    metaopcionalobject

    Mais 8 campos no openapi.json.

    JSON
    {  "id": "string",  "name": "string",  "status": "rascunho",  "gatilho": {    "tipo": "lista",    "listId": "string"  },  "inicio": "string",  "passos": [    {      "id": "string",      "tipo": "enviar",      "canal": "whatsapp",      "templateId": "string",      "numberId": "string",      "smsRoute": "premium",      "rcs": {        "conteudo": {          "text": "string"        },        "fallback": {          "text": "string"        },        "rota": "easy_rcs"      },      "variaveis": {},      "proximo": "string"    }  ],  "reentrada": "nunca",  "intervaloReentradaHoras": 0,  "execucoes": {    "ativa": 0,    "concluida": 0,    "cancelada": 0,    "erro": 0  },  "pausadaPor": {    "motivo": "string",    "passo": "string",    "em": "string",    "rotulo": "string"  },  "ativadaEm": "string",  "silencio": {    "inicio": "string",    "fim": "string"  },  "tetoDeFrequencia": {    "mensagens": 1,    "dias": 1  },  "meta": {    "evento": "string"  },  "versao": 1,  "versaoDe": "string",  "substituidaPor": "string",  "entradasEncerradas": true,  "problemas": [    "string"  ],  "createdAt": "string",  "updatedAt": "string"}
  • 400RFC 7807 problem details for BAD_REQUEST (400).

  • 401RFC 7807 problem details for UNAUTHORIZED (401).

  • 403RFC 7807 problem details for FORBIDDEN (403).

  • 404RFC 7807 problem details for NOT_FOUND (404).

  • 409RFC 7807 problem details for CONFLICT (409).

  • 412RFC 7807 problem details for PRECONDITION_FAILED (412).

  • 422RFC 7807 problem details for VALIDATION_ERROR (422).

As respostas de erro seguem o formato RFC 7807 (application/problem+json), com um código estável no campo code. Ver os códigos de erro

Exemplo em curl

cURL
curl -X POST 'https://api.messages.ccxcompany.co/v2/journeys/<id>/versao' \  -H "Authorization: Bearer $CCX_API_KEY"
Só os campos obrigatórios. Troque os valores de exemplo pelos seus.

Duplica a jornada (em rascunho)

POST/v2/journeys/{id}/duplicate

Uma cópia com a mesma definição, em rascunho e com “(cópia)” no nome. Nada sai até ativar. Permissão: campaigns:write.

Parâmetros

CampoOndeTipoDescrição
idobrigatóriocaminhostring

Respostas

  • 201Default Response

    Campos e exemplo da resposta
    CampoTipoDescrição
    idobrigatóriostring
    nameobrigatóriostring
    statusobrigatóriostringValores:rascunhoativapausadaarquivada
    gatilhoobrigatórioobject
    gatilho.tipoopcionalstringValores:segmento
    gatilho.listIdopcionalstring
    gatilho.nomeopcionalstring
    gatilho.segmentIdopcionalstring
    inicioobrigatóriostring
    passosobrigatórioobject[]
    passos[].idopcionalstring
    passos[].tipoopcionalstringValores:fim
    passos[].canalopcionalstringValores:whatsappsmsemailrcs
    passos[].templateIdopcionalstring
    passos[].numberIdopcionalstring
    passos[].smsRouteopcionalstringValores:premiumotp
    passos[].rcsopcionalobject
    passos[].rcs.conteudoobrigatórioobject
    passos[].rcs.fallbackopcionalobject
    passos[].rcs.rotaopcionalstringValores:easy_rcseasy_otp_rcs
    passos[].variaveisopcionalobject
    passos[].proximoopcionalstring
    passos[].minutosopcionalinteger
    passos[].sobreopcionalstring
    passos[].sinalopcionalstringValores:entreguelidoclicourespondeuconverteu
    passos[].eventoopcionalstring
    passos[].janelaMinutosopcionalinteger
    passos[].simopcionalstring
    passos[].naoopcionalstring
    passos[].webhookIdopcionalstring
    passos[].seFalharopcionalstring
    passos[].diasopcionalinteger[]
    passos[].horaopcionalstring
    passos[].ramosopcionalobject[]
    passos[].ramos[].nomeobrigatóriostring
    passos[].ramos[].pesoobrigatóriointeger
    passos[].ramos[].proximoobrigatóriostring
    passos[].campoopcionalstring
    passos[].operadoropcionalstringValores:igualdiferentecontemexistenao_existemaiormenor
    passos[].valoropcionalstring
    reentradaobrigatóriostringValores:nuncaapos_concluir
    intervaloReentradaHorasopcionalinteger
    execucoesopcionalobject
    execucoes.ativaobrigatóriointeger
    execucoes.concluidaobrigatóriointeger
    execucoes.canceladaobrigatóriointeger
    execucoes.erroobrigatóriointeger
    pausadaPoropcionalobject
    pausadaPor.motivoobrigatóriostring
    pausadaPor.passoobrigatóriostring
    pausadaPor.emobrigatóriostring
    pausadaPor.rotuloopcionalstring
    ativadaEmopcionalstring
    silencioopcionalobject
    silencio.inicioobrigatóriostring
    silencio.fimobrigatóriostring
    tetoDeFrequenciaopcionalobject
    tetoDeFrequencia.mensagensobrigatóriointeger
    tetoDeFrequencia.diasobrigatóriointeger
    metaopcionalobject

    Mais 8 campos no openapi.json.

    JSON
    {  "id": "string",  "name": "string",  "status": "rascunho",  "gatilho": {    "tipo": "lista",    "listId": "string"  },  "inicio": "string",  "passos": [    {      "id": "string",      "tipo": "enviar",      "canal": "whatsapp",      "templateId": "string",      "numberId": "string",      "smsRoute": "premium",      "rcs": {        "conteudo": {          "text": "string"        },        "fallback": {          "text": "string"        },        "rota": "easy_rcs"      },      "variaveis": {},      "proximo": "string"    }  ],  "reentrada": "nunca",  "intervaloReentradaHoras": 0,  "execucoes": {    "ativa": 0,    "concluida": 0,    "cancelada": 0,    "erro": 0  },  "pausadaPor": {    "motivo": "string",    "passo": "string",    "em": "string",    "rotulo": "string"  },  "ativadaEm": "string",  "silencio": {    "inicio": "string",    "fim": "string"  },  "tetoDeFrequencia": {    "mensagens": 1,    "dias": 1  },  "meta": {    "evento": "string"  },  "versao": 1,  "versaoDe": "string",  "substituidaPor": "string",  "entradasEncerradas": true,  "problemas": [    "string"  ],  "createdAt": "string",  "updatedAt": "string"}
  • 400RFC 7807 problem details for BAD_REQUEST (400).

  • 401RFC 7807 problem details for UNAUTHORIZED (401).

  • 403RFC 7807 problem details for FORBIDDEN (403).

  • 404RFC 7807 problem details for NOT_FOUND (404).

  • 409RFC 7807 problem details for CONFLICT (409).

  • 412RFC 7807 problem details for PRECONDITION_FAILED (412).

  • 422RFC 7807 problem details for VALIDATION_ERROR (422).

As respostas de erro seguem o formato RFC 7807 (application/problem+json), com um código estável no campo code. Ver os códigos de erro

Exemplo em curl

cURL
curl -X POST 'https://api.messages.ccxcompany.co/v2/journeys/<id>/duplicate' \  -H "Authorization: Bearer $CCX_API_KEY"
Só os campos obrigatórios. Troque os valores de exemplo pelos seus.

Travou em alguma rota? Fale com quem mantém a API.

Criando a conta pelo site, você ganha R$ 10 de crédito de teste.