Documentação da API

A Payby não é uma plataforma de API pública — não há um produto de integração para desenvolvedores terceiros. O que existe é um único endpoint interno: o webhook por trás do formulário “Agendar demonstração” da página inicial. Esta página documenta esse endpoint de forma honesta, não como um convite à integração.

POST /api/v1/submit-lead

Recebe os dados de uma demonstração solicitada e encaminha para a equipe de vendas. Limitado a 5 requisições por minuto por IP — acima disso, retorna 429. A forma sem versão (/api/submit-lead) segue funcionando como alias, mas novas integrações devem usar a rota versionada.

curl -X POST https://payby.com.br/api/v1/submit-lead \
  -H "Content-Type: application/json" \
  -d '{
    "restaurante": "Nome do restaurante",
    "nome": "Seu nome",
    "telefone": "11999999999",
    "email": "voce@exemplo.com"
  }'

Versionamento

O caminho é versionado (/api/v1/...). Uma mudança que quebra compatibilidade sobe para uma nova versão (/api/v2/...); a versão anterior continua no ar por pelo menos 90 dias depois disso, e respostas da versão sendo descontinuada trazem um cabeçalho Sunset com a data em que ela para de funcionar.

Rate limit

Toda resposta traz RateLimit-Limit, RateLimit-Remaining e RateLimit-Reset (segundos até a janela liberar). Um 429 também traz Retry-After.

Erros

Toda resposta de erro é um JSON estruturado com code, message e, quando aplicável, hint. Método errado no endpoint retorna 405 (não 404), e qualquer caminho sob /api/ que não exista retorna 404 em JSON também — não a página de erro do site.

Limitação conhecida: um corpo com JSON sintaticamente inválido (não apenas incompleto) ainda retorna um erro em texto puro do parser interno do Cloud Functions, antes do nosso código rodar — não há um hook suportado para interceptar isso na 1ª geração do Cloud Functions sem trocar de plataforma.

{
  "error": {
    "code": "missing_required_fields",
    "message": "restaurante, nome, telefone and email are all required.",
    "hint": "Resend the request with all four fields set to non-empty strings."
  }
}

Especificação completa em formato OpenAPI: /openapi.json.