Referência

Partner API Reference

Endpoints públicos para integrar o backend do partner. Todas as chamadas usam a mesma base; a operação é selecionada por route.

Antes dos endpoints

Como ler esta referência

GET

Use ?route=NOME_DA_ROTA e envie os demais valores na query string. Não envie body.

POST / PATCH

Envie route no JSON ou na query. Use Content-Type: application/json.

Autenticação

Rotas de integração usam Partner API Key. Rotas de preferências/notificações usam o JWT do membro logado no Portal.

ConvençãoRegra
DatasISO 8601 em UTC, por exemplo 2026-07-24T12:00:00Z.
TelefonesPrefira E.164 sem espaços: 5511999999999. O campo cadastral aceita formatação, mas a Graph API espera formato internacional.
BooleanosUse JSON true/false ou query true/false.
IDsinstance_id e customer_id são UUIDs HookCloud. external_customer_id e instance_key são strings estáveis do seu SaaS.
IdempotênciaEm merge, movimentação e edições críticas, envie Idempotency-Key único por operação.
Resposta de erro{"error":{"code":"...","message":"...","details":...}}. Use o HTTP status e error.code na lógica do seu backend.
SDKs e coleções

Arquivos para importação

Gerador

Monte uma chamada

Escolha uma rota e gere um cURL com placeholders.

POSThttps://api.hookcloud.app/functions/v1/swift-worker#

Criar ou atualizar cliente

Cria o cliente final ou atualiza dados usando um ID externo estável.

Parâmetros detalhados

CampoLocalTipoObrigatórioValores / padrãoDescriçãoExemplo
routebodystringsimupsert-partner-customerSeleciona a operação.upsert-partner-customer
external_customer_idbodystring (1–200)simimutável e único dentro do partnerID estável do cliente no seu SaaS. Reutilizar o mesmo valor atualiza o mesmo cadastro.cliente_56790
customer_namebodystring (2–200)simtexto livreNome interno usado pelo partner. Não altera o nome verificado pela Meta.Clínica Mais Vida
customer_emailbodystring/e-mailnãonull ou e-mail válidoContato cadastral. Pode ser omitido ou enviado como null.contato@maisvida.com
customer_phonebodystring (6–40)nãoE.164 recomendadoContato cadastral; não é o número WhatsApp da instância.5511999999999
metadatabodyobject JSONnão{}Dados próprios do seu SaaS. Não envie segredos ou dados de cartão.{"plano":"pro"}

Erros mais comuns

error.codeHTTPQuando ocorre
missing_customer_fields400external_customer_id/customer_name ausentes
billing_access_restricted402/409novo cliente bloqueado por billing
customer_upsert_failed500falha de banco

Request

json
{
  "route": "upsert-partner-customer",
  "external_customer_id": "cliente_56790",
  "customer_name": "Clínica Mais Vida",
  "customer_email": "contato@maisvida.com",
  "customer_phone": "5511999999999",
  "metadata": { "plano": "pro", "origem": "saas" }
}

Resposta resumida

json
{
  "ok": true,
  "customer_id": "UUID_DO_CLIENTE",
  "external_customer_id": "cliente_56790",
  "status": "active"
}

Idempotência funcional: reutilize o mesmo external_customer_id para atualizar o mesmo cliente.

GEThttps://api.hookcloud.app/functions/v1/swift-worker?route=list-partner-customers#

Listar clientes

Consulta paginada por nome, e-mail, telefone, External ID e status.

Parâmetros detalhados

CampoLocalTipoObrigatórioValores / padrãoDescriçãoExemplo
routequerystringsimlist-partner-customersSeleciona a consulta.list-partner-customers
pagequeryintegernãopadrão 1; mínimo 1Página atual.1
page_sizequeryintegernãopadrão 50; 1–200Quantidade máxima por página.50
searchquerystringnãobusca parcialPesquisa nome, e-mail, telefone e external_customer_id.clinica
statusquerystringnãoactive, inactive, canceled, mergedFiltro exato do status local. Sem o parâmetro, retorna todos os status permitidos.active
include_mergedquerybooleannãofalseInclui cadastros de origem já mesclados.true
include_erasedquerybooleannãofalseInclui registros cujo PII foi eliminado administrativamente.false

Query

page, page_size, search, status, include_merged, include_erased.

GEThttps://api.hookcloud.app/functions/v1/swift-worker?route=get-partner-customer#

Consultar cliente

Use customer_id ou external_customer_id. Retorna instâncias e histórico recente.

Parâmetros detalhados

CampoLocalTipoObrigatórioValores / padrãoDescriçãoExemplo
routequerystringsimget-partner-customerSeleciona a consulta.get-partner-customer
customer_idqueryUUIDcondicionalexatamente um identificadorUUID interno retornado pela HookCloud.9b9e...
external_customer_idquerystringcondicionalexatamente um identificadorAlternativa usando o ID estável do seu SaaS.cliente_56790
PATCHhttps://api.hookcloud.app/functions/v1/swift-worker?route=update-partner-customer#

