Start free

API reference

Journeys

Create draft journeys, test them with a contact, activate, pause or archive them, enroll contacts and follow the runs and the numbers for each step.

  • 15 operations
  • Base URLhttps://api.messages.ccxcompany.co
  • AuthenticationBearer with your API key

The technical text below comes from the public contract, openapi.json, in the language the contract was written in.

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.

Responses

  • 200Default Response

    Response fields and example
    FieldTypeDescription
    itemsrequiredobject[]
    items[].idrequiredstring
    items[].namerequiredstring
    items[].statusrequiredstringValues:rascunhoativapausadaarquivada
    items[].gatilhorequiredobject
    items[].gatilho.tipooptionalstringValues:segmento
    items[].gatilho.listIdoptionalstring
    items[].gatilho.nomeoptionalstring
    items[].gatilho.segmentIdoptionalstring
    items[].reentradarequiredstringValues:nuncaapos_concluir
    items[].intervaloReentradaHorasoptionalinteger
    items[].execucoesoptionalobject
    items[].execucoes.ativarequiredinteger
    items[].execucoes.concluidarequiredinteger
    items[].execucoes.canceladarequiredinteger
    items[].execucoes.errorequiredinteger
    items[].pausadaPoroptionalobject
    items[].pausadaPor.motivorequiredstring
    items[].pausadaPor.passorequiredstring
    items[].pausadaPor.emrequiredstring
    items[].pausadaPor.rotulooptionalstring
    items[].ativadaEmoptionalstring
    items[].silenciooptionalobject
    items[].silencio.iniciorequiredstring
    items[].silencio.fimrequiredstring
    items[].tetoDeFrequenciaoptionalobject
    items[].tetoDeFrequencia.mensagensrequiredinteger
    items[].tetoDeFrequencia.diasrequiredinteger
    items[].metaoptionalobject
    items[].meta.eventorequiredstring
    items[].versaooptionalinteger
    items[].versaoDeoptionalstring
    items[].substituidaPoroptionalstring
    items[].entradasEncerradasoptionalboolean
    items[].createdAtrequiredstring
    items[].updatedAtrequiredstring
    items[].canaisrequiredstring[]
    items[].fluxorequiredstring[]
    items[].metaEventooptionalstring
    items[].listaoptionalobject
    items[].lista.nomerequiredstring
    items[].lista.tamanhorequiredinteger
    items[].segmentooptionalobject
    items[].segmento.nomerequiredstring
    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).

Error responses follow RFC 7807 (application/problem+json), with a stable code in the code field. See the error codes

curl example

cURL
curl 'https://api.messages.ccxcompany.co/v2/journeys' \  -H "Authorization: Bearer $CCX_API_KEY"
Required fields only. Swap the sample values for your own.

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.

Parameters

FieldInTypeDescription
permitirProblemasoptionalquerystringValues:truefalse

Request bodyapplication/json

FieldTypeDescription
namerequiredstring
gatilhorequiredobject
gatilho.tipooptionalstringValues:segmento
gatilho.listIdoptionalstring
gatilho.nomeoptionalstring
gatilho.segmentIdoptionalstring
iniciorequiredstring
passosrequiredobject[]
passos[].idoptionalstring
passos[].tipooptionalstringValues:fim
passos[].canaloptionalstringValues:whatsappsmsemailrcs
passos[].templateIdoptionalstring
passos[].numberIdoptionalstring
passos[].smsRouteoptionalstringValues:premiumotp
passos[].rcsoptionalobject
passos[].rcs.conteudorequiredobject
passos[].rcs.fallbackoptionalobject
passos[].rcs.rotaoptionalstringValues:easy_rcseasy_otp_rcs
passos[].variaveisoptionalobject
passos[].proximooptionalstring
passos[].minutosoptionalinteger
passos[].sobreoptionalstring
passos[].sinaloptionalstringValues:entreguelidoclicourespondeuconverteu
passos[].eventooptionalstring
passos[].janelaMinutosoptionalinteger
passos[].simoptionalstring
passos[].naooptionalstring
passos[].webhookIdoptionalstring
passos[].seFalharoptionalstring
passos[].diasoptionalinteger[]
passos[].horaoptionalstring
passos[].ramosoptionalobject[]
passos[].ramos[].nomerequiredstring
passos[].ramos[].pesorequiredinteger
passos[].ramos[].proximorequiredstring
passos[].campooptionalstring
passos[].operadoroptionalstringValues:igualdiferentecontemexistenao_existemaiormenor
passos[].valoroptionalstring
reentradaoptionalstringValues:nuncaapos_concluirDefault:nunca
intervaloReentradaHorasoptionalinteger
silenciooptionalobject
silencio.iniciorequiredstring
silencio.fimrequiredstring
tetoDeFrequenciaoptionalobject
tetoDeFrequencia.mensagensrequiredinteger
tetoDeFrequencia.diasrequiredinteger
metaoptionalobject
meta.eventorequiredstring
Full body example
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"  }}

