Documentação da API

A API REST do Giro Connect permite integrar WhatsApp ao seu sistema. Gerencie sessões, envie mensagens, configure webhooks e automatize fluxos de comunicação.

Autenticação via API Key

Chaves com escopos granulares

Webhooks em Tempo Real

Eventos com assinatura HMAC

Rate Limits por Plano

30 msg/min por sessão

Autenticação

A API utiliza tokens JWT para usuários do dashboard e API Keys (prefixo sk_) para acesso programático.

API Key

Envie a chave no header Authorization: Bearer sk_.... Crie chaves no dashboard com escopos como messages:send, contacts:read.

bash
# Autenticação com API Key
curl -X GET "https://api.giro.aara.com.br/api/v1/usage" \
  -H "Authorization: Bearer sk_abc123_sua_chave_aqui"

JWT (Dashboard)

Faça login para obter um token JWT. Envie no header Authorization: Bearer <token>.

POST
/api/v1/auth/signin

Autenticar no dashboard

Body:

json
{
  "email": "user@example.com",
  "password": "sua_senha"
}

Response:

json
{
  "access_token": "eyJhbGciOi...",
  "token_type": "bearer"
}

Mensagens

Envie e consulte mensagens WhatsApp. Suporta texto, imagens, documentos, áudio, vídeo e localização.

POST
/api/v1/messages

Enviar mensagem de texto

Requer API Key com escopo messages:send

Body:

json
{
  "session_id": "uuid-da-sessao",
  "to": "5511999999999",
  "type": "text",
  "text": "Olá! Mensagem enviada pela API.",
  "idempotency_key": "idemp-unico-para-evitar-duplicatas"
}

Response:

json
{
  "id": "uuid-da-mensagem",
  "status": "queued",
  "direction": "outbound",
  "created_at": "2026-06-25T10:00:00Z"
}
GET
/api/v1/messages?conversation_id=uuid&skip=0&limit=50

Listar mensagens de uma conversa

Requer API Key com escopo messages:read

Response:

json
{
  "items": [
    {
      "id": "uuid",
      "body_text": "Olá!",
      "direction": "outbound",
      "status": "sent",
      "created_at": "2026-06-25T10:00:00Z"
    }
  ],
  "total": 1,
  "skip": 0,
  "limit": 50
}
GET
/api/v1/messages/{message_id}

Obter detalhes de uma mensagem

Requer API Key com escopo messages:read

Idempotência

Envie um idempotency_key único para evitar duplicatas. O sistema retorna 409 se a chave já foi processada.

Sessões WhatsApp

Gerencie conexões WhatsApp via QR Code. Cada organização pode ter múltiplas sessões (limite por plano).

POST
/api/v1/sessions

Criar nova sessão WhatsApp

Body:

json
{
  "display_name": "Meu WhatsApp",
  "provider": "waha"
}

Response:

json
{
  "id": "uuid",
  "status": "created",
  "provider_session_id": "giro_abc123_Meu WhatsApp",
  "created_at": "2026-06-25T10:00:00Z"
}
GET
/api/v1/sessions/{session_id}/qr

Obter QR Code para conexão

Response:

json
{
  "qr_code": "data:image/png;base64,...",
  "expires_at": "2026-06-25T10:05:00Z"
}
POST
/api/v1/sessions/{session_id}/suspend

Suspender sessão (bloqueia envio)

POST
/api/v1/sessions/{session_id}/ban

Banir sessão e bloquear número

DELETE
/api/v1/sessions/{session_id}

Remover sessão

GET
/api/v1/sessions/blocklist

Listar números bloqueados

POST
/api/v1/sessions/blocklist

Bloquear um número

Body:

json
{
  "phone_e164": "5511999999999",
  "reason": "Spam"
}

Contatos

Gerencie contatos com opt-in/opt-out. Contatos que optaram por sair não recebem mensagens.

POST
/api/v1/contacts

Criar ou atualizar contato (upsert)

Body:

json
{
  "phone_e164": "5511999999999",
  "name": "Maria Silva",
  "email": "maria@example.com",
  "tags": ["cliente", "vip"]
}
GET
/api/v1/contacts

Listar contatos

PATCH
/api/v1/contacts/{contact_id}

Atualizar dados do contato

POST
/api/v1/contacts/{contact_id}/opt-in

Registrar opt-in do contato

POST
/api/v1/contacts/{contact_id}/opt-out

Registrar opt-out (bloqueia envio)

Automações

Crie automações baseadas em templates prontos para resposta automática, lembretes, captura de leads e mais.

GET
/api/v1/automations/templates

Listar templates disponíveis

POST
/api/v1/automations

Criar automação a partir de template

Body:

json
{
  "template_id": "uuid-do-template",
  "name": "Resposta de Cardápio",
  "config": {
    "keywords": ["cardapio", "menu"],
    "reply_text": "Confira nosso cardápio: https://exemplo.com/cardapio"
  }
}
POST
/api/v1/automations/{automation_id}/activate

Ativar automação

POST
/api/v1/automations/{automation_id}/pause

Pausar automação

Campanhas

Dispare mensagens em massa para contatos segmentados com agendamento e rastreamento por destinatário.

POST
/api/v1/campaigns

Criar campanha de disparo

Body:

json
{
  "session_id": "uuid-da-sessao",
  "name": "Promoção de Junho",
  "message_template": "Olá {{nome}}, temos uma oferta especial!",
  "audience_filter": { "tags": ["cliente"] },
  "scheduled_at": "2026-07-01T09:00:00Z"
}
POST
/api/v1/campaigns/{campaign_id}/schedule

Agendar campanha

POST
/api/v1/campaigns/{campaign_id}/cancel

Cancelar campanha

Webhooks

Receba eventos em tempo real. Cada webhook é assinado com HMAC-SHA256 para verificação de integridade.

Verificação de Assinatura

Todo webhook inclui os headers X-Giro-Signature,X-Giro-Timestamp eX-Giro-Event-Type.

POST
/api/v1/webhooks

Criar endpoint de webhook

Body:

json
{
  "url": "https://meusistema.com/webhooks/giro",
  "environment": "test",
  "subscribed_events": [
    "message.received",
    "message.delivered",
    "session.connected"
  ]
}
GET
/api/v1/webhooks

Listar webhooks configurados

PATCH
/api/v1/webhooks/{webhook_id}

Atualizar webhook

DELETE
/api/v1/webhooks/{webhook_id}

Remover webhook

Exemplo: Verificar webhook em Python

python
import hashlib, hmac

def verify_webhook(payload: bytes, signature: str, secret: str, timestamp: str) -> bool:
    signing_content = f"{timestamp}.{payload.decode()}"
    expected = hmac.new(
        secret.encode(),
        signing_content.encode(),
        hashlib.sha256
    ).hexdigest()
    return hmac.compare_digest(expected, signature)

Rate Limits

Limites configurados por organização, chave de API e sessão para evitar abuso.

Mensagens

30/min

Por sessão WhatsApp

API Requests

100/min

Por organização

Autenticação

10/min

Por IP

Quando o limite é excedido, a API retorna

429 Too Many Requests
com um header retry_after_seconds.

SDKs

Bibliotecas para integrar o Giro Connect na sua stack.

JavaScript

npm install giro-connect

Python

pip install giro-connect

PHP

composer require giro/connect

Precisa de ajuda? Acesse o Swagger UI interativo ou o Dashboard Developer.

© 2026 Giro Connect