Empieza gratis

Referencia de la API

Recorridos

Crea recorridos en borrador, pruébalos con un contacto, actívalos, páusalos o archívalos, añade contactos y sigue las ejecuciones y las cifras por paso.

  • 15 operaciones
  • URL basehttps://api.messages.ccxcompany.co
  • AutenticaciónBearer con tu clave de API

El texto técnico de abajo viene del contrato público, openapi.json, en el idioma en que se escribió el contrato.

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.

Respuestas

  • 200Default Response

    Campos y ejemplo de la respuesta
    CampoTipoDescripción
    itemsobligatorioobject[]
    items[].idobligatoriostring
    items[].nameobligatoriostring
    items[].statusobligatoriostringValores:rascunhoativapausadaarquivada
    items[].gatilhoobligatorioobject
    items[].gatilho.tipoopcionalstringValores:segmento
    items[].gatilho.listIdopcionalstring
    items[].gatilho.nomeopcionalstring
    items[].gatilho.segmentIdopcionalstring
    items[].reentradaobligatoriostringValores:nuncaapos_concluir
    items[].intervaloReentradaHorasopcionalinteger
    items[].execucoesopcionalobject
    items[].execucoes.ativaobligatoriointeger
    items[].execucoes.concluidaobligatoriointeger
    items[].execucoes.canceladaobligatoriointeger
    items[].execucoes.erroobligatoriointeger
    items[].pausadaPoropcionalobject
    items[].pausadaPor.motivoobligatoriostring
    items[].pausadaPor.passoobligatoriostring
    items[].pausadaPor.emobligatoriostring
    items[].pausadaPor.rotuloopcionalstring
    items[].ativadaEmopcionalstring
    items[].silencioopcionalobject
    items[].silencio.inicioobligatoriostring
    items[].silencio.fimobligatoriostring
    items[].tetoDeFrequenciaopcionalobject
    items[].tetoDeFrequencia.mensagensobligatoriointeger
    items[].tetoDeFrequencia.diasobligatoriointeger
    items[].metaopcionalobject
    items[].meta.eventoobligatoriostring
    items[].versaoopcionalinteger
    items[].versaoDeopcionalstring
    items[].substituidaPoropcionalstring
    items[].entradasEncerradasopcionalboolean
    items[].createdAtobligatoriostring
    items[].updatedAtobligatoriostring
    items[].canaisobligatoriostring[]
    items[].fluxoobligatoriostring[]
    items[].metaEventoopcionalstring
    items[].listaopcionalobject
    items[].lista.nomeobligatoriostring
    items[].lista.tamanhoobligatoriointeger
    items[].segmentoopcionalobject
    items[].segmento.nomeobligatoriostring
    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).

Las respuestas de error siguen el formato RFC 7807 (application/problem+json), con un código estable en el campo code. Ver los códigos de error

Ejemplo en curl

cURL
curl 'https://api.messages.ccxcompany.co/v2/journeys' \  -H "Authorization: Bearer $CCX_API_KEY"
Solo los campos obligatorios. Cambia los valores de ejemplo por los tuyos.

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

CampoDóndeTipoDescripción
permitirProblemasopcionalquerystringValores:truefalse

Cuerpo de la peticiónapplication/json

CampoTipoDescripción
nameobligatoriostring
gatilhoobligatorioobject
gatilho.tipoopcionalstringValores:segmento
gatilho.listIdopcionalstring
gatilho.nomeopcionalstring
gatilho.segmentIdopcionalstring
inicioobligatoriostring
passosobligatorioobject[]
passos[].idopcionalstring
passos[].tipoopcionalstringValores:fim
passos[].canalopcionalstringValores:whatsappsmsemailrcs
passos[].templateIdopcionalstring
passos[].numberIdopcionalstring
passos[].smsRouteopcionalstringValores:premiumotp
passos[].rcsopcionalobject
passos[].rcs.conteudoobligatorioobject
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[].nomeobligatoriostring
passos[].ramos[].pesoobligatoriointeger
passos[].ramos[].proximoobligatoriostring
passos[].campoopcionalstring
passos[].operadoropcionalstringValores:igualdiferentecontemexistenao_existemaiormenor
passos[].valoropcionalstring
reentradaopcionalstringValores:nuncaapos_concluirPor defecto:nunca
intervaloReentradaHorasopcionalinteger
silencioopcionalobject
silencio.inicioobligatoriostring
silencio.fimobligatoriostring
tetoDeFrequenciaopcionalobject
tetoDeFrequencia.mensagensobligatoriointeger
tetoDeFrequencia.diasobligatoriointeger
metaopcionalobject
meta.eventoobligatoriostring
Ejemplo completo del cuerpo
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"  }}

