Integracoes & API

API REST: autenticação e primeiros passos

Como gerar o api_access_token, autenticar requisições no host https://app.siteup.com.br via header api_access_token, lidar com paginação e consumir a especificação OpenAPI 3.1 oficial do SiteUp.

API REST: autenticação e primeiros passos

A API REST do SiteUp expõe os recursos da plataforma — conversas, mensagens, contatos, atendentes, equipes, caixas de entrada, funis e cards do kanban, etiquetas, atributos customizados, integrações, formulários de captura, registros de chamadas VOIP, knowledge base do Capitão IA, entre outros. Esta página cobre o essencial para começar: host, autenticação, estrutura das URLs e onde encontrar a especificação completa.

Especificação oficial

A API é descrita em OpenAPI 3.1, disponível publicamente em:

https://app.siteup.com.br/specs/siteup-api.yml

São cerca de 167 paths agrupados por tags funcionais (Conversations, Contacts, Messages, Inboxes, Teams, Agents, Custom Attributes, Webhooks, Reports, Kanban, Funnels, VOIP, AI Agent, entre outras). O YAML pode ser importado em ferramentas como Insomnia, Postman, Bruno, Stoplight, ou usado para gerar clientes tipados com openapi-generator e openapi-typescript.

Host

Todas as chamadas vão para o host único de produção:

https://app.siteup.com.br

Não há host de homologação público — para testes não-destrutivos, recomenda-se uma conta dedicada dentro do mesmo host.

Gerando seu token

Cada usuário possui o seu próprio token de acesso, com escopo idêntico ao do papel do usuário no painel.

  1. Acesse Perfil → Tokens de acesso
  2. Copie o valor do token exibido (é gerado automaticamente quando o usuário é criado)
  3. Armazene em variável de ambiente; nunca faça commit do valor literal

Quando o usuário é desativado ou tem o papel alterado, o token segue o novo escopo automaticamente. Para revogar, basta desativar o usuário ou regenerar o token.

Atenção: o api_access_token concede acesso completo aos recursos visíveis ao usuário. Não exponha o token em código frontend, repositórios públicos ou logs.

Autenticação

Toda requisição autenticada deve incluir o header:

api_access_token: SEU_TOKEN_AQUI

Sem o header (ou com token inválido), a resposta é 401 Unauthorized.

Observação: o servidor MCP do SiteUp aceita o mesmo valor de token, mas via header Authorization: Bearer .... Para a API REST tradicional, use sempre api_access_token.

Estrutura das URLs

A maior parte dos recursos é escopada por conta:

https://app.siteup.com.br/api/v1/accounts/{account_id}/{recurso}

O account_id é numérico e aparece na URL do painel quando o usuário está logado (ex.: app.siteup.com.br/app/accounts/142/...).

Existem também endpoints sem escopo de conta, como:

  • GET /api/v1/profile — perfil do usuário do token (também usado pelo MCP para validar autenticação)
  • POST /api/leads/capture/{slug} — captura pública de lead, sem autenticação

Exemplos práticos

Validar token

bash curl -X GET \ "https://app.siteup.com.br/api/v1/profile" \ -H "api_access_token: $SITEUP_TOKEN"

Resposta 200 com o JSON do perfil indica token válido.

Listar conversas abertas

bash curl -X GET \ "https://app.siteup.com.br/api/v1/accounts/142/conversations?status=open&page=1" \ -H "api_access_token: $SITEUP_TOKEN"

Buscar contato

bash curl -X GET \ "https://app.siteup.com.br/api/v1/accounts/142/contacts/search?q=%2B5511999998888" \ -H "api_access_token: $SITEUP_TOKEN"

Enviar mensagem outbound

bash curl -X POST \ "https://app.siteup.com.br/api/v1/accounts/142/conversations/5821/messages" \ -H "api_access_token: $SITEUP_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "content": "Olá! Recebi sua mensagem e já estou avaliando.", "message_type": "outgoing" }'

Para enviar uma nota interna (visível apenas a atendentes), use "message_type": "private".

Criar contato com atributos customizados e tracking

bash curl -X POST \ "https://app.siteup.com.br/api/v1/accounts/142/contacts" \ -H "api_access_token: $SITEUP_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "inbox_id": 12, "name": "Maria Silva", "phone_number": "+5511999998888", "email": "maria@exemplo.com", "custom_attributes": { "origem": "google-ads" }, "additional_attributes": { "ctwa_clid": "ARABCdefGhi...", "leadgen_id": "1234567890" } }'

custom_attributes armazena dados de negócio configuráveis pelo usuário. additional_attributes é o local recomendado para identificadores de tracking de mídia paga (ctwa_clid, leadgen_id, fbclid, gclid) que alimentam a integração CAPI/Conversions API.

Mover card no kanban

bash curl -X PUT \ "https://app.siteup.com.br/api/v1/accounts/142/kanban_items/9981" \ -H "api_access_token: $SITEUP_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "funnel_stage": "Fechamento" }'

Paginação

Endpoints de listagem retornam dados paginados com o parâmetro page. As respostas seguem o padrão da especificação OpenAPI — geralmente um envelope com data e meta (current_page, total_pages, total_count). Consulte o YAML para o schema exato de cada endpoint.

bash curl "https://app.siteup.com.br/api/v1/accounts/142/conversations?page=2" \ -H "api_access_token: $SITEUP_TOKEN"

Status codes mais comuns

Código Significado
200 OK
201 Recurso criado
400 Body malformado
401 Token ausente, inválido ou revogado
403 Token válido, mas sem permissão para o recurso
404 Recurso inexistente ou fora do escopo da conta
422 Validação falhou — campo obrigatório ausente, formato inválido
429 Limite de requisições excedido
5xx Erro interno — retentar com backoff exponencial

Erros retornam corpo JSON com a descrição do problema sempre que possível.

Boas práticas

  • Use variáveis de ambiente ou um cofre (Vault, Doppler, AWS Secrets Manager) para o token.
  • Gere clientes a partir do OpenAPI (openapi-generator-cli, openapi-typescript) — economiza tempo e elimina divergências de tipo.
  • Trate 429 com backoff exponencial e jitter; respeite o header Retry-After quando presente.
  • Cacheie GETs idempotentes (atendentes, equipes, caixas, atributos custom) para reduzir tráfego.
  • Logue identificadores de correlação (header de resposta X-Request-Id, quando presente) para acelerar tickets de suporte.

Próximos passos

Esse artigo respondeu sua duvida?

Falar com o time