Responses

  • 201Default Response

    Response fields and example
    FieldTypeDescription
    idrequiredstring
    namerequiredstring
    statusrequiredstringValues:rascunhoativapausadaarquivada
    gatilhorequiredobject
    gatilho.tipooptionalstringValues:segmento
    gatilho.listIdoptionalstring
    gatilho.nomeoptionalstring
    gatilho.segmentIdoptionalstring
    iniciorequiredstring
    passosrequiredobject[]
    passos[].idoptionalstring
    passos[].tipooptionalstringValues:fim
    passos[].canaloptionalstringValues:whatsappsmsemailrcs
    passos[].templateIdoptionalstring
    passos[].numberIdoptionalstring
    passos[].smsRouteoptionalstringValues:premiumotp
    passos[].rcsoptionalobject
    passos[].rcs.conteudorequiredobject
    passos[].rcs.fallbackoptionalobject
    passos[].rcs.rotaoptionalstringValues:easy_rcseasy_otp_rcs
    passos[].variaveisoptionalobject
    passos[].proximooptionalstring
    passos[].minutosoptionalinteger
    passos[].sobreoptionalstring
    passos[].sinaloptionalstringValues:entreguelidoclicourespondeuconverteu
    passos[].eventooptionalstring
    passos[].janelaMinutosoptionalinteger
    passos[].simoptionalstring
    passos[].naooptionalstring
    passos[].webhookIdoptionalstring
    passos[].seFalharoptionalstring
    passos[].diasoptionalinteger[]
    passos[].horaoptionalstring
    passos[].ramosoptionalobject[]
    passos[].ramos[].nomerequiredstring
    passos[].ramos[].pesorequiredinteger
    passos[].ramos[].proximorequiredstring
    passos[].campooptionalstring
    passos[].operadoroptionalstringValues:igualdiferentecontemexistenao_existemaiormenor
    passos[].valoroptionalstring
    reentradarequiredstringValues:nuncaapos_concluir
    intervaloReentradaHorasoptionalinteger
    execucoesoptionalobject
    execucoes.ativarequiredinteger
    execucoes.concluidarequiredinteger
    execucoes.canceladarequiredinteger
    execucoes.errorequiredinteger
    pausadaPoroptionalobject
    pausadaPor.motivorequiredstring
    pausadaPor.passorequiredstring
    pausadaPor.emrequiredstring
    pausadaPor.rotulooptionalstring
    ativadaEmoptionalstring
    silenciooptionalobject
    silencio.iniciorequiredstring
    silencio.fimrequiredstring
    tetoDeFrequenciaoptionalobject
    tetoDeFrequencia.mensagensrequiredinteger
    tetoDeFrequencia.diasrequiredinteger
    metaoptionalobject

    8 more fields in 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).

Error responses follow RFC 7807 (application/problem+json), with a stable code in the code field. See the error codes

curl example

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"      }    ]  }'
Required fields only. Swap the sample values for your own.

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.

Parameters

FieldInTypeDescription
idrequiredpathstring

Responses

  • 200Default Response

    Response fields and example
    FieldTypeDescription
    idrequiredstring
    namerequiredstring
    statusrequiredstringValues:rascunhoativapausadaarquivada
    gatilhorequiredobject
    gatilho.tipooptionalstringValues:segmento
    gatilho.listIdoptionalstring
    gatilho.nomeoptionalstring
    gatilho.segmentIdoptionalstring
    iniciorequiredstring
    passosrequiredobject[]
    passos[].idoptionalstring
    passos[].tipooptionalstringValues:fim
    passos[].canaloptionalstringValues:whatsappsmsemailrcs
    passos[].templateIdoptionalstring
    passos[].numberIdoptionalstring
    passos[].smsRouteoptionalstringValues:premiumotp
    passos[].rcsoptionalobject
    passos[].rcs.conteudorequiredobject
    passos[].rcs.fallbackoptionalobject
    passos[].rcs.rotaoptionalstringValues:easy_rcseasy_otp_rcs
    passos[].variaveisoptionalobject
    passos[].proximooptionalstring
    passos[].minutosoptionalinteger
    passos[].sobreoptionalstring
    passos[].sinaloptionalstringValues:entreguelidoclicourespondeuconverteu
    passos[].eventooptionalstring
    passos[].janelaMinutosoptionalinteger
    passos[].simoptionalstring
    passos[].naooptionalstring
    passos[].webhookIdoptionalstring
    passos[].seFalharoptionalstring
    passos[].diasoptionalinteger[]
    passos[].horaoptionalstring
    passos[].ramosoptionalobject[]
    passos[].ramos[].nomerequiredstring
    passos[].ramos[].pesorequiredinteger
    passos[].ramos[].proximorequiredstring
    passos[].campooptionalstring
    passos[].operadoroptionalstringValues:igualdiferentecontemexistenao_existemaiormenor
    passos[].valoroptionalstring
    reentradarequiredstringValues:nuncaapos_concluir
    intervaloReentradaHorasoptionalinteger
    execucoesoptionalobject
    execucoes.ativarequiredinteger
    execucoes.concluidarequiredinteger
    execucoes.canceladarequiredinteger
    execucoes.errorequiredinteger
    pausadaPoroptionalobject
    pausadaPor.motivorequiredstring
    pausadaPor.passorequiredstring
    pausadaPor.emrequiredstring
    pausadaPor.rotulooptionalstring
    ativadaEmoptionalstring
    silenciooptionalobject
    silencio.iniciorequiredstring
    silencio.fimrequiredstring
    tetoDeFrequenciaoptionalobject
    tetoDeFrequencia.mensagensrequiredinteger
    tetoDeFrequencia.diasrequiredinteger
    metaoptionalobject

    8 more fields in 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).