Respuestas

  • 201Default Response

    Campos y ejemplo de la respuesta
    CampoTipoDescripción
    idobligatoriostring
    nameobligatoriostring
    statusobligatoriostringValores:rascunhoativapausadaarquivada
    gatilhoobligatorioobject
    gatilho.tipoopcionalstringValores:segmento
    gatilho.listIdopcionalstring
    gatilho.nomeopcionalstring
    gatilho.segmentIdopcionalstring
    inicioobligatoriostring
    passosobligatorioobject[]
    passos[].idopcionalstring
    passos[].tipoopcionalstringValores:fim
    passos[].canalopcionalstringValores:whatsappsmsemailrcs
    passos[].templateIdopcionalstring
    passos[].numberIdopcionalstring
    passos[].smsRouteopcionalstringValores:premiumotp
    passos[].rcsopcionalobject
    passos[].rcs.conteudoobligatorioobject
    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[].nomeobligatoriostring
    passos[].ramos[].pesoobligatoriointeger
    passos[].ramos[].proximoobligatoriostring
    passos[].campoopcionalstring
    passos[].operadoropcionalstringValores:igualdiferentecontemexistenao_existemaiormenor
    passos[].valoropcionalstring
    reentradaobligatoriostringValores:nuncaapos_concluir
    intervaloReentradaHorasopcionalinteger
    execucoesopcionalobject
    execucoes.ativaobligatoriointeger
    execucoes.concluidaobligatoriointeger
    execucoes.canceladaobligatoriointeger
    execucoes.erroobligatoriointeger
    pausadaPoropcionalobject
    pausadaPor.motivoobligatoriostring
    pausadaPor.passoobligatoriostring
    pausadaPor.emobligatoriostring
    pausadaPor.rotuloopcionalstring
    ativadaEmopcionalstring
    silencioopcionalobject
    silencio.inicioobligatoriostring
    silencio.fimobligatoriostring
    tetoDeFrequenciaopcionalobject
    tetoDeFrequencia.mensagensobligatoriointeger
    tetoDeFrequencia.diasobligatoriointeger
    metaopcionalobject

    8 campos más en 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).

Las respuestas de error siguen el formato RFC 7807 (application/problem+json), con un código estable en el campo code. Ver los códigos de error

Ejemplo en 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"      }    ]  }'
Solo los campos obligatorios. Cambia los valores de ejemplo por los tuyos.

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

CampoDóndeTipoDescripción
idobligatoriorutastring

Respuestas

  • 200Default Response

    Campos y ejemplo de la respuesta
    CampoTipoDescripción
    idobligatoriostring
    nameobligatoriostring
    statusobligatoriostringValores:rascunhoativapausadaarquivada
    gatilhoobligatorioobject
    gatilho.tipoopcionalstringValores:segmento
    gatilho.listIdopcionalstring
    gatilho.nomeopcionalstring
    gatilho.segmentIdopcionalstring
    inicioobligatoriostring
    passosobligatorioobject[]
    passos[].idopcionalstring
    passos[].tipoopcionalstringValores:fim
    passos[].canalopcionalstringValores:whatsappsmsemailrcs
    passos[].templateIdopcionalstring
    passos[].numberIdopcionalstring
    passos[].smsRouteopcionalstringValores:premiumotp
    passos[].rcsopcionalobject
    passos[].rcs.conteudoobligatorioobject
    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[].nomeobligatoriostring
    passos[].ramos[].pesoobligatoriointeger
    passos[].ramos[].proximoobligatoriostring
    passos[].campoopcionalstring
    passos[].operadoropcionalstringValores:igualdiferentecontemexistenao_existemaiormenor
    passos[].valoropcionalstring
    reentradaobligatoriostringValores:nuncaapos_concluir
    intervaloReentradaHorasopcionalinteger
    execucoesopcionalobject
    execucoes.ativaobligatoriointeger
    execucoes.concluidaobligatoriointeger
    execucoes.canceladaobligatoriointeger
    execucoes.erroobligatoriointeger
    pausadaPoropcionalobject
    pausadaPor.motivoobligatoriostring
    pausadaPor.passoobligatoriostring
    pausadaPor.emobligatoriostring
    pausadaPor.rotuloopcionalstring
    ativadaEmopcionalstring
    silencioopcionalobject
    silencio.inicioobligatoriostring
    silencio.fimobligatoriostring
    tetoDeFrequenciaopcionalobject
    tetoDeFrequencia.mensagensobligatoriointeger
    tetoDeFrequencia.diasobligatoriointeger
    metaopcionalobject

    8 campos más en 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).