Editar cliente

Altera somente nome, e-mail e telefone.

Parâmetros detalhados

CampoLocalTipoObrigatórioValores / padrãoDescriçãoExemplo
routequery ou bodystringsimupdate-partner-customerSeleciona a operação.update-partner-customer
customer_idbodyUUIDsimUUID HookCloudCliente a editar.UUID_DO_CLIENTE
changes.customer_namebodystring (2–200)nãotexto livreNovo nome interno.Clínica Mais Vida
changes.customer_emailbodystring/nullnãoe-mail válido ou nullNovo e-mail cadastral.contato@maisvida.com
changes.customer_phonebodystring/nullnão6–40 caracteresNovo telefone cadastral.5511999999999
expected_updated_atbodyISO 8601recomendadotimestamp da última leituraControle de concorrência. Se o cadastro mudou depois desse horário, a API retorna 409.2026-07-23T12:00:00Z
reasonbodystring até 500nãotexto auditávelMotivo exibido no histórico.Correção cadastral
Idempotency-Keyheaderstring 8–200nãoUUID recomendadoEvita repetir a mesma edição após timeout.550e8400-e29b-41d4-a716-446655440000

Erros mais comuns

error.codeHTTPQuando ocorre
immutable_customer_fields400tentativa de alterar identificador/status
invalid_customer_email400e-mail inválido
customer_changed_since_last_read409expected_updated_at antigo
idempotency_key_reused409mesma chave com payload diferente
json
{
  "customer_id": "UUID_DO_CLIENTE",
  "changes": {
    "customer_name": "Clínica Mais Vida",
    "customer_email": "contato@maisvida.com",
    "customer_phone": "5511999999999"
  },
  "expected_updated_at": "2026-07-23T12:00:00Z",
  "reason": "Correção cadastral"
}

Imutáveis: external_customer_id e instance_key.

GEThttps://api.hookcloud.app/functions/v1/swift-worker?route=get-partner-customer-history#

Histórico do cliente

Retorna alterações, merge e movimentações com paginação.

Parâmetros detalhados

CampoLocalTipoObrigatórioValores / padrãoDescriçãoExemplo
routequerystringsimget-partner-customer-historySeleciona a consulta.get-partner-customer-history
customer_id / external_customer_idqueryUUID/stringsimum dos doisIdentifica o cliente.UUID_DO_CLIENTE
pagequeryintegernãopadrão 1Página.1
page_sizequeryintegernãopadrão 50; máximo 200Itens por página.50
POSThttps://api.hookcloud.app/functions/v1/swift-worker#

Mesclar clientes

Move instâncias para o cadastro principal sem desconectar os números.

Parâmetros detalhados

CampoLocalTipoObrigatórioValores / padrãoDescriçãoExemplo
routebodystringsimmerge-partner-customersSeleciona a operação.merge-partner-customers
source_customer_idbodyUUIDsimcliente duplicadoCadastro que será arquivado/mesclado.UUID_DUPLICADO
target_customer_idbodyUUIDsimcliente principalCadastro que permanecerá ativo e receberá as instâncias.UUID_PRINCIPAL
reasonbodystring até 500nãoauditávelMotivo da mesclagem.Cadastro duplicado
Idempotency-KeyheaderstringrecomendadoUUID únicoEvita aplicar o merge duas vezes.UUID_UNICO
json
{
  "route": "merge-partner-customers",
  "source_customer_id": "UUID_DUPLICADO",
  "target_customer_id": "UUID_PRINCIPAL",
  "reason": "Cadastro duplicado"
}
POSThttps://api.hookcloud.app/functions/v1/swift-worker#

Mover instância para outro cliente

Altera somente o vínculo interno. Instance Key, Meta token e callback não mudam.

Parâmetros detalhados

CampoLocalTipoObrigatórioValores / padrãoDescriçãoExemplo
routebodystringsimmove-partner-instance-to-customerSeleciona a operação.move-partner-instance-to-customer
instance_idbodyUUIDsiminstância existenteNúmero/instância a mover.UUID_DA_INSTANCIA
target_customer_idbodyUUIDsimcliente ativo do mesmo partnerNovo vínculo interno.UUID_CLIENTE_DESTINO
reasonbodystring até 500nãoauditávelMotivo da correção.Número conectado no cliente errado
Idempotency-KeyheaderstringrecomendadoUUID únicoEvita repetição após timeout.UUID_UNICO
json
{
  "route": "move-partner-instance-to-customer",
  "instance_id": "UUID_DA_INSTANCIA",
  "target_customer_id": "UUID_DO_CLIENTE",
  "reason": "Vínculo incorreto"
}
POSThttps://api.hookcloud.app/functions/v1/swift-worker#

Criar instância

Cria a linha do cliente e pode gerar a sessão de conexão no mesmo request.