Error responses follow RFC 7807 (application/problem+json), with a stable code in the code field. See the error codes

curl example

cURL
curl 'https://api.messages.ccxcompany.co/v2/journeys/<id>' \  -H "Authorization: Bearer $CCX_API_KEY"
Required fields only. Swap the sample values for your own.

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.

Parameters

FieldInTypeDescription
permitirProblemasoptionalquerystringValues:truefalse
idrequiredpathstring

Request bodyapplication/json

FieldTypeDescription
namerequiredstring
gatilhorequiredobject
gatilho.tipooptionalstringValues:segmento
gatilho.listIdoptionalstring
gatilho.nomeoptionalstring
gatilho.segmentIdoptionalstring
iniciorequiredstring
passosrequiredobject[]
passos[].idoptionalstring
passos[].tipooptionalstringValues:fim
passos[].canaloptionalstringValues:whatsappsmsemailrcs
passos[].templateIdoptionalstring
passos[].numberIdoptionalstring
passos[].smsRouteoptionalstringValues:premiumotp
passos[].rcsoptionalobject
passos[].rcs.conteudorequiredobject
passos[].rcs.fallbackoptionalobject
passos[].rcs.rotaoptionalstringValues:easy_rcseasy_otp_rcs
passos[].variaveisoptionalobject
passos[].proximooptionalstring
passos[].minutosoptionalinteger
passos[].sobreoptionalstring
passos[].sinaloptionalstringValues:entreguelidoclicourespondeuconverteu
passos[].eventooptionalstring
passos[].janelaMinutosoptionalinteger
passos[].simoptionalstring
passos[].naooptionalstring
passos[].webhookIdoptionalstring
passos[].seFalharoptionalstring
passos[].diasoptionalinteger[]
passos[].horaoptionalstring
passos[].ramosoptionalobject[]
passos[].ramos[].nomerequiredstring
passos[].ramos[].pesorequiredinteger
passos[].ramos[].proximorequiredstring
passos[].campooptionalstring
passos[].operadoroptionalstringValues:igualdiferentecontemexistenao_existemaiormenor
passos[].valoroptionalstring
reentradaoptionalstringValues:nuncaapos_concluirDefault:nunca
intervaloReentradaHorasoptionalinteger
silenciooptionalobject
silencio.iniciorequiredstring
silencio.fimrequiredstring
tetoDeFrequenciaoptionalobject
tetoDeFrequencia.mensagensrequiredinteger
tetoDeFrequencia.diasrequiredinteger
metaoptionalobject
meta.eventorequiredstring
Full body example
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"  }}