Las respuestas de error siguen el formato RFC 7807 (application/problem+json), con un código estable en el campo code. Ver los códigos de error

Ejemplo en curl

cURL
curl 'https://api.messages.ccxcompany.co/v2/journeys/<id>' \  -H "Authorization: Bearer $CCX_API_KEY"
Solo los campos obligatorios. Cambia los valores de ejemplo por los tuyos.

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

CampoDóndeTipoDescripción
permitirProblemasopcionalquerystringValores:truefalse
idobligatoriorutastring

Cuerpo de la peticiónapplication/json

CampoTipoDescripción
nameobligatoriostring
gatilhoobligatorioobject
gatilho.tipoopcionalstringValores:segmento
gatilho.listIdopcionalstring
gatilho.nomeopcionalstring
gatilho.segmentIdopcionalstring
inicioobligatoriostring
passosobligatorioobject[]
passos[].idopcionalstring
passos[].tipoopcionalstringValores:fim
passos[].canalopcionalstringValores:whatsappsmsemailrcs
passos[].templateIdopcionalstring
passos[].numberIdopcionalstring
passos[].smsRouteopcionalstringValores:premiumotp
passos[].rcsopcionalobject
passos[].rcs.conteudoobligatorioobject
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[].nomeobligatoriostring
passos[].ramos[].pesoobligatoriointeger
passos[].ramos[].proximoobligatoriostring
passos[].campoopcionalstring
passos[].operadoropcionalstringValores:igualdiferentecontemexistenao_existemaiormenor
passos[].valoropcionalstring
reentradaopcionalstringValores:nuncaapos_concluirPor defecto:nunca
intervaloReentradaHorasopcionalinteger
silencioopcionalobject
silencio.inicioobligatoriostring
silencio.fimobligatoriostring
tetoDeFrequenciaopcionalobject
tetoDeFrequencia.mensagensobligatoriointeger
tetoDeFrequencia.diasobligatoriointeger
metaopcionalobject
meta.eventoobligatoriostring
Ejemplo completo del cuerpo
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"  }}

Respuestas

  • 200Default Response

    Campos y ejemplo de la respuesta
    CampoTipoDescripción
    idobligatoriostring
    nameobligatoriostring
    statusobligatoriostringValores:rascunhoativapausadaarquivada
    gatilhoobligatorioobject
    gatilho.tipoopcionalstringValores:segmento
    gatilho.listIdopcionalstring
    gatilho.nomeopcionalstring
    gatilho.segmentIdopcionalstring
    inicioobligatoriostring
    passosobligatorioobject[]
    passos[].idopcionalstring
    passos[].tipoopcionalstringValores:fim
    passos[].canalopcionalstringValores:whatsappsmsemailrcs
    passos[].templateIdopcionalstring
    passos[].numberIdopcionalstring
    passos[].smsRouteopcionalstringValores:premiumotp
    passos[].rcsopcionalobject
    passos[].rcs.conteudoobligatorioobject
    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[].nomeobligatoriostring
    passos[].ramos[].pesoobligatoriointeger
    passos[].ramos[].proximoobligatoriostring
    passos[].campoopcionalstring
    passos[].operadoropcionalstringValores:igualdiferentecontemexistenao_existemaiormenor
    passos[].valoropcionalstring
    reentradaobligatoriostringValores:nuncaapos_concluir
    intervaloReentradaHorasopcionalinteger
    execucoesopcionalobject
    execucoes.ativaobligatoriointeger
    execucoes.concluidaobligatoriointeger
    execucoes.canceladaobligatoriointeger
    execucoes.erroobligatoriointeger
    pausadaPoropcionalobject
    pausadaPor.motivoobligatoriostring
    pausadaPor.passoobligatoriostring
    pausadaPor.emobligatoriostring
    pausadaPor.rotuloopcionalstring
    ativadaEmopcionalstring
    silencioopcionalobject
    silencio.inicioobligatoriostring
    silencio.fimobligatoriostring
    tetoDeFrequenciaopcionalobject
    tetoDeFrequencia.mensagensobligatoriointeger
    tetoDeFrequencia.diasobligatoriointeger
    metaopcionalobject

    8 campos más en 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).