Parâmetros detalhados

CampoLocalTipoObrigatórioValores / padrãoDescriçãoExemplo
routebodystringsimcreate-customer-instanceSeleciona a operação.create-customer-instance
partner_customer_idbodyUUIDcondicionalou external_customer_idUUID do cliente.UUID_DO_CLIENTE
external_customer_idbodystringcondicionalou partner_customer_idAlternativa para localizar o cliente.cliente_56790
instance_keybodystringsimúnico por partner; imutávelChave estável da linha no seu sistema. Use letras, números, hífen/underscore.cliente_56790-whatsapp-principal
instance_namebodystringnãogerado automaticamenteApelido interno; o nome oficial vem da Meta.WhatsApp principal
create_connect_sessionbodybooleannãotrueSe true, já retorna connect_url.true
return_urlbodyHTTPS URLnãoURL padrão do partnerDestino ao fechar o Connect Flow.https://app.seusistema.com/integracoes
cancel_urlbodyHTTPS URLnãofallback do return_urlDestino se o usuário cancelar.https://app.seusistema.com/integracoes
success_url / error_urlbodyHTTPS URLnãotelas internas HookCloudNormalmente deixe a HookCloud usar os padrões do Connect Flow.https://partner-connect.hookcloud.app/connect/success
metadatabodyobjectnão{}Metadados próprios sem segredos.{"canal":"suporte"}

Erros mais comuns

error.codeHTTPQuando ocorre
customer_not_found404cliente não existe
customer_inactive409reative o cliente primeiro
meta_risk_customer_blocked409política de risco bloqueou conexão
billing_access_restricted402/409assinatura não permite expansão

Request

json
{
  "route": "create-customer-instance",
  "external_customer_id": "cliente_56790",
  "instance_key": "cliente_56790-whatsapp-principal",
  "instance_name": "Atendimento principal",
  "create_connect_session": true,
  "return_url": "https://app.seusistema.com/integracoes/whatsapp",
  "cancel_url": "https://app.seusistema.com/integracoes/whatsapp",
  "success_url": "https://partner-connect.hookcloud.app/connect/success",
  "error_url": "https://partner-connect.hookcloud.app/connect/error"
}

Resposta resumida

json
{
  "ok": true,
  "instance_id": "UUID_DA_INSTANCIA",
  "connect_session_id": "UUID_DA_SESSAO",
  "connect_url": "https://partner-connect.hookcloud.app/connect?token=..."
}

instance_name é opcional e interno; o nome oficial vem em verified_name.

POSThttps://api.hookcloud.app/functions/v1/swift-worker#

Gerar connect ou reconnect

Gera uma sessão curta para conectar ou reconectar uma instância existente.

Parâmetros detalhados

CampoLocalTipoObrigatórioValores / padrãoDescriçãoExemplo
routebodystringsimcreate-connect-sessionSeleciona a operação.create-connect-session
instance_id / instance_keybodyUUID/stringsimum dos doisIdentifica a instância.UUID_DA_INSTANCIA
modebodyenumnãoconnect | reconnect; padrão connectUse reconnect quando a instância já teve uma conexão Meta.reconnect
return_urlbodyHTTPS URLnãoURL padrão do partnerDestino ao concluir/fechar.https://app.seusistema.com/integracoes
ttl_hoursbodynumbernãolimite definido pelo backendTempo de validade da sessão.2
registration_overridebodybooleansomente admin HookCloudfalseIgnora a guarda local de erro Meta 133016 após validação manual.true

Erros mais comuns

error.codeHTTPQuando ocorre
missing_identifier400sem instance_id/instance_key
partner_customer_inactive409cliente inativo; reative antes
meta_registration_rate_limited429Meta 133016/cooldown
instance_not_found404instância inexistente

Request

json
{
  "route": "create-connect-session",
  "instance_id": "UUID_DA_INSTANCIA",
  "mode": "reconnect",
  "return_url": "https://app.seusistema.com/integracoes/whatsapp",
  "cancel_url": "https://app.seusistema.com/integracoes/whatsapp",
  "success_url": "https://partner-connect.hookcloud.app/connect/success",
  "error_url": "https://partner-connect.hookcloud.app/connect/error"
}

mode pode ser connect ou reconnect. Abra connect_url no navegador do cliente final.

GEThttps://api.hookcloud.app/functions/v1/swift-worker?route=get-partner-instance#

Consultar instância

Retorna status, número, nome verificado, IDs Meta, callback e links úteis.

Parâmetros detalhados

CampoLocalTipoObrigatórioValores / padrãoDescriçãoExemplo
routequerystringsimget-partner-instanceSeleciona a consulta.get-partner-instance
instance_idqueryUUIDcondicionalexatamente um identificadorUUID interno. Não use external_customer_id.UUID_DA_INSTANCIA
instance_keyquerystringcondicionalexatamente um identificadorChave estável criada pelo partner.cliente_56790-whatsapp1
phone_number_idquerystring numéricacondicionalexatamente um identificadorID técnico da Meta recebido no webhook messages.1093754977160703