Responses

  • 200Default Response

    Response fields and example
    FieldTypeDescription
    idrequiredstring
    namerequiredstring
    statusrequiredstringValues:rascunhoativapausadaarquivada
    gatilhorequiredobject
    gatilho.tipooptionalstringValues:segmento
    gatilho.listIdoptionalstring
    gatilho.nomeoptionalstring
    gatilho.segmentIdoptionalstring
    iniciorequiredstring
    passosrequiredobject[]
    passos[].idoptionalstring
    passos[].tipooptionalstringValues:fim
    passos[].canaloptionalstringValues:whatsappsmsemailrcs
    passos[].templateIdoptionalstring
    passos[].numberIdoptionalstring
    passos[].smsRouteoptionalstringValues:premiumotp
    passos[].rcsoptionalobject
    passos[].rcs.conteudorequiredobject
    passos[].rcs.fallbackoptionalobject
    passos[].rcs.rotaoptionalstringValues:easy_rcseasy_otp_rcs
    passos[].variaveisoptionalobject
    passos[].proximooptionalstring
    passos[].minutosoptionalinteger
    passos[].sobreoptionalstring
    passos[].sinaloptionalstringValues:entreguelidoclicourespondeuconverteu
    passos[].eventooptionalstring
    passos[].janelaMinutosoptionalinteger
    passos[].simoptionalstring
    passos[].naooptionalstring
    passos[].webhookIdoptionalstring
    passos[].seFalharoptionalstring
    passos[].diasoptionalinteger[]
    passos[].horaoptionalstring
    passos[].ramosoptionalobject[]
    passos[].ramos[].nomerequiredstring
    passos[].ramos[].pesorequiredinteger
    passos[].ramos[].proximorequiredstring
    passos[].campooptionalstring
    passos[].operadoroptionalstringValues:igualdiferentecontemexistenao_existemaiormenor
    passos[].valoroptionalstring
    reentradarequiredstringValues:nuncaapos_concluir
    intervaloReentradaHorasoptionalinteger
    execucoesoptionalobject
    execucoes.ativarequiredinteger
    execucoes.concluidarequiredinteger
    execucoes.canceladarequiredinteger
    execucoes.errorequiredinteger
    pausadaPoroptionalobject
    pausadaPor.motivorequiredstring
    pausadaPor.passorequiredstring
    pausadaPor.emrequiredstring
    pausadaPor.rotulooptionalstring
    ativadaEmoptionalstring
    silenciooptionalobject
    silencio.iniciorequiredstring
    silencio.fimrequiredstring
    tetoDeFrequenciaoptionalobject
    tetoDeFrequencia.mensagensrequiredinteger
    tetoDeFrequencia.diasrequiredinteger
    metaoptionalobject

    8 more fields in 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).

Error responses follow RFC 7807 (application/problem+json), with a stable code in the code field. See the error codes

curl example

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"      }    ]  }'
Required fields only. Swap the sample values for your own.

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).

Parameters

FieldInTypeDescription
idrequiredpathstring

Responses

  • 200Default Response

    Response fields and example
    FieldTypeDescription
    idrequiredstring
    namerequiredstring
    statusrequiredstringValues:rascunhoativapausadaarquivada
    gatilhorequiredobject
    gatilho.tipooptionalstringValues:segmento
    gatilho.listIdoptionalstring
    gatilho.nomeoptionalstring
    gatilho.segmentIdoptionalstring
    iniciorequiredstring
    passosrequiredobject[]
    passos[].idoptionalstring
    passos[].tipooptionalstringValues:fim
    passos[].canaloptionalstringValues:whatsappsmsemailrcs
    passos[].templateIdoptionalstring
    passos[].numberIdoptionalstring
    passos[].smsRouteoptionalstringValues:premiumotp
    passos[].rcsoptionalobject
    passos[].rcs.conteudorequiredobject
    passos[].rcs.fallbackoptionalobject
    passos[].rcs.rotaoptionalstringValues:easy_rcseasy_otp_rcs
    passos[].variaveisoptionalobject
    passos[].proximooptionalstring
    passos[].minutosoptionalinteger
    passos[].sobreoptionalstring
    passos[].sinaloptionalstringValues:entreguelidoclicourespondeuconverteu
    passos[].eventooptionalstring
    passos[].janelaMinutosoptionalinteger
    passos[].simoptionalstring
    passos[].naooptionalstring
    passos[].webhookIdoptionalstring
    passos[].seFalharoptionalstring
    passos[].diasoptionalinteger[]
    passos[].horaoptionalstring
    passos[].ramosoptionalobject[]
    passos[].ramos[].nomerequiredstring
    passos[].ramos[].pesorequiredinteger
    passos[].ramos[].proximorequiredstring
    passos[].campooptionalstring
    passos[].operadoroptionalstringValues:igualdiferentecontemexistenao_existemaiormenor
    passos[].valoroptionalstring
    reentradarequiredstringValues:nuncaapos_concluir
    intervaloReentradaHorasoptionalinteger
    execucoesoptionalobject
    execucoes.ativarequiredinteger
    execucoes.concluidarequiredinteger
    execucoes.canceladarequiredinteger
    execucoes.errorequiredinteger
    pausadaPoroptionalobject
    pausadaPor.motivorequiredstring
    pausadaPor.passorequiredstring
    pausadaPor.emrequiredstring
    pausadaPor.rotulooptionalstring
    ativadaEmoptionalstring
    silenciooptionalobject
    silencio.iniciorequiredstring
    silencio.fimrequiredstring
    tetoDeFrequenciaoptionalobject
    tetoDeFrequencia.mensagensrequiredinteger
    tetoDeFrequencia.diasrequiredinteger
    metaoptionalobject

    8 more fields in 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).

Error responses follow RFC 7807 (application/problem+json), with a stable code in the code field. See the error codes

curl example

cURL
curl -X POST 'https://api.messages.ccxcompany.co/v2/journeys/<id>/activate' \  -H "Authorization: Bearer $CCX_API_KEY"
Required fields only. Swap the sample values for your own.

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.

Parameters

FieldInTypeDescription
idrequiredpathstring