Las respuestas de error siguen el formato RFC 7807 (application/problem+json), con un código estable en el campo code. Ver los códigos de error

Ejemplo en 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"      }    ]  }'
Solo los campos obligatorios. Cambia los valores de ejemplo por los tuyos.

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

CampoDóndeTipoDescripción
idobligatoriorutastring

Respuestas

  • 200Default Response

    Campos y ejemplo de la respuesta
    CampoTipoDescripción
    idobligatoriostring
    nameobligatoriostring
    statusobligatoriostringValores:rascunhoativapausadaarquivada
    gatilhoobligatorioobject
    gatilho.tipoopcionalstringValores:segmento
    gatilho.listIdopcionalstring
    gatilho.nomeopcionalstring
    gatilho.segmentIdopcionalstring
    inicioobligatoriostring
    passosobligatorioobject[]
    passos[].idopcionalstring
    passos[].tipoopcionalstringValores:fim
    passos[].canalopcionalstringValores:whatsappsmsemailrcs
    passos[].templateIdopcionalstring
    passos[].numberIdopcionalstring
    passos[].smsRouteopcionalstringValores:premiumotp
    passos[].rcsopcionalobject
    passos[].rcs.conteudoobligatorioobject
    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[].nomeobligatoriostring
    passos[].ramos[].pesoobligatoriointeger
    passos[].ramos[].proximoobligatoriostring
    passos[].campoopcionalstring
    passos[].operadoropcionalstringValores:igualdiferentecontemexistenao_existemaiormenor
    passos[].valoropcionalstring
    reentradaobligatoriostringValores:nuncaapos_concluir
    intervaloReentradaHorasopcionalinteger
    execucoesopcionalobject
    execucoes.ativaobligatoriointeger
    execucoes.concluidaobligatoriointeger
    execucoes.canceladaobligatoriointeger
    execucoes.erroobligatoriointeger
    pausadaPoropcionalobject
    pausadaPor.motivoobligatoriostring
    pausadaPor.passoobligatoriostring
    pausadaPor.emobligatoriostring
    pausadaPor.rotuloopcionalstring
    ativadaEmopcionalstring
    silencioopcionalobject
    silencio.inicioobligatoriostring
    silencio.fimobligatoriostring
    tetoDeFrequenciaopcionalobject
    tetoDeFrequencia.mensagensobligatoriointeger
    tetoDeFrequencia.diasobligatoriointeger
    metaopcionalobject

    8 campos más en 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).

Las respuestas de error siguen el formato RFC 7807 (application/problem+json), con un código estable en el campo code. Ver los códigos de error

Ejemplo en curl

cURL
curl -X POST 'https://api.messages.ccxcompany.co/v2/journeys/<id>/activate' \  -H "Authorization: Bearer $CCX_API_KEY"
Solo los campos obligatorios. Cambia los valores de ejemplo por los tuyos.

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

CampoDóndeTipoDescripción
idobligatoriorutastring