Erros mais comuns

error.codeHTTPQuando ocorre
invalid_instance_id400instance_id não é UUID
multiple_identifiers400mais de um identificador
instance_not_found404não encontrado

Query parameters

ParâmetroTipoDescrição
instance_idUUIDID retornado ao criar a instância
instance_keystringChave legível da linha
phone_number_idstringID do número na Meta

Resposta resumida

json
{
  "ok": true,
  "instance_id": "UUID_DA_INSTANCIA",
  "instance_key": "cliente_56790-whatsapp-principal",
  "status": "connected",
  "verified_name": "Clínica Mais Vida",
  "display_phone_number": "+55 11 99999-9999",
  "quality_rating": "GREEN",
  "meta_business_id": "BUSINESS_ID",
  "waba_id": "WABA_ID",
  "phone_number_id": "PHONE_NUMBER_ID",
  "remote_callback_status": "active",
  "whatsapp_manager_url": "https://business.facebook.com/wa/manage/phone-numbers/..."
}

Envie apenas um identificador. A forma oficial é ?route=get-partner-instance&instance_id=....

POSThttps://api.hookcloud.app/functions/v1/swift-worker#

Atualizar dados oficiais da Meta

Atualiza nome verificado, número, qualidade e status do nome.

Parâmetros detalhados

CampoLocalTipoObrigatórioValores / padrãoDescriçãoExemplo
routebodystringsimrefresh-partner-instance-metaSeleciona a operação.refresh-partner-instance-meta
instance_id / instance_key / phone_number_idbodyUUID/stringsimum identificadorInstância a consultar na Graph API.UUID_DA_INSTANCIA

Request

json
{
  "route": "refresh-partner-instance-meta",
  "instance_id": "UUID_DA_INSTANCIA"
}
POSThttps://api.hookcloud.app/functions/v1/swift-worker#

Atualizar nome interno

Altera somente o apelido interno da instância.

Parâmetros detalhados

CampoLocalTipoObrigatórioValores / padrãoDescriçãoExemplo
routebodystringsimupdate-partner-instance-labelSeleciona a operação.update-partner-instance-label
instance_idbodyUUIDsiminstância do partnerInstância.UUID_DA_INSTANCIA
instance_namebodystringsimapelido internoNão altera verified_name na Meta.Atendimento comercial

Request

json
{
  "route": "update-partner-instance-label",
  "instance_id": "UUID_DA_INSTANCIA",
  "instance_name": "Atendimento unidade centro"
}
POSThttps://api.hookcloud.app/functions/v1/swift-worker#

Obter credencial de envio Meta

Retorna o token Meta e a URL de envio da instância para uso exclusivo no backend.

Parâmetros detalhados

CampoLocalTipoObrigatórioValores / padrãoDescriçãoExemplo
routebodystringsimreveal-partner-instance-meta-tokenSeleciona a operação.reveal-partner-instance-meta-token
instance_id / instance_key / phone_number_idbodyUUID/stringsimum identificadorInstância cuja credencial será revelada.UUID_DA_INSTANCIA

Request

json
{
  "route": "reveal-partner-instance-meta-token",
  "phone_number_id": "PHONE_NUMBER_ID"
}

Resposta resumida

json
{
  "ok": true,
  "meta_access_token": "EAAB...",
  "graph_version": "v25.0",
  "phone_number_id": "PHONE_NUMBER_ID",
  "send_message_url": "https://graph.facebook.com/v25.0/PHONE_NUMBER_ID/messages"
}

Nunca exponha esse token no frontend ou ao cliente final.

POSThttps://api.hookcloud.app/functions/v1/swift-worker#

Inativar instância

Remove o callback remoto antes de liberar a linha e o slot operacional.

Parâmetros detalhados

CampoLocalTipoObrigatórioValores / padrãoDescriçãoExemplo
routebodystringsimdeactivate-partner-instanceSeleciona a operação.deactivate-partner-instance
instance_id / instance_keybodyUUID/stringsimum identificadorInstância a inativar.UUID_DA_INSTANCIA
reasonbodystringnãoauditávelMotivo da inativação.Cliente cancelou esta linha

Erros mais comuns

error.codeHTTPQuando ocorre
remote_callback_removal_failed409callback ativo não pôde ser removido
meta_send_access_revocation_failed409não foi possível garantir bloqueio de envio
meta_credential_missing_for_hard_disconnect409credencial necessária ausente

Request

json
{
  "route": "deactivate-partner-instance",
  "instance_id": "UUID_DA_INSTANCIA",
  "reason": "Cliente cancelou esta linha"
}

Se a remoção remota falhar, a API não finge sucesso. Trate conflitos e tente novamente após corrigir a credencial.

POSThttps://api.hookcloud.app/functions/v1/swift-worker#

