Tenessi Hub LogoTenessi Hub/Documentação
← Voltar ao site

API de Integração - Exemplos cURL

Este documento fornece exemplos cURL para os endpoints da API de Integração. Todas as requisições requerem autenticação via os headers Authorization: Bearer YOUR_TOKEN e Origin: https://seu-dominio.com.

💡 Para criar seu token: Acesse Configurações da Empresa → Tokens de Integração no Tenessi Hub. O domínio no header Origin deve corresponder ao domínio configurado no token.

URL Base: https://api.tenessihub.com.br/public/integration

GET Templates

Obtenha todos os templates aprovados com seus parâmetros e variáveis.

Requisição

curl -X GET 'https://api.tenessihub.com.br/public/integration?action=templates&status=approved' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Origin: https://seu-dominio.com'

Parâmetros de Query

  • action=templates (obrigatório) - Tipo de ação
  • status (opcional) - Filtrar por status de aprovação: approved, pending, rejected, deleted_on_meta
  • category (opcional) - Filtrar por categoria: UTILITY, MARKETING, AUTHENTICATION
  • limit (opcional) - Máximo de resultados (padrão: 50)
  • offset (opcional) - Offset para paginação (padrão: 0)

Resposta (sucesso)

{
  "templates": [
    {
      "id": "123e4567-e89b-12d3-a456-426614174000",
      "name": "welcome_message",
      "body": "Olá {{1}}, bem-vindo à {{2}}!",
      "variableTypes": [
        {
          "position": 1,
          "label": "Nome do Cliente",
          "required": true
        },
        {
          "position": 2,
          "label": "Nome da Empresa",
          "required": true
        }
      ],
      "approvalStatus": "approved",
      "category": "UTILITY",
      "templateType": "text"
    }
  ],
  "total": 25,
  "limit": 50,
  "offset": 0,
  "hasMore": false
}

Buscar Contato

Busque contatos por número de telefone ou nome. Retorna apenas os campos id e number.

Buscar por Número de Telefone

curl -X GET 'https://api.tenessihub.com.br/public/integration?action=contact&phoneNumber=+5511999999999' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Origin: https://seu-dominio.com'

Parâmetros de Query

  • action=contact (obrigatório) - Tipo de ação
  • phoneNumber (opcional) - Número de telefone no formato E.164 (ex: +5511999999999)
  • pageNumber (opcional) - Número da página para paginação (padrão: 1)

Resposta (sucesso)

{
  "contacts": [
    {
      "id": "456e7890-e12f-34g5-h678-901234567def",
      "number": "+5511999999999"
    }
  ],
  "count": 1,
  "pageNumber": 1,
  "hasMore": false
}

Obter Informações do WhatsApp

Obtenha informações da conexão WhatsApp para o token de integração.

Requisição

curl -X GET 'https://api.tenessihub.com.br/public/integration?action=whatsapp' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Origin: https://seu-dominio.com'

Resposta (sucesso)

[
  {
    "whatsappId": "123e4567-e89b-12d3-a456-426614174000",
    "wabaId": "123456789",
    "wabaPhoneNumberId": "555123456789",
    "status": "active"
  }
]

Enviar Mensagem de Template

Envie uma mensagem de template do WhatsApp com variáveis.

Requisição

curl -X POST 'https://api.tenessihub.com.br/public/integration/message/send-template' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Origin: https://seu-dominio.com' \
  -H 'Content-Type: application/json' \
  -d '{
    "phoneNumber": "+5511999999999",
    "templateId": "123e4567-e89b-12d3-a456-426614174000",
    "variables": {
      "1": "João Silva",
      "2": "Minha Empresa"
    }
  }'

Corpo da Requisição

  • phoneNumber (obrigatório) - Número de telefone do destinatário no formato E.164
  • templateId (obrigatório) - UUID do template da lista de templates
  • variables (opcional) - Variáveis do template como objeto com chaves posicionais {"1": "valor", "2": "valor", ...}
  • createTicket (opcional) - Se deve criar um ticket se o contato não existir (padrão: true)

Resposta (sucesso)

{
  "success": true,
  "data": {
    "messageId": "789e0123-e45f-67g8-h901-234567890abc",
    "status": "sent",
    "sentAt": "2024-01-15T10:30:00.000Z",
    "message": "Olá João Silva, bem-vindo à Minha Empresa!",
    "richContent": {
      "type": "text",
      "text": "Olá João Silva, bem-vindo à Minha Empresa!"
    }
  }
}

Respostas de Erro

Token inválido:

{
  "success": false,
  "error": "Invalid or inactive integration token",
  "code": "INVALID_TOKEN"
}

Template não encontrado:

{
  "success": false,
  "error": "Template not found",
  "code": "TEMPLATE_NOT_FOUND"
}

Limite de requisições excedido (HTTP 429):

{
  "error": "Rate limit exceeded. Please try again later.",
  "retryAfter": 60
}

Códigos de Erro

CódigoDescrição
INVALID_TOKENToken de integração inválido ou inativo
TEMPLATE_NOT_FOUNDTemplate com o ID especificado não foi encontrado
TEMPLATE_NOT_APPROVEDTemplate não está aprovado e não pode ser usado
CONTACT_NOT_FOUNDContato não encontrado
INVALID_PHONE_NUMBERFormato de número de telefone inválido
WHATSAPP_NOT_CONFIGUREDConexão WhatsApp não configurada para esta integração
RATE_LIMIT_EXCEEDEDLimite de requisições excedido (500 requisições por minuto por token)
DOMAIN_NOT_ALLOWEDDomínio de origem da requisição não é permitido para este token

Notas

  • Autenticação: Todas as requisições requerem os headers Authorization: Bearer YOUR_TOKEN e Origin: https://seu-dominio.com
  • Token de integração: Crie seu token em Configurações da Empresa → Tokens de Integração. O domínio no header Origin deve corresponder ao configurado no token.
  • Endpoints GET: Retornam array vazio [] quando nenhum resultado é encontrado
  • Respostas de contato: Incluem apenas os campos id e number (sem dados sensíveis)
  • Formato de telefone: Use formato E.164 (ex: +5511999999999)
  • Limitação de requisições: 500 requisições por minuto por token
  • Formato de variáveis: Use ordem posicional com chaves numeradas ({"1": "valor", "2": "valor"})
  • CORS: Configurado automaticamente baseado nos domínios permitidos do token

Referência Rápida

# Obter templates
GET /public/integration?action=templates&status=approved

# Buscar contato
GET /public/integration?action=contact&phoneNumber=+5511999999999

# Obter informações do WhatsApp
GET /public/integration?action=whatsapp

# Enviar mensagem de template
POST /public/integration/message/send-template