Respuestas

  • 200Default Response

    Campos y ejemplo de la respuesta
    CampoTipoDescripción
    idobligatoriostring
    nameobligatoriostring
    statusobligatoriostringValores:rascunhoativapausadaarquivada
    gatilhoobligatorioobject
    gatilho.tipoopcionalstringValores:segmento
    gatilho.listIdopcionalstring
    gatilho.nomeopcionalstring
    gatilho.segmentIdopcionalstring
    inicioobligatoriostring
    passosobligatorioobject[]
    passos[].idopcionalstring
    passos[].tipoopcionalstringValores:fim
    passos[].canalopcionalstringValores:whatsappsmsemailrcs
    passos[].templateIdopcionalstring
    passos[].numberIdopcionalstring
    passos[].smsRouteopcionalstringValores:premiumotp
    passos[].rcsopcionalobject
    passos[].rcs.conteudoobligatorioobject
    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[].nomeobligatoriostring
    passos[].ramos[].pesoobligatoriointeger
    passos[].ramos[].proximoobligatoriostring
    passos[].campoopcionalstring
    passos[].operadoropcionalstringValores:igualdiferentecontemexistenao_existemaiormenor
    passos[].valoropcionalstring
    reentradaobligatoriostringValores:nuncaapos_concluir
    intervaloReentradaHorasopcionalinteger
    execucoesopcionalobject
    execucoes.ativaobligatoriointeger
    execucoes.concluidaobligatoriointeger
    execucoes.canceladaobligatoriointeger
    execucoes.erroobligatoriointeger
    pausadaPoropcionalobject
    pausadaPor.motivoobligatoriostring
    pausadaPor.passoobligatoriostring
    pausadaPor.emobligatoriostring
    pausadaPor.rotuloopcionalstring
    ativadaEmopcionalstring
    silencioopcionalobject
    silencio.inicioobligatoriostring
    silencio.fimobligatoriostring
    tetoDeFrequenciaopcionalobject
    tetoDeFrequencia.mensagensobligatoriointeger
    tetoDeFrequencia.diasobligatoriointeger
    metaopcionalobject

    8 campos más en 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).

Las respuestas de error siguen el formato RFC 7807 (application/problem+json), con un código estable en el campo code. Ver los códigos de error

Ejemplo en curl

cURL
curl -X POST 'https://api.messages.ccxcompany.co/v2/journeys/<id>/pause' \  -H "Authorization: Bearer $CCX_API_KEY"
Solo los campos obligatorios. Cambia los valores de ejemplo por los tuyos.

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

CampoDóndeTipoDescripción
idobligatoriorutastring

Respuestas

  • 200Default Response

    Campos y ejemplo de la respuesta
    CampoTipoDescripción
    idobligatoriostring
    nameobligatoriostring
    statusobligatoriostringValores:rascunhoativapausadaarquivada
    gatilhoobligatorioobject
    gatilho.tipoopcionalstringValores:segmento
    gatilho.listIdopcionalstring
    gatilho.nomeopcionalstring
    gatilho.segmentIdopcionalstring
    inicioobligatoriostring
    passosobligatorioobject[]
    passos[].idopcionalstring
    passos[].tipoopcionalstringValores:fim
    passos[].canalopcionalstringValores:whatsappsmsemailrcs
    passos[].templateIdopcionalstring
    passos[].numberIdopcionalstring
    passos[].smsRouteopcionalstringValores:premiumotp
    passos[].rcsopcionalobject
    passos[].rcs.conteudoobligatorioobject
    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[].nomeobligatoriostring
    passos[].ramos[].pesoobligatoriointeger
    passos[].ramos[].proximoobligatoriostring
    passos[].campoopcionalstring
    passos[].operadoropcionalstringValores:igualdiferentecontemexistenao_existemaiormenor
    passos[].valoropcionalstring
    reentradaobligatoriostringValores:nuncaapos_concluir
    intervaloReentradaHorasopcionalinteger
    execucoesopcionalobject
    execucoes.ativaobligatoriointeger
    execucoes.concluidaobligatoriointeger
    execucoes.canceladaobligatoriointeger
    execucoes.erroobligatoriointeger
    pausadaPoropcionalobject
    pausadaPor.motivoobligatoriostring
    pausadaPor.passoobligatoriostring
    pausadaPor.emobligatoriostring
    pausadaPor.rotuloopcionalstring
    ativadaEmopcionalstring
    silencioopcionalobject
    silencio.inicioobligatoriostring
    silencio.fimobligatoriostring
    tetoDeFrequenciaopcionalobject
    tetoDeFrequencia.mensagensobligatoriointeger
    tetoDeFrequencia.diasobligatoriointeger
    metaopcionalobject

    10 campos más en 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).

Las respuestas de error siguen el formato RFC 7807 (application/problem+json), con un código estable en el campo code. Ver los códigos de error

Ejemplo en curl

cURL
curl -X POST 'https://api.messages.ccxcompany.co/v2/journeys/<id>/archive' \  -H "Authorization: Bearer $CCX_API_KEY"
Solo los campos obligatorios. Cambia los valores de ejemplo por los tuyos.

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

CampoDóndeTipoDescripción
idobligatoriorutastring

Cuerpo de la peticiónapplication/json