Inativar cliente

Inativa o cliente final e trata todas as instâncias vinculadas.

Parâmetros detalhados

CampoLocalTipoObrigatórioValores / padrãoDescriçãoExemplo
routebodystringsimdeactivate-partner-customerSeleciona a operação.deactivate-partner-customer
partner_customer_id / external_customer_idbodyUUID/stringsimum identificadorCliente a inativar.cliente_56790
reasonbodystringnãoauditávelMotivo.Cliente cancelou assinatura

Erros mais comuns

error.codeHTTPQuando ocorre
customer_not_found404cliente inexistente
customer_deactivation_partial_failure409uma ou mais instâncias falharam; verifique results

Request

json
{
  "route": "deactivate-partner-customer",
  "external_customer_id": "cliente_56790",
  "reason": "Cliente cancelou a assinatura"
}
POSThttps://api.hookcloud.app/functions/v1/swift-worker#

Reativar cliente

Reativa o cadastro comercial. Gere reconnect quando os números precisarem de nova autorização.

Parâmetros detalhados

CampoLocalTipoObrigatórioValores / padrãoDescriçãoExemplo
routebodystringsimreactivate-partner-customerSeleciona a operação.reactivate-partner-customer
partner_customer_id / external_customer_idbodyUUID/stringsimum identificadorCliente a reativar.cliente_56790
reasonbodystringnãoauditávelMotivo.Cliente retornou ao SaaS

Erros mais comuns

error.codeHTTPQuando ocorre
customer_not_found404cliente inexistente
customer_merged409cadastro mesclado não pode ser reativado

Request

json
{
  "route": "reactivate-partner-customer",
  "external_customer_id": "cliente_56790",
  "reason": "Cliente voltou para o SaaS"
}
POSThttps://api.hookcloud.app/functions/v1/swift-worker#

Validar webhook

Testa HTTPS e o desafio da Meta sem alterar as instâncias.

Parâmetros detalhados

CampoLocalTipoObrigatórioValores / padrãoDescriçãoExemplo
routebodystringsimvalidate-partner-webhook-endpointSeleciona a operação.validate-partner-webhook-endpoint
webhook_urlbodyHTTPS URLsimporta 443; sem credenciais na URLEndpoint público. Localhost, IP privado e redirects são bloqueados.https://api.seusistema.com/webhooks/whatsapp
meta_verify_tokenbodystringcondicionaltoken atual/geradoToken que o endpoint usa no desafio GET da Meta.hc_meta_verify_...

Request

json
{
  "route": "validate-partner-webhook-endpoint",
  "webhook_url": "https://api.seusistema.com/webhooks/whatsapp"
}

O endpoint deve responder ao GET da Meta devolvendo o hub.challenge exato.

POSThttps://api.hookcloud.app/functions/v1/swift-worker#

Alterar webhook do partner

Troca o endpoint único e inicia a migração dos números ativos na Meta.

Parâmetros detalhados

CampoLocalTipoObrigatórioValores / padrãoDescriçãoExemplo
routebodystringsimupdate-partner-webhook-endpointSeleciona a operação.update-partner-webhook-endpoint
webhook_urlbodyHTTPS URLsimvalidado antes de aplicarNovo endpoint único do partner.https://api.seusistema.com/webhooks/whatsapp
meta_verify_tokenbodystringcondicionaltoken da configuraçãoDeve ser o mesmo configurado no seu endpoint.hc_meta_verify_...
reasonbodystringnãoauditávelMotivo da troca.Migração de domínio

Erros mais comuns

error.codeHTTPQuando ocorre
webhook_validation_failed409challenge/HTTPS falhou
webhook_url_private_address400localhost/IP privado
webhook_migration_failed500falha ao enfileirar/aplicar

Request

json
{
  "route": "update-partner-webhook-endpoint",
  "webhook_url": "https://api.seusistema.com/webhooks/whatsapp",
  "reason": "Migração do domínio de produção"
}

Resposta resumida

json
{
  "ok": true,
  "migration_id": "UUID_DA_MIGRACAO",
  "status": "pending",
  "total_instances": 12
}
GEThttps://api.hookcloud.app/functions/v1/swift-worker?route=get-partner-webhook-migration#

Consultar migração de webhook

Acompanha quantas instâncias foram atualizadas, falharam ou aguardam.

Parâmetros detalhados

CampoLocalTipoObrigatórioValores / padrãoDescriçãoExemplo
routequery/bodystringsimget-partner-webhook-migrationSeleciona a consulta.get-partner-webhook-migration
migration_idquery/bodyUUIDnãoúltima migração se omitidoMigração específica.UUID_DA_MIGRACAO

Query parameters

ParâmetroDescrição
migration_idUUID opcional; sem ele retorna a migração mais recente
POSThttps://api.hookcloud.app/functions/v1/swift-worker#

Reprocessar falhas do webhook

Tenta novamente apenas as instâncias que falharam.