Responses

  • 200Default Response

    Response fields and example
    FieldTypeDescription
    idrequiredstring
    namerequiredstring
    statusrequiredstringValues:rascunhoativapausadaarquivada
    gatilhorequiredobject
    gatilho.tipooptionalstringValues:segmento
    gatilho.listIdoptionalstring
    gatilho.nomeoptionalstring
    gatilho.segmentIdoptionalstring
    iniciorequiredstring
    passosrequiredobject[]
    passos[].idoptionalstring
    passos[].tipooptionalstringValues:fim
    passos[].canaloptionalstringValues:whatsappsmsemailrcs
    passos[].templateIdoptionalstring
    passos[].numberIdoptionalstring
    passos[].smsRouteoptionalstringValues:premiumotp
    passos[].rcsoptionalobject
    passos[].rcs.conteudorequiredobject
    passos[].rcs.fallbackoptionalobject
    passos[].rcs.rotaoptionalstringValues:easy_rcseasy_otp_rcs
    passos[].variaveisoptionalobject
    passos[].proximooptionalstring
    passos[].minutosoptionalinteger
    passos[].sobreoptionalstring
    passos[].sinaloptionalstringValues:entreguelidoclicourespondeuconverteu
    passos[].eventooptionalstring
    passos[].janelaMinutosoptionalinteger
    passos[].simoptionalstring
    passos[].naooptionalstring
    passos[].webhookIdoptionalstring
    passos[].seFalharoptionalstring
    passos[].diasoptionalinteger[]
    passos[].horaoptionalstring
    passos[].ramosoptionalobject[]
    passos[].ramos[].nomerequiredstring
    passos[].ramos[].pesorequiredinteger
    passos[].ramos[].proximorequiredstring
    passos[].campooptionalstring
    passos[].operadoroptionalstringValues:igualdiferentecontemexistenao_existemaiormenor
    passos[].valoroptionalstring
    reentradarequiredstringValues:nuncaapos_concluir
    intervaloReentradaHorasoptionalinteger
    execucoesoptionalobject
    execucoes.ativarequiredinteger
    execucoes.concluidarequiredinteger
    execucoes.canceladarequiredinteger
    execucoes.errorequiredinteger
    pausadaPoroptionalobject
    pausadaPor.motivorequiredstring
    pausadaPor.passorequiredstring
    pausadaPor.emrequiredstring
    pausadaPor.rotulooptionalstring
    ativadaEmoptionalstring
    silenciooptionalobject
    silencio.iniciorequiredstring
    silencio.fimrequiredstring
    tetoDeFrequenciaoptionalobject
    tetoDeFrequencia.mensagensrequiredinteger
    tetoDeFrequencia.diasrequiredinteger
    metaoptionalobject

    8 more fields in 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).

Error responses follow RFC 7807 (application/problem+json), with a stable code in the code field. See the error codes

curl example

cURL
curl -X POST 'https://api.messages.ccxcompany.co/v2/journeys/<id>/pause' \  -H "Authorization: Bearer $CCX_API_KEY"
Required fields only. Swap the sample values for your own.

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.

Parameters

FieldInTypeDescription
idrequiredpathstring

Responses

  • 200Default Response

    Response fields and example
    FieldTypeDescription
    idrequiredstring
    namerequiredstring
    statusrequiredstringValues:rascunhoativapausadaarquivada
    gatilhorequiredobject
    gatilho.tipooptionalstringValues:segmento
    gatilho.listIdoptionalstring
    gatilho.nomeoptionalstring
    gatilho.segmentIdoptionalstring
    iniciorequiredstring
    passosrequiredobject[]
    passos[].idoptionalstring
    passos[].tipooptionalstringValues:fim
    passos[].canaloptionalstringValues:whatsappsmsemailrcs
    passos[].templateIdoptionalstring
    passos[].numberIdoptionalstring
    passos[].smsRouteoptionalstringValues:premiumotp
    passos[].rcsoptionalobject
    passos[].rcs.conteudorequiredobject
    passos[].rcs.fallbackoptionalobject
    passos[].rcs.rotaoptionalstringValues:easy_rcseasy_otp_rcs
    passos[].variaveisoptionalobject
    passos[].proximooptionalstring
    passos[].minutosoptionalinteger
    passos[].sobreoptionalstring
    passos[].sinaloptionalstringValues:entreguelidoclicourespondeuconverteu
    passos[].eventooptionalstring
    passos[].janelaMinutosoptionalinteger
    passos[].simoptionalstring
    passos[].naooptionalstring
    passos[].webhookIdoptionalstring
    passos[].seFalharoptionalstring
    passos[].diasoptionalinteger[]
    passos[].horaoptionalstring
    passos[].ramosoptionalobject[]
    passos[].ramos[].nomerequiredstring
    passos[].ramos[].pesorequiredinteger
    passos[].ramos[].proximorequiredstring
    passos[].campooptionalstring
    passos[].operadoroptionalstringValues:igualdiferentecontemexistenao_existemaiormenor
    passos[].valoroptionalstring
    reentradarequiredstringValues:nuncaapos_concluir
    intervaloReentradaHorasoptionalinteger
    execucoesoptionalobject
    execucoes.ativarequiredinteger
    execucoes.concluidarequiredinteger
    execucoes.canceladarequiredinteger
    execucoes.errorequiredinteger
    pausadaPoroptionalobject
    pausadaPor.motivorequiredstring
    pausadaPor.passorequiredstring
    pausadaPor.emrequiredstring
    pausadaPor.rotulooptionalstring
    ativadaEmoptionalstring
    silenciooptionalobject
    silencio.iniciorequiredstring
    silencio.fimrequiredstring
    tetoDeFrequenciaoptionalobject
    tetoDeFrequencia.mensagensrequiredinteger
    tetoDeFrequencia.diasrequiredinteger
    metaoptionalobject

    10 more fields in 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).