CampoTipoDescripción
entradasobligatorioobject[]
entradas[].contactIdobligatoriostring
entradas[].dadosopcionalobject
Ejemplo completo del cuerpo
JSON
{  "entradas": [    {      "contactId": "string",      "dados": {}    }  ]}

Respuestas

  • 200Default Response

    Campos y ejemplo de la respuesta
    CampoTipoDescripción
    resultadosobligatorioobject[]
    resultados[].contactIdobligatoriostring
    resultados[].resultadoobligatoriostringValores:inscritoja_estaja_passoureentrada_cedocontato_inexistenteopt_outrepetidoversao_substituida
    resultados[].runIdopcionalstring
    inscritosobligatoriointeger
    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).

Las respuestas de error siguen el formato RFC 7807 (application/problem+json), con un código estable en el campo code. Ver los códigos de error

Ejemplo en 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"      }    ]  }'
Solo los campos obligatorios. Cambia los valores de ejemplo por los tuyos.

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

CampoDóndeTipoDescripción
statusopcionalquerystringValores:ativaconcluidacanceladaerro
contactIdopcionalquerystring
passoopcionalquerystring
qopcionalquerystring
depoisopcionalquerystring
limitopcionalqueryinteger
idobligatoriorutastring

Respuestas

  • 200Default Response

    Campos y ejemplo de la respuesta
    CampoTipoDescripción
    itemsobligatorioobject[]
    items[].idobligatoriostring
    items[].journeyIdobligatoriostring
    items[].contactIdobligatoriostring
    items[].contactNameopcionalstring
    items[].contactPhoneopcionalstring
    items[].statusobligatoriostringValores:ativaconcluidacanceladaerro
    items[].passoAtualobligatoriostring
    items[].proximoEmobligatoriostring
    items[].origemobligatorioobject
    items[].origem.tipoobligatoriostringValores:listaeventoapitestesegmento
    items[].origem.refopcionalstring
    items[].historicoobligatorioobject[]
    items[].historico[].passoobligatoriostring
    items[].historico[].atobligatoriostring
    items[].historico[].resultadoobligatoriostring
    items[].historico[].scheduledMessageIdopcionalstring
    items[].erroopcionalstring
    items[].metaEmopcionalstring
    items[].criadaEmobligatoriostring
    items[].atualizadaEmobligatoriostring
    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).

Las respuestas de error siguen el formato RFC 7807 (application/problem+json), con un código estable en el campo code. Ver los códigos de error

Ejemplo en curl

cURL
curl 'https://api.messages.ccxcompany.co/v2/journeys/<id>/runs' \  -H "Authorization: Bearer $CCX_API_KEY"
Solo los campos obligatorios. Cambia los valores de ejemplo por los tuyos.

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

CampoDóndeTipoDescripción
idobligatoriorutastring

Respuestas

  • 200Default Response

    Campos y ejemplo de la respuesta
    CampoTipoDescripción
    passosobligatorioobject
    entraramobligatoriointeger
    execucoesobligatorioobject
    execucoes.ativaobligatoriointeger
    execucoes.concluidaobligatoriointeger
    execucoes.canceladaobligatoriointeger
    execucoes.erroobligatoriointeger
    enviadosPorCanalobligatorioobject
    custoobligatorioobject
    custo.totalCoinsobligatoriointeger
    custo.porCanalobligatorioobject
    custo.atualizadoAteobligatoriostring | null
    conversoesobligatorioobject
    conversoes.eventosobligatoriointeger
    conversoes.receitaobligatorionumber
    conversoes.moedaobligatoriostring
    calculadoEmobligatoriostring
    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).

Las respuestas de error siguen el formato RFC 7807 (application/problem+json), con un código estable en el campo code. Ver los códigos de error

Ejemplo en curl

cURL
curl 'https://api.messages.ccxcompany.co/v2/journeys/<id>/metricas' \  -H "Authorization: Bearer $CCX_API_KEY"
Solo los campos obligatorios. Cambia los valores de ejemplo por los tuyos.

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

CampoDóndeTipoDescripción
idobligatoriorutastring
runIdobligatoriorutastring