Parâmetros detalhados

CampoLocalTipoObrigatórioValores / padrãoDescriçãoExemplo
routebodystringsimretry-partner-webhook-migrationSeleciona a operação.retry-partner-webhook-migration
migration_idbodyUUIDsimmigração com falhasReprocessa apenas itens falhos/pendentes.UUID_DA_MIGRACAO

Request

json
{
  "route": "retry-partner-webhook-migration",
  "migration_id": "UUID_DA_MIGRACAO"
}
GEThttps://api.hookcloud.app/functions/v1/swift-worker?route=list-partner-meta-templates#

Listar templates

Consulta o catálogo HookCloud em cache, sem consumir GET da Graph API.

Parâmetros detalhados

CampoLocalTipoObrigatórioValores / padrãoDescriçãoExemplo
routequerystringsimlist-partner-meta-templatesSeleciona a consulta.list-partner-meta-templates
instance_id / instance_key / phone_number_id / waba_idqueryUUID/stringsimum escopoA HookCloud resolve a WABA do catálogo.UUID_DA_INSTANCIA
statusqueryenumnãoAPPROVED, PENDING, REJECTED, PAUSED, DISABLEDFiltro de status oficial.APPROVED
sendable_onlyquerybooleannãofalseQuando true, retorna somente templates utilizáveis no momento.true
quality_statusquerystringnãoGREEN, YELLOW, RED, FLAGGEDFiltro de qualidade.GREEN
categoryquerystringnãoMARKETING, UTILITY, AUTHENTICATIONCategoria.UTILITY
languagequerystringnãocódigo MetaIdioma.pt_BR
searchquerystringnãonome ou IDBusca parcial.confirmacao
page / page_sizequeryintegernão1 / 50; máximo 100Paginação.1 / 50

Query parameters

ParâmetroDescrição
instance_id / waba_idEscopo do catálogo
statusEx.: APPROVED
sendable_onlytrue para templates disponíveis
searchNome ou ID
page/page_sizePaginação; máximo 200

Resposta resumida

json
{
  "ok": true,
  "source": "hookcloud_cache",
  "items": [
    {
      "template_id": "123456789",
      "template_name": "confirmacao_agendamento",
      "template_language": "pt_BR",
      "template_status": "APPROVED",
      "quality_status": "GREEN",
      "category": "UTILITY",
      "sendable": true,
      "components": [],
      "parameter_schema": { "total_parameters": 2, "parameters": [] }
    }
  ]
}
GEThttps://api.hookcloud.app/functions/v1/swift-worker?route=get-partner-meta-template#

Consultar template

Retorna componentes, parâmetros, status, qualidade, categoria e sendable.

Parâmetros detalhados

CampoLocalTipoObrigatórioValores / padrãoDescriçãoExemplo
routequerystringsimget-partner-meta-templateSeleciona a consulta.get-partner-meta-template
template_idquerystringcondicionalou name+languageID oficial da Meta.123456789
template_namequerystringcondicionaljunto com languageNome do template.confirmacao_agendamento
languagequerystringcondicionaljunto com template_nameIdioma Meta.pt_BR
instance_id / waba_idqueryUUID/stringsimescopoGarante que o template pertence ao partner.UUID_DA_INSTANCIA

Query parameters

ParâmetroDescrição
template_idID oficial
template_name + languageAlternativa por nome/idioma
instance_id ou waba_idEscopo
POSThttps://api.hookcloud.app/functions/v1/swift-worker#

Atualizar catálogo

Enfileira uma reconciliação controlada com a Graph API.

Parâmetros detalhados

CampoLocalTipoObrigatórioValores / padrãoDescriçãoExemplo
routebodystringsimrefresh-partner-meta-templatesSeleciona a operação.refresh-partner-meta-templates
instance_id / waba_idbodyUUID/stringsimum escopoWABA a reconciliar com a Graph API.UUID_DA_INSTANCIA
forcebodybooleansomente admin HookCloudfalseIgnora cooldown após análise.true

Erros mais comuns

error.codeHTTPQuando ocorre
template_refresh_rate_limited429cooldown por WABA
meta_credential_not_found409credencial Meta indisponível

Request

json
{
  "route": "refresh-partner-meta-templates",
  "instance_id": "UUID_DA_INSTANCIA"
}

Resposta resumida

json
{
  "ok": true,
  "accepted": true,
  "sync_job_id": "UUID_DO_JOB",
  "sync_status": "pending",
  "next_allowed_at": "2026-07-21T12:05:00Z"
}

Não chame em cada carregamento. A listagem normal já usa cache e webhooks de mudança.

GEThttps://api.hookcloud.app/functions/v1/swift-worker?route=get-partner-meta-template-sync#

Consultar sincronização de templates

Retorna queued, processing, completed ou failed.

Parâmetros detalhados