Error responses follow RFC 7807 (application/problem+json), with a stable code in the code field. See the error codes

curl example

cURL
curl -X POST 'https://api.messages.ccxcompany.co/v2/journeys/<id>/archive' \  -H "Authorization: Bearer $CCX_API_KEY"
Required fields only. Swap the sample values for your own.

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.

Parameters

FieldInTypeDescription
idrequiredpathstring

Request bodyapplication/json

FieldTypeDescription
entradasrequiredobject[]
entradas[].contactIdrequiredstring
entradas[].dadosoptionalobject
Full body example
JSON
{  "entradas": [    {      "contactId": "string",      "dados": {}    }  ]}

Responses

  • 200Default Response

    Response fields and example
    FieldTypeDescription
    resultadosrequiredobject[]
    resultados[].contactIdrequiredstring
    resultados[].resultadorequiredstringValues:inscritoja_estaja_passoureentrada_cedocontato_inexistenteopt_outrepetidoversao_substituida
    resultados[].runIdoptionalstring
    inscritosrequiredinteger
    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).

Error responses follow RFC 7807 (application/problem+json), with a stable code in the code field. See the error codes

curl example

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"      }    ]  }'
Required fields only. Swap the sample values for your own.

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.

Parameters

FieldInTypeDescription
statusoptionalquerystringValues:ativaconcluidacanceladaerro
contactIdoptionalquerystring
passooptionalquerystring
qoptionalquerystring
depoisoptionalquerystring
limitoptionalqueryinteger
idrequiredpathstring

Responses

  • 200Default Response

    Response fields and example
    FieldTypeDescription
    itemsrequiredobject[]
    items[].idrequiredstring
    items[].journeyIdrequiredstring
    items[].contactIdrequiredstring
    items[].contactNameoptionalstring
    items[].contactPhoneoptionalstring
    items[].statusrequiredstringValues:ativaconcluidacanceladaerro
    items[].passoAtualrequiredstring
    items[].proximoEmrequiredstring
    items[].origemrequiredobject
    items[].origem.tiporequiredstringValues:listaeventoapitestesegmento
    items[].origem.refoptionalstring
    items[].historicorequiredobject[]
    items[].historico[].passorequiredstring
    items[].historico[].atrequiredstring
    items[].historico[].resultadorequiredstring
    items[].historico[].scheduledMessageIdoptionalstring
    items[].errooptionalstring
    items[].metaEmoptionalstring
    items[].criadaEmrequiredstring
    items[].atualizadaEmrequiredstring
    depoisoptionalstring
    totaloptionalinteger
    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).

Error responses follow RFC 7807 (application/problem+json), with a stable code in the code field. See the error codes

curl example

cURL
curl 'https://api.messages.ccxcompany.co/v2/journeys/<id>/runs' \  -H "Authorization: Bearer $CCX_API_KEY"
Required fields only. Swap the sample values for your own.

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.

Parameters

FieldInTypeDescription
idrequiredpathstring

Responses

  • 200Default Response

    Response fields and example
    FieldTypeDescription
    passosrequiredobject
    entraramrequiredinteger
    execucoesrequiredobject
    execucoes.ativarequiredinteger
    execucoes.concluidarequiredinteger
    execucoes.canceladarequiredinteger
    execucoes.errorequiredinteger
    enviadosPorCanalrequiredobject
    custorequiredobject
    custo.totalCoinsrequiredinteger
    custo.porCanalrequiredobject
    custo.atualizadoAterequiredstring | null
    conversoesrequiredobject
    conversoes.eventosrequiredinteger
    conversoes.receitarequirednumber
    conversoes.moedarequiredstring
    calculadoEmrequiredstring
    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).

Error responses follow RFC 7807 (application/problem+json), with a stable code in the code field. See the error codes

curl example

cURL
curl 'https://api.messages.ccxcompany.co/v2/journeys/<id>/metricas' \  -H "Authorization: Bearer $CCX_API_KEY"
Required fields only. Swap the sample values for your own.

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.