Respuestas

  • 200Default Response

    Campos y ejemplo de la respuesta
    CampoTipoDescripción
    idobligatoriostring
    journeyIdobligatoriostring
    contactIdobligatoriostring
    contactNameopcionalstring
    contactPhoneopcionalstring
    statusobligatoriostringValores:ativaconcluidacanceladaerro
    passoAtualobligatoriostring
    proximoEmobligatoriostring
    origemobligatorioobject
    origem.tipoobligatoriostringValores:listaeventoapitestesegmento
    origem.refopcionalstring
    historicoobligatorioobject[]
    historico[].passoobligatoriostring
    historico[].atobligatoriostring
    historico[].resultadoobligatoriostring
    historico[].scheduledMessageIdopcionalstring
    erroopcionalstring
    metaEmopcionalstring
    criadaEmobligatoriostring
    atualizadaEmobligatoriostring
    contatoobligatorioobject | null
    contato.nomeobligatoriostring
    contato.iniciaisobligatoriostring
    contato.telefoneopcionalstring
    contato.emailopcionalstring
    dadosobligatorioobject
    enviosobligatorioobject[]
    envios[].passoobligatoriostring
    envios[].canalobligatoriostringValores:whatsappsmsemailrcs
    envios[].situacaoobligatoriostring
    envios[].motivoopcionalstring
    envios[].templateNomeopcionalstring
    envios[].previaopcionalstring
    envios[].messageIdopcionalstring
    envios[].enviadoEmopcionalstring
    envios[].entregueEmopcionalstring
    envios[].lidoEmopcionalstring
    conversoesobligatorioobject[]
    conversoes[].nomeobligatoriostring
    conversoes[].emobligatoriostring
    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).

Las respuestas de error siguen el formato RFC 7807 (application/problem+json), con un código estable en el campo code. Ver los códigos de error

Ejemplo en curl

cURL
curl 'https://api.messages.ccxcompany.co/v2/journeys/<id>/runs/<runId>' \  -H "Authorization: Bearer $CCX_API_KEY"
Solo los campos obligatorios. Cambia los valores de ejemplo por los tuyos.

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

CampoDóndeTipoDescripción
idobligatoriorutastring
runIdobligatoriorutastring

Respuestas

  • 200Default Response

    Campos y ejemplo de la respuesta
    CampoTipoDescripción
    canceladaobligatorioboolean
    enviosRecolhidosobligatoriointeger
    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).

Las respuestas de error siguen el formato RFC 7807 (application/problem+json), con un código estable en el campo code. Ver los códigos de error

Ejemplo en curl

cURL
curl -X POST 'https://api.messages.ccxcompany.co/v2/journeys/<id>/runs/<runId>/cancel' \  -H "Authorization: Bearer $CCX_API_KEY"
Solo los campos obligatorios. Cambia los valores de ejemplo por los tuyos.

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

CampoDóndeTipoDescripción
idobligatoriorutastring

Cuerpo de la peticiónapplication/json

CampoTipoDescripción
contactIdopcionalstring
identificadoropcionalstring
Ejemplo completo del cuerpo
JSON
{  "contactId": "string",  "identificador": "string"}

Respuestas

  • 201Default Response

    Campos y ejemplo de la respuesta
    CampoTipoDescripción
    runIdobligatoriostring
    contatoobligatoriostring
    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).

Las respuestas de error siguen el formato RFC 7807 (application/problem+json), con un código estable en el campo code. Ver los códigos de error

Ejemplo en 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 '{}'
Solo los campos obligatorios. Cambia los valores de ejemplo por los tuyos.

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

CampoDóndeTipoDescripción
idobligatoriorutastring

