RyzeAPI Changelog

Acompanhe as novidades, melhorias e correções da RyzeAPI.

1.0.0

RyzeAPI 1.0.0: Hello, world.

LançamentoAPIWhatsAppGoWebhooksWebSocketChatwoot

Introducing the RyzeAPI v1.0.0

Hoje marcamos o lançamento oficial da RyzeAPI, e essa é a primeira página deste changelog. 🎉

A RyzeAPI é uma API REST em Go construída sobre whatsmeow que transforma o WhatsApp em uma plataforma programável de verdade. Em vez de um número solto numa máquina, você ganha múltiplas instâncias isoladas, autenticação por token, eventos em tempo real e operações cobrindo praticamente tudo que o app oficial faz: texto, mídia, stickers, enquetes, carrosséis, botões, listas, Botão de Pix, Status (stories), grupos, comunidades, newsletters e perfil.

Nossa proposta é simples: dar à sua equipe a mesma camada de automação que produtos consolidados oferecem, com controle do dado e foco no público brasileiro.

O que vem na v1.0.0

  • Multi-instância de verdade. Cada instância tem sessão própria, ownership e Instance Token gerados na criação. Webhook, WebSocket e Chatwoot podem ser configurados inline no mesmo POST /api/instance/new.
  • Mensageria completa. Texto, mídia (imagem/vídeo/áudio/documento, regular ou PTT, com viewOnce e ptv), sticker (com conversão automática para 512×512), localização, contato, reação, enquete com 2–12 opções, carrossel com até 10 cards, botões interativos, lista com seções, Native Flow Form para captura de dados, Botão de Pix e publicação de Status.
  • Conversas sob seu controle. Contatos, labels (CRUD + filtro por label), histórico paginado, presença (typing/recording/pause), arquivar, fixar, favoritar, silenciar, bloquear, marcar como lida, edição (~15 min), encaminhamento e deleção (com revogação para todos).
  • Grupos & comunidades. Criar, listar com membros, atualizar nome/descrição/foto/permissões, adicionar/remover/promover/rebaixar/aprovar/rejeitar participantes em uma única action, gerar e revogar invite link, vincular subgrupos a comunidades. Identifier flexível: aceita JID, código de convite ou link completo.
  • Newsletters (Channels). Criar canal com aceite automático de TOS, listar inscritos, entrar e sair via JID, link ou código.
  • Eventos em tempo real. Webhooks resilientes (fila persistida em PostgreSQL com FOR UPDATE SKIP LOCKED, 4 workers, backoff exponencial até 1h, DLQ e janitor) e WebSocket por instância (/ws/:instance) com heartbeat e auth no upgrade. Mesmo envelope unificado para os dois canais.
  • Catálogo de eventos completo: message.exchange, message.status, call.update, group.flow, instance.state e label.update, com mídia opcional em base64 ou via S3.
  • Integração Chatwoot via bridge dedicado (RyzeIntegrations), com classificação de erros (400/401/403/502/503) e WebSocket isolado para o bridge consumir eventos.
  • Storage S3 opcional por instância (compatível com MinIO, Backblaze e similares).
  • Health probe combinado (/health, sem token) que retorna 200/503 conforme o estado das dependências.

Segurança como pré-requisito, não como adendo

  • AES-256-GCM at-rest em todo campo sensível: proxy password, webhook authorization, S3 secret e Chatwoot API token.
  • Tokens nunca retornados em respostas após a criação inicial, exceto o Instance Token no momento da criação.
  • Comparação em tempo constante (subtle.ConstantTimeCompare), resistente a timing attacks.
  • SSRF guard em URLs de webhook (na configuração e antes de cada delivery): bloqueia loopback, faixas privadas, link-local, multicast e broadcast.
  • CORS por allowlist, sem Access-Control-Allow-Credentials; autenticação via header token, nunca via cookie.

Stack

  • Linguagem: Go 1.22+
  • Framework HTTP: Gin
  • Cliente WhatsApp: whatsmeow
  • Banco de dados: PostgreSQL
  • Storage opcional: S3 (MinIO, Backblaze, etc.)
  • Workers: webhook dispatcher (4 workers + janitor) e events service

Convenções

  • Rotas com prefixo /api; eventos em tempo real em /ws/:instance.
  • JSON em camelCase; datas em RFC 3339 / ISO 8601 UTC.
  • Sucesso: success: true (primeiro), seguido de message e payload.
  • Erro: envelope padronizado { success: false, error: { message: "..." } }.

Limites

  • Body máximo por requisição: 64 MB (suporta uploads em base64).
  • Rate limit global: 100 req/min; criação de instância: 20 req/min.
  • WebSocket: até 4096 bytes por mensagem do cliente; buffer de 256 mensagens (clients lentos são desconectados).
  • Heartbeat WS: PING servidor→cliente a cada ~54s; PONG exigido em 60s.

Esta é só a partida. Quer mergulhar nos detalhes (endpoints, payloads, exemplos)? docs.ryzeapi.cloud tem tudo que você precisa.