Parameters

FieldInTypeDescription
idrequiredpathstring
runIdrequiredpathstring

Responses

  • 200Default Response

    Response fields and example
    FieldTypeDescription
    idrequiredstring
    journeyIdrequiredstring
    contactIdrequiredstring
    contactNameoptionalstring
    contactPhoneoptionalstring
    statusrequiredstringValues:ativaconcluidacanceladaerro
    passoAtualrequiredstring
    proximoEmrequiredstring
    origemrequiredobject
    origem.tiporequiredstringValues:listaeventoapitestesegmento
    origem.refoptionalstring
    historicorequiredobject[]
    historico[].passorequiredstring
    historico[].atrequiredstring
    historico[].resultadorequiredstring
    historico[].scheduledMessageIdoptionalstring
    errooptionalstring
    metaEmoptionalstring
    criadaEmrequiredstring
    atualizadaEmrequiredstring
    contatorequiredobject | null
    contato.nomerequiredstring
    contato.iniciaisrequiredstring
    contato.telefoneoptionalstring
    contato.emailoptionalstring
    dadosrequiredobject
    enviosrequiredobject[]
    envios[].passorequiredstring
    envios[].canalrequiredstringValues:whatsappsmsemailrcs
    envios[].situacaorequiredstring
    envios[].motivooptionalstring
    envios[].templateNomeoptionalstring
    envios[].previaoptionalstring
    envios[].messageIdoptionalstring
    envios[].enviadoEmoptionalstring
    envios[].entregueEmoptionalstring
    envios[].lidoEmoptionalstring
    conversoesrequiredobject[]
    conversoes[].nomerequiredstring
    conversoes[].emrequiredstring
    conversoes[].valoroptionalnumber
    conversoes[].moedaoptionalstring
    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).

Error responses follow RFC 7807 (application/problem+json), with a stable code in the code field. See the error codes

curl example

cURL
curl 'https://api.messages.ccxcompany.co/v2/journeys/<id>/runs/<runId>' \  -H "Authorization: Bearer $CCX_API_KEY"
Required fields only. Swap the sample values for your own.

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.

Parameters

FieldInTypeDescription
idrequiredpathstring
runIdrequiredpathstring

Responses

  • 200Default Response

    Response fields and example
    FieldTypeDescription
    canceladarequiredboolean
    enviosRecolhidosrequiredinteger
    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).

Error responses follow RFC 7807 (application/problem+json), with a stable code in the code field. See the error codes

curl example

cURL
curl -X POST 'https://api.messages.ccxcompany.co/v2/journeys/<id>/runs/<runId>/cancel' \  -H "Authorization: Bearer $CCX_API_KEY"
Required fields only. Swap the sample values for your own.

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.

Parameters

FieldInTypeDescription
idrequiredpathstring

Request bodyapplication/json

FieldTypeDescription
contactIdoptionalstring
identificadoroptionalstring
Full body example
JSON
{  "contactId": "string",  "identificador": "string"}

Responses

  • 201Default Response

    Response fields and example
    FieldTypeDescription
    runIdrequiredstring
    contatorequiredstring
    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).

Error responses follow RFC 7807 (application/problem+json), with a stable code in the code field. See the error codes

curl example

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 '{}'
Required fields only. Swap the sample values for your own.

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.

Parameters

FieldInTypeDescription
idrequiredpathstring

Responses

  • 201Default Response

    Response fields and example
    FieldTypeDescription
    idrequiredstring
    namerequiredstring
    statusrequiredstringValues:rascunhoativapausadaarquivada
    gatilhorequiredobject
    gatilho.tipooptionalstringValues:segmento
    gatilho.listIdoptionalstring
    gatilho.nomeoptionalstring
    gatilho.segmentIdoptionalstring
    iniciorequiredstring
    passosrequiredobject[]
    passos[].idoptionalstring
    passos[].tipooptionalstringValues:fim
    passos[].canaloptionalstringValues:whatsappsmsemailrcs
    passos[].templateIdoptionalstring
    passos[].numberIdoptionalstring
    passos[].smsRouteoptionalstringValues:premiumotp
    passos[].rcsoptionalobject
    passos[].rcs.conteudorequiredobject
    passos[].rcs.fallbackoptionalobject
    passos[].rcs.rotaoptionalstringValues:easy_rcseasy_otp_rcs
    passos[].variaveisoptionalobject
    passos[].proximooptionalstring
    passos[].minutosoptionalinteger
    passos[].sobreoptionalstring
    passos[].sinaloptionalstringValues:entreguelidoclicourespondeuconverteu
    passos[].eventooptionalstring
    passos[].janelaMinutosoptionalinteger
    passos[].simoptionalstring
    passos[].naooptionalstring
    passos[].webhookIdoptionalstring
    passos[].seFalharoptionalstring
    passos[].diasoptionalinteger[]
    passos[].horaoptionalstring
    passos[].ramosoptionalobject[]
    passos[].ramos[].nomerequiredstring
    passos[].ramos[].pesorequiredinteger
    passos[].ramos[].proximorequiredstring
    passos[].campooptionalstring
    passos[].operadoroptionalstringValues:igualdiferentecontemexistenao_existemaiormenor
    passos[].valoroptionalstring
    reentradarequiredstringValues:nuncaapos_concluir
    intervaloReentradaHorasoptionalinteger
    execucoesoptionalobject
    execucoes.ativarequiredinteger
    execucoes.concluidarequiredinteger
    execucoes.canceladarequiredinteger
    execucoes.errorequiredinteger
    pausadaPoroptionalobject
    pausadaPor.motivorequiredstring
    pausadaPor.passorequiredstring
    pausadaPor.emrequiredstring
    pausadaPor.rotulooptionalstring
    ativadaEmoptionalstring
    silenciooptionalobject
    silencio.iniciorequiredstring
    silencio.fimrequiredstring
    tetoDeFrequenciaoptionalobject
    tetoDeFrequencia.mensagensrequiredinteger
    tetoDeFrequencia.diasrequiredinteger
    metaoptionalobject

    8 more fields in 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).