Respuestas

  • 201Default Response

    Campos y ejemplo de la respuesta
    CampoTipoDescripción
    idobligatoriostring
    nameobligatoriostring
    statusobligatoriostringValores:rascunhoativapausadaarquivada
    gatilhoobligatorioobject
    gatilho.tipoopcionalstringValores:segmento
    gatilho.listIdopcionalstring
    gatilho.nomeopcionalstring
    gatilho.segmentIdopcionalstring
    inicioobligatoriostring
    passosobligatorioobject[]
    passos[].idopcionalstring
    passos[].tipoopcionalstringValores:fim
    passos[].canalopcionalstringValores:whatsappsmsemailrcs
    passos[].templateIdopcionalstring
    passos[].numberIdopcionalstring
    passos[].smsRouteopcionalstringValores:premiumotp
    passos[].rcsopcionalobject
    passos[].rcs.conteudoobligatorioobject
    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[].nomeobligatoriostring
    passos[].ramos[].pesoobligatoriointeger
    passos[].ramos[].proximoobligatoriostring
    passos[].campoopcionalstring
    passos[].operadoropcionalstringValores:igualdiferentecontemexistenao_existemaiormenor
    passos[].valoropcionalstring
    reentradaobligatoriostringValores:nuncaapos_concluir
    intervaloReentradaHorasopcionalinteger
    execucoesopcionalobject
    execucoes.ativaobligatoriointeger
    execucoes.concluidaobligatoriointeger
    execucoes.canceladaobligatoriointeger
    execucoes.erroobligatoriointeger
    pausadaPoropcionalobject
    pausadaPor.motivoobligatoriostring
    pausadaPor.passoobligatoriostring
    pausadaPor.emobligatoriostring
    pausadaPor.rotuloopcionalstring
    ativadaEmopcionalstring
    silencioopcionalobject
    silencio.inicioobligatoriostring
    silencio.fimobligatoriostring
    tetoDeFrequenciaopcionalobject
    tetoDeFrequencia.mensagensobligatoriointeger
    tetoDeFrequencia.diasobligatoriointeger
    metaopcionalobject

    8 campos más en 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).

Las respuestas de error siguen el formato RFC 7807 (application/problem+json), con un código estable en el campo code. Ver los códigos de error

Ejemplo en curl

cURL
curl -X POST 'https://api.messages.ccxcompany.co/v2/journeys/<id>/versao' \  -H "Authorization: Bearer $CCX_API_KEY"
Solo los campos obligatorios. Cambia los valores de ejemplo por los tuyos.

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

CampoDóndeTipoDescripción
idobligatoriorutastring

Respuestas

  • 201Default Response

    Campos y ejemplo de la respuesta
    CampoTipoDescripción
    idobligatoriostring
    nameobligatoriostring
    statusobligatoriostringValores:rascunhoativapausadaarquivada
    gatilhoobligatorioobject
    gatilho.tipoopcionalstringValores:segmento
    gatilho.listIdopcionalstring
    gatilho.nomeopcionalstring
    gatilho.segmentIdopcionalstring
    inicioobligatoriostring
    passosobligatorioobject[]
    passos[].idopcionalstring
    passos[].tipoopcionalstringValores:fim
    passos[].canalopcionalstringValores:whatsappsmsemailrcs
    passos[].templateIdopcionalstring
    passos[].numberIdopcionalstring
    passos[].smsRouteopcionalstringValores:premiumotp
    passos[].rcsopcionalobject
    passos[].rcs.conteudoobligatorioobject
    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[].nomeobligatoriostring
    passos[].ramos[].pesoobligatoriointeger
    passos[].ramos[].proximoobligatoriostring
    passos[].campoopcionalstring
    passos[].operadoropcionalstringValores:igualdiferentecontemexistenao_existemaiormenor
    passos[].valoropcionalstring
    reentradaobligatoriostringValores:nuncaapos_concluir
    intervaloReentradaHorasopcionalinteger
    execucoesopcionalobject
    execucoes.ativaobligatoriointeger
    execucoes.concluidaobligatoriointeger
    execucoes.canceladaobligatoriointeger
    execucoes.erroobligatoriointeger
    pausadaPoropcionalobject
    pausadaPor.motivoobligatoriostring
    pausadaPor.passoobligatoriostring
    pausadaPor.emobligatoriostring
    pausadaPor.rotuloopcionalstring
    ativadaEmopcionalstring
    silencioopcionalobject
    silencio.inicioobligatoriostring
    silencio.fimobligatoriostring
    tetoDeFrequenciaopcionalobject
    tetoDeFrequencia.mensagensobligatoriointeger
    tetoDeFrequencia.diasobligatoriointeger
    metaopcionalobject

    8 campos más en 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).

Las respuestas de error siguen el formato RFC 7807 (application/problem+json), con un código estable en el campo code. Ver los códigos de error

Ejemplo en curl

cURL
curl -X POST 'https://api.messages.ccxcompany.co/v2/journeys/<id>/duplicate' \  -H "Authorization: Bearer $CCX_API_KEY"
Solo los campos obligatorios. Cambia los valores de ejemplo por los tuyos.

¿Atascado en una ruta? Habla con quienes mantienen la API.

Si creas la cuenta desde la web, recibes 5 US$ de crédito de prueba.