CampoLocalTipoObrigatórioValores / padrãoDescriçãoExemplo
routequerystringsimget-partner-meta-template-syncSeleciona a consulta.get-partner-meta-template-sync
instance_id / waba_idqueryUUID/stringsimum escopoConsulta o último job.UUID_DA_INSTANCIA

Query parameters

ParâmetroDescrição
instance_id / waba_idEscopo da sincronização
POSThttps://api.hookcloud.app/functions/v1/swift-worker#

Reportar status de mensagem

Permite consolidar sent, delivered, read, failed e deleted na Saúde de Entregas.

Parâmetros detalhados

CampoLocalTipoObrigatórioValores / padrãoDescriçãoExemplo
routebodystringsimreport-partner-message-statusSeleciona a operação.report-partner-message-status
phone_number_idbodystringsimID Meta da origemMapeia a instância/cliente.1093754977160703
message_idbodystringcondicionalwaMID quando existenteID retornado pela Meta.wamid.xxx
client_message_id / request_idbodystringcondicionalquando não existe waMIDID local para falhas síncronas.msg_local_123
statusbodyenumsimsent, delivered, read, failed, deletedEstado recebido no webhook messages/statuses.delivered
occurred_atbodyISO 8601nãoagoraHorário do evento na Meta.2026-07-21T12:00:00Z
template_id / template_namebodystringnãocontextoTemplate usado.campanha_marketing
campaign_idbodystringnãoID do seu SaaSAgrupamento da campanha.campanha_456
recipient_hashbodyhex 64nãoHMAC-SHA256Identificador pseudonimizado do destinatário.64_HEX
error_code / error_title / error_messagebodyinteger/stringquando failederro MetaDetalhes normalizados.131049

Erros mais comuns

error.codeHTTPQuando ocorre
invalid_delivery_status400status fora do enum
instance_not_found404phone_number_id não mapeado
delivery_status_report_failed500falha ao persistir

Request

json
{
  "route": "report-partner-message-status",
  "phone_number_id": "PHONE_NUMBER_ID",
  "message_id": "wamid.xxxxx",
  "status": "delivered",
  "template_name": "confirmacao_agendamento",
  "campaign_id": "campanha_456",
  "occurred_at": "2026-07-21T12:00:00Z"
}
POSThttps://api.hookcloud.app/functions/v1/swift-worker#

Reportar falha de entrega

Registra falhas normalizadas, inclusive sem waMID usando client_message_id.

Parâmetros detalhados

CampoLocalTipoObrigatórioValores / padrãoDescriçãoExemplo
routebodystringsimreport-partner-message-delivery-failureAtalho que força status failed.report-partner-message-delivery-failure
phone_number_idbodystringsimID MetaInstância de origem.1093754977160703
message_id ou client_message_idbodystringsimum dos doisIdentificador da mensagem/tentativa.wamid.xxx
error_codebodyinteger/stringsimcódigo MetaEx.: 131049 ou 131042.131049
error_title / error_message / error_detailsbodystringnãotexto MetaDetalhes sem conteúdo da mensagem.Healthy ecosystem engagement
recipient_hashbodyhex 64recomendadoHMAC-SHA256Não envie telefone em texto puro.64_HEX

Request

json
{
  "route": "report-partner-message-delivery-failure",
  "phone_number_id": "PHONE_NUMBER_ID",
  "message_id": "wamid.xxxxx",
  "client_message_id": "msg_local_123",
  "template_name": "campanha_marketing",
  "campaign_id": "campanha_456",
  "error_code": 131049,
  "error_title": "This message was not delivered to maintain a healthy ecosystem engagement",
  "error_message": "Detalhe retornado pela Meta",
  "recipient_hash": "HMAC_SHA256_HEX_COM_64_CARACTERES",
  "occurred_at": "2026-07-21T12:00:00Z"
}

Não envie conteúdo, nome ou telefone em texto puro. Use recipient_hash.

GEThttps://api.hookcloud.app/functions/v1/swift-worker?route=get-partner-delivery-health#

Consultar saúde de entregas

Retorna taxa de falha, 131049, 131042, top erros, templates e alertas.

Parâmetros detalhados

CampoLocalTipoObrigatórioValores / padrãoDescriçãoExemplo
routequerystringsimget-partner-delivery-healthSeleciona a consulta.get-partner-delivery-health
window_hoursqueryintegernãopadrão 24; 1–2160Janela de agregação em horas.24
customer_id / instance_idqueryUUIDnãoescopo opcionalRestringe a um cliente ou instância.UUID_DO_CLIENTE
alert_statusquerystringnãopadrão openFiltra alertas retornados.open
severity / category / error_codequerystringnãofiltros opcionaisRefina alertas.critical

Query parameters

ParâmetroDescrição
window_hoursJanela de análise, ex.: 24
GEThttps://api.hookcloud.app/functions/v1/swift-worker?route=search-partner-delivery-events#

Pesquisar eventos de entrega

Busca paginada por status, erro, template, campanha, cliente ou instância.

Parâmetros detalhados