Error responses follow RFC 7807 (application/problem+json), with a stable code in the code field. See the error codes

curl example

cURL
curl -X POST 'https://api.messages.ccxcompany.co/v2/journeys/<id>/versao' \  -H "Authorization: Bearer $CCX_API_KEY"
Required fields only. Swap the sample values for your own.

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.

Parameters

FieldInTypeDescription
idrequiredpathstring

Responses

  • 201Default Response

    Response fields and example
    FieldTypeDescription
    idrequiredstring
    namerequiredstring
    statusrequiredstringValues:rascunhoativapausadaarquivada
    gatilhorequiredobject
    gatilho.tipooptionalstringValues:segmento
    gatilho.listIdoptionalstring
    gatilho.nomeoptionalstring
    gatilho.segmentIdoptionalstring
    iniciorequiredstring
    passosrequiredobject[]
    passos[].idoptionalstring
    passos[].tipooptionalstringValues:fim
    passos[].canaloptionalstringValues:whatsappsmsemailrcs
    passos[].templateIdoptionalstring
    passos[].numberIdoptionalstring
    passos[].smsRouteoptionalstringValues:premiumotp
    passos[].rcsoptionalobject
    passos[].rcs.conteudorequiredobject
    passos[].rcs.fallbackoptionalobject
    passos[].rcs.rotaoptionalstringValues:easy_rcseasy_otp_rcs
    passos[].variaveisoptionalobject
    passos[].proximooptionalstring
    passos[].minutosoptionalinteger
    passos[].sobreoptionalstring
    passos[].sinaloptionalstringValues:entreguelidoclicourespondeuconverteu
    passos[].eventooptionalstring
    passos[].janelaMinutosoptionalinteger
    passos[].simoptionalstring
    passos[].naooptionalstring
    passos[].webhookIdoptionalstring
    passos[].seFalharoptionalstring
    passos[].diasoptionalinteger[]
    passos[].horaoptionalstring
    passos[].ramosoptionalobject[]
    passos[].ramos[].nomerequiredstring
    passos[].ramos[].pesorequiredinteger
    passos[].ramos[].proximorequiredstring
    passos[].campooptionalstring
    passos[].operadoroptionalstringValues:igualdiferentecontemexistenao_existemaiormenor
    passos[].valoroptionalstring
    reentradarequiredstringValues:nuncaapos_concluir
    intervaloReentradaHorasoptionalinteger
    execucoesoptionalobject
    execucoes.ativarequiredinteger
    execucoes.concluidarequiredinteger
    execucoes.canceladarequiredinteger
    execucoes.errorequiredinteger
    pausadaPoroptionalobject
    pausadaPor.motivorequiredstring
    pausadaPor.passorequiredstring
    pausadaPor.emrequiredstring
    pausadaPor.rotulooptionalstring
    ativadaEmoptionalstring
    silenciooptionalobject
    silencio.iniciorequiredstring
    silencio.fimrequiredstring
    tetoDeFrequenciaoptionalobject
    tetoDeFrequencia.mensagensrequiredinteger
    tetoDeFrequencia.diasrequiredinteger
    metaoptionalobject

    8 more fields in 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).

Error responses follow RFC 7807 (application/problem+json), with a stable code in the code field. See the error codes

curl example

cURL
curl -X POST 'https://api.messages.ccxcompany.co/v2/journeys/<id>/duplicate' \  -H "Authorization: Bearer $CCX_API_KEY"
Required fields only. Swap the sample values for your own.

Stuck on a route? Talk to the people who run the API.

Sign up through the site and get a US$5 test credit.