Referência da API

O HummingDeck expõe uma API REST para parceiros de integração e plataformas de automação. Todos os endpoints usam autenticação OAuth 2.0 e retornam respostas JSON.

URL basehttps://app.hummingdeck.com/api/v1
OpenAPI Spec

Autenticação

Todas as requisições de API exigem um Bearer token OAuth 2.0 válido no cabeçalho Authorization. Os tokens são emitidos durante o fluxo de autorização OAuth e expiram após 30 dias. Use o token de atualização (validade de 90 dias) para obter um novo token de acesso sem precisar reautorizar.

Método

OAuth 2.0 (Bearer token)

Formato do cabeçalho

Authorization: Bearer {access_token}

Teste sua conexão

Verifique se seu token é válido e consulte o perfil do usuário autenticado.

GET/meRetorna o nome, o e-mail e as informações de equipe do usuário atual.

Documentos

Envie, pesquise e gerencie documentos (PDFs, apresentações, propostas e outros arquivos).

POST/decksEnviar um novo documento. Envie como multipart/form-data com um campo file (PDF, PPTX, DOCX, HTML) e um campo title.
GET/decks?title={query}Pesquisar documentos por título. Não diferencia maiúsculas de minúsculas; retorna até 20 resultados.

Campos da resposta

FieldTypeDescription
idstringID do documento
titlestringTítulo do documento
fileTypestringTipo de arquivo (pdf, pptx, docx, html)
pageCountnumberNúmero de páginas
thumbnailUrlstringURL da imagem em miniatura
createdAtstringCarimbo de data/hora ISO 8601

Links de compartilhamento

Crie links rastreáveis para compartilhar documentos com prospects. Cada link rastreia o engajamento separadamente.

POST/sharesCriar um link de compartilhamento. Suporta links pessoais (com nome e e-mail do destinatário) e links anônimos.

Campos da requisição

FieldTypeDescription
deckIdstringrequiredID do documento a ser compartilhado
recipientNamestringoptionalNome do destinatário (para links pessoais)
recipientEmailstringoptionalE-mail do destinatário (para links pessoais)
typestringoptional"personal" ou "anonymous" (padrão: anonymous)

Campos da resposta

FieldTypeDescription
idstringID do compartilhamento
slugstringSlug do compartilhamento (usado na URL)
shareUrlstringURL rastreável completa
typestring"personal" ou "anonymous"
recipientNamestringNome do destinatário (se pessoal)
recipientEmailstringE-mail do destinatário (se pessoal)
createdAtstringCarimbo de data/hora ISO 8601

Contatos

Pesquise contatos no catálogo de endereços da sua equipe.

GET/contacts?email={query}Pesquisar contatos por endereço de e-mail. Retorna contatos correspondentes com sua empresa associada.

Campos da resposta

FieldTypeDescription
idstringID do contato
firstNamestringNome
lastNamestringSobrenome
emailstringEndereço de e-mail
titlestringCargo
leadNamestringNome da empresa
createdAtstringCarimbo de data/hora ISO 8601

Webhooks

Assine eventos em tempo real por meio de REST Hooks. Quando um evento ocorre, o HummingDeck envia uma requisição POST para sua URL HTTPS registrada com o payload do evento. As entregas com falha são repetidas até 3 vezes (com intervalos de 1 s, 5 s e 30 s).

POST/hooksAssinar um evento. Requer uma URL HTTPS de destino e um tipo de evento. Retorna um ID de assinatura.
DELETE/hooks/{id}Cancelar a assinatura de um evento pelo ID de assinatura.

Tipos de eventos

EventDescription
view.createdUma pessoa real visualizou um documento compartilhado. O tráfego de bots (scanners de segurança de e-mail, crawlers) é filtrado automaticamente.
decision.madeUm prospect respondeu a uma proposta — aceita, recusada ou com alterações solicitadas.
email_capturedUm visitante inseriu seu endereço de e-mail para acessar conteúdo restrito.

Exemplos de payloads

view.created

{
  "event": "view.created",
  "data": {
    "id": "view_abc123",
    "deck_id": "deck_xyz789",
    "deck_title": "Q4 Enterprise Proposal",
    "viewer_email": "sarah@acme.com",
    "viewer_name": "Sarah Wood",
    "viewer_company": "Acme Corp",
    "location": "San Francisco, CA",
    "device": "Desktop",
    "browser": "Chrome",
    "pages_viewed": 8,
    "total_pages": 12,
    "duration_seconds": 272,
    "completion_percent": 67,
    "created_at": "2026-03-29T14:32:00Z"
  }
}

decision.made

{
  "event": "decision.made",
  "data": {
    "share_slug": "proposal-2024",
    "decision": "accepted",
    "deck_title": "Q4 Enterprise Proposal",
    "viewer_email": "sarah@acme.com",
    "viewer_name": "Sarah Wood",
    "decision_note": "Approved pending final review",
    "decided_at": "2026-03-29T15:30:00Z"
  }
}

email_captured

{
  "event": "email_captured",
  "data": {
    "email": "prospect@company.com",
    "share_slug": "proposal-2024",
    "deck_title": "Q4 Enterprise Proposal",
    "view_id": "view_xyz789",
    "captured_at": "2026-03-29T14:35:00Z"
  }
}

Visualizações e eventos

Endpoints de polling para recuperar dados de engajamento recentes. Eles retornam os mesmos dados que os webhooks entregam em tempo real — use-os para preenchimento retroativo, testes ou como alternativa.

GET/viewsListar as 100 visualizações de documentos mais recentes. Sessões de bots são excluídas.
GET/decisionsListar decisões recentes sobre propostas (aceitas, recusadas, alterações solicitadas).
GET/emailsListar capturas de e-mail recentes de conteúdo restrito.

Tratamento de erros

Todos os erros retornam um objeto JSON com um campo message. Os códigos de status HTTP seguem as convenções padrão.

StatusMeaning
400Requisição inválida — parâmetros ausentes ou inválidos
401Não autorizado — Bearer token inválido ou expirado
404Não encontrado — o recurso não existe ou não pertence à sua equipe
500Erro do servidor — repita a requisição

Limites de taxa

Máximo de 50 assinaturas de webhook ativas por equipe. As requisições de API não têm limite de taxa, mas o uso excessivo pode ser limitado.

Esta API é atualmente utilizada pela nossa integração com o Zapier. Plataformas de integração adicionais poderão ser suportadas no futuro.