CampoLocalTipoObrigatórioValores / padrãoDescriçãoExemplo
routequerystringsimsearch-partner-delivery-eventsSeleciona a consulta.search-partner-delivery-events
searchquerystringnãobusca parcialBusca IDs e textos normalizados.campanha_456
statusqueryenumnãosent, delivered, read, failed, deletedStatus final.failed
error_codequerystringnãocódigo MetaErro específico.131049
template_name / campaign_idquerystringnãofiltro exato/parcialContexto da campanha.campanha_marketing
customer_id / instance_idqueryUUIDnãoescopoCliente/instância.UUID
date_from / date_toqueryISO 8601nãointervaloDatas inclusive/exclusive conforme backend.2026-07-01T00:00:00Z
page / page_size / sortqueryinteger/stringnão1 / 50 / desc; máximo 200Paginação e ordenação.1 / 50 / desc

Query parameters

FiltroExemplo
statusfailed
error_code131049
template_namecampanha_marketing
campaign_idcampanha_456
date_from/date_toISO 8601
page/page_size1 / 50
Partner Portal

Notificações e preferências

Estas rotas são destinadas ao frontend autenticado do Partner Portal e usam o JWT do membro. Elas não aceitam a Partner API Key como substituta do usuário.

GEThttps://api.hookcloud.app/functions/v1/swift-worker#

Listar notificações

Retorna o sino unificado com Academy, Meta, templates, saúde de entregas, billing e sistema.

Parâmetros detalhados

CampoLocalTipoObrigatórioValores / padrãoDescriçãoExemplo
routequerystringsimlist-partner-notificationsSeleciona a consulta.list-partner-notifications
limitqueryintegernãopadrão 30; 1–100Itens mais recentes.40
beforequeryISO 8601nãocursor temporalPaginação para itens anteriores.2026-07-24T12:00:00Z

Exemplo

http
GET ?route=list-partner-notifications&limit=40

Erros mais comuns

error.codeHTTPQuando ocorre
partner_member_required401/403rota exige JWT de membro; não Partner API Key
notification_list_failed500falha de consulta
GEThttps://api.hookcloud.app/functions/v1/swift-worker#

Consultar preferências

Retorna as categorias habilitadas pelo usuário logado.

Parâmetros detalhados

CampoLocalTipoObrigatórioValores / padrãoDescriçãoExemplo
routequerystringsimget-partner-notification-preferencesSeleciona a consulta.get-partner-notification-preferences

Exemplo

http
GET ?route=get-partner-notification-preferences
PATCHhttps://api.hookcloud.app/functions/v1/swift-worker#

Atualizar preferências

Ativa/desativa categorias e popups para o usuário atual.

Parâmetros detalhados

CampoLocalTipoObrigatórioValores / padrãoDescriçãoExemplo
routebodystringsimupdate-partner-notification-preferencesSeleciona a operação.update-partner-notification-preferences
notify_academybodybooleannãotrueRespostas, aprovações e atualizações da Academy.true
notify_meta_alertsbodybooleannãotrueAlertas oficiais Meta.true
notify_templatesbodybooleannãotrueStatus/qualidade de templates.true
notify_delivery_healthbodybooleannãotrueFalhas e saúde de entregas.true
notify_billingbodybooleannãotrueFalhas, recuperação e faturas.true
notify_billing_remindersbodybooleannãotrueAvisos aproximadamente 24h antes.true
notify_systembodybooleannãotrueAvisos gerais HookCloud.true
popup_enabledbodybooleannãotrueToast visual; o sino continua disponível.false

Exemplo

json
{"route":"update-partner-notification-preferences","notify_templates":false,"popup_enabled":true}

Erros mais comuns

error.codeHTTPQuando ocorre
partner_member_required401/403rota exige JWT
notification_preferences_update_failed500falha ao salvar
POSThttps://api.hookcloud.app/functions/v1/swift-worker#

Marcar uma notificação como lida

Registra a leitura para o usuário atual.

Parâmetros detalhados

CampoLocalTipoObrigatórioValores / padrãoDescriçãoExemplo
routebodystringsimmark-partner-notification-readSeleciona a operação.mark-partner-notification-read
notification_idbodyUUIDsimnotificação visível ao usuárioMarca a leitura.UUID_DA_NOTIFICACAO

Exemplo

json
{"route":"mark-partner-notification-read","notification_id":"UUID"}
POSThttps://api.hookcloud.app/functions/v1/swift-worker#

Marcar todas como lidas

Marca todas as notificações visíveis como lidas.

Parâmetros detalhados

CampoLocalTipoObrigatórioValores / padrãoDescriçãoExemplo
routebodystringsimmark-all-partner-notifications-readSeleciona a operação.mark-all-partner-notifications-read

Exemplo

json
{"route":"mark-all-partner-notifications-read"}
Esta página ajudou?Use o Partner Portal para suporte e compartilhe o link desta seção.