Stworzone dla zaufaniaSzyfrowanie TLSZgodność z RODOGoogle CloudBezpieczne płatnościPrzegląd bezpieczeństwa

Dokumentacja API

HummingDeck udostępnia REST API dla partnerów integracyjnych i platform automatyzacji. Punkty końcowe uwierzytelniają się tokenem Bearer i zwracają odpowiedzi JSON.

Bazowy URLhttps://app.hummingdeck.com/api/v1
OpenAPI Spec

Uwierzytelnianie

Każde żądanie do API przesyła token Bearer w nagłówku Authorization. Akceptowane są dwa rodzaje poświadczeń i działają one inaczej.

Metoda

Token Bearer

Format nagłówka

Authorization: Bearer {access_token}

Rodzaje poświadczeń

Token API przestrzeni roboczej

Authorization: Bearer hd_api_...

Wydawany przez właściciela przestrzeni roboczej w Ustawieniach przestrzeni, Integracje, HummingDeck API. W ramach zamkniętego pilotażu dostępny tylko dla wybranych przestrzeni. Token jest pokazywany jeden raz przy tworzeniu i później nie można go odzyskać. Wygasa rok po utworzeniu i jest na stałe powiązany z przestrzenią, dla której go wydano, więc żądanie nie może wybrać ani zmienić swojej przestrzeni roboczej.

Utworzenie tokenu, gdy jeden już istnieje, zastępuje go, a poprzedni natychmiast przestaje działać. Właściciel może wyłączyć token w dowolnym momencie. Dla tego tokenu jest to nieodwracalne: zamiast liczyć na przywrócenie, utwórz nowy.

Endpointy subskrypcji webhooków nie są dostępne dla tokenów API przestrzeni roboczej.

Zapier OAuth

Authorization: Bearer {access_token}

Wydawany przez proces autoryzacji OAuth, gdy przestrzeń robocza łączy integrację Zapier. Tokeny dostępu wygasają po 30 dniach. Użyj tokenu odświeżania, ważnego 90 dni, aby uzyskać nowy bez ponownej autoryzacji.

To jedyne poświadczenia, które mogą tworzyć i usuwać subskrypcje webhooków.

Kiedy żądanie zwraca 401

Żądanie jest odrzucane z kodem 401, gdy token jest nieznany lub nieprawidłowy, wygasł, został wyłączony, należy do przestrzeni roboczej z wyłączonym dostępem do API albo został wydany przez osobę, która nie jest już właścicielem tej przestrzeni.

Przetestuj połączenie

Sprawdź, czy Twój token jest ważny, i wyświetl profil uwierzytelnionego użytkownika.

GET/meZwraca imię i nazwisko, adres e-mail oraz informacje o zespole bieżącego użytkownika.

Dokumenty

Przesyłaj, wyszukuj i zarządzaj dokumentami (plikami PDF, prezentacjami, propozycjami i innymi plikami).

POST/decksPrześlij nowy dokument. Wyślij jako multipart/form-data z polem file (PDF, PPTX, DOCX, XLSX, HTML) i polem title. Limit przesyłania przez API wynosi 30 MB.
GET/decks?title={query}Wyszukaj dokumenty według tytułu. Wyszukiwanie bez rozróżniania wielkości liter, zwraca do 20 wyników.

Pola odpowiedzi

FieldTypeDescription
idstringIdentyfikator dokumentu
titlestringTytuł dokumentu
fileTypestringTyp pliku (pdf, pptx, docx, html)
pageCountnumberLiczba stron
thumbnailUrlstringURL miniatury
createdAtstringZnacznik czasu ISO 8601

Linki do udostępniania

Twórz śledzalne linki do dokumentów. Link osobisty może znaleźć lub utworzyć kontakt i firmę w tym samym żądaniu.

POST/sharesTworzy link osobisty lub anonimowy. Linki osobiste mogą automatycznie znajdować lub tworzyć rekordy konta.

Pola żądania

FieldTypeDescription
deckIdstringwymaganeIdentyfikator dokumentu do udostępnienia
recipientNamestringopcjonalneImię i nazwisko odbiorcy linku osobistego
recipientEmailstringopcjonalneAdres e-mail odbiorcy linku osobistego
contactIdUUIDopcjonalneIstniejący kontakt w uwierzytelnionym obszarze roboczym
companyIdUUIDopcjonalneIstniejąca firma. Nie można używać z companyName
companyNamestringopcjonalneFirma do znalezienia według nazwy lub utworzenia
companyDomainstringopcjonalneDomena zapisywana do wzbogacenia danych po podaniu companyName. Nigdy nie służy do wyboru firmy
typestringopcjonalneDomyślnie personal, gdy podano pola odbiorcy lub konta, w przeciwnym razie anonymous

Utwórz link i rekordy konta w jednym kroku

Prześlij dane odbiorcy i firmy bezpośrednio do /shares. HummingDeck znajduje pasujące rekordy, tworzy brakujące, łączy je z linkiem i informuje, które zostały utworzone. Ustaw type jawnie na anonymous, aby pominąć tworzenie rekordów konta.

{
  "deckId": "8f3d41de-2bb8-4d8e-80de-6cd2072ffab1",
  "recipientName": "Ada Lovelace",
  "recipientEmail": "ada@analytical.example",
  "companyName": "Analytical Engines",
  "companyDomain": "analytical.example"
}

Pola odpowiedzi

FieldTypeDescription
idstringIdentyfikator udostępnienia
slugstringSlug udostępnienia (używany w URL)
shareUrlstringPełny śledzalny URL
typestring"personal" lub "anonymous"
recipientNamestringImię odbiorcy (jeśli osobisty)
recipientEmailstringE-mail odbiorcy (jeśli osobisty)
contactobject | nullKontakt połączony z linkiem osobistym
contactCreatedbooleantrue, jeśli to żądanie utworzyło kontakt
companyobject | nullFirma połączona z linkiem osobistym
companyCreatedbooleantrue, jeśli to żądanie utworzyło firmę
createdAtstringZnacznik czasu ISO 8601

Pokoje

Pobieraj strukturę pokoju i twórz śledzone linki dla odbiorców. Funkcja jest dostępna tylko z tokenami API obszaru roboczego; dane uwierzytelniające OAuth Zapier są odrzucane.

GET/rooms/{roomId}Zwraca metadane, karty, elementy oraz liczbę aktywnych i wszystkich linków pokoju.
POST/rooms/{roomId}/linksTworzy przypisany otwarty link do aktywnego pokoju.

Utwórz otwarty link do pokoju

Podaj co najmniej jedno z pól: recipientName, recipientEmail, contactId, companyId lub companyName. Imię i adres e-mail wyszukują lub tworzą kontakt, a pola firmy wyszukują lub tworzą firmę. Każda osoba mająca URL może otworzyć taki link.

{
  "accessMode": "open",
  "recipientName": "Ada Lovelace",
  "recipientEmail": "ada@analytical.example",
  "companyName": "Analytical Engines"
}

Firmy i kontakty

Znajdź istniejące rekordy konta lub utwórz nowe z jednoznacznym dopasowaniem. Nazwy firm i adresy e-mail kontaktów są porównywane bez rozróżniania wielkości liter.

GET/companies?name={name}&domain={domain}Wyszukuje firmy według dokładnej nazwy i opcjonalnej domeny.
POST/companiesZnajduje firmę według nazwy bez rozróżniania wielkości liter lub ją tworzy. Jawna domena jedynie wzbogaca rekord.
GET/contacts?email={query}Wyszukuje kontakty według adresu e-mail i zwraca dopasowania wraz z powiązaną firmą.
POST/contactsZnajduje lub tworzy kontakt według adresu e-mail i opcjonalnie łączy go z firmą.

Żądanie POST /companies

FieldTypeDescription
namestringwymaganeNazwa firmy
domainstringopcjonalneDomena używana do wzbogacenia danych firmy. Nigdy nie służy do dopasowania istniejącej firmy

Żądanie POST /contacts

FieldTypeDescription
namestringwarunkowePełne imię i nazwisko. Wymagane, jeśli brak firstName
firstNamestringwarunkoweImię. Wymagane, jeśli brak name
lastNamestringopcjonalneNazwisko
emailstringwymaganeAdres e-mail używany do jednoznacznego dopasowania
titlestringopcjonalneStanowisko
companyIdUUIDopcjonalneIstniejąca firma w uwierzytelnionym obszarze roboczym
companyNamestringopcjonalneNazwa firmy do znalezienia lub utworzenia
companyDomainstringopcjonalneOpcjonalna domena do wzbogacenia danych używana z companyName. Nie jest kluczem dopasowania firmy

Odpowiedź firmy

FieldTypeDescription
company.idUUIDIdentyfikator firmy
company.namestringNazwa firmy
company.domainstring | nullZnormalizowana domena firmy
createdbooleantrue, jeśli żądanie POST utworzyło firmę

Odpowiedź kontaktu

FieldTypeDescription
contact.idUUIDIdentyfikator kontaktu
contact.firstNamestringImię
contact.lastNamestringNazwisko
contact.emailstringZnormalizowany adres e-mail
contact.titlestring | nullStanowisko
contact.companyIdUUID | nullIdentyfikator powiązanej firmy
contact.companyNamestring | nullNazwa powiązanej firmy
createdbooleantrue, jeśli żądanie POST utworzyło kontakt
companyobject | nullUstalona firma, jeśli jest dostępna
companyCreatedbooleantrue, jeśli to żądanie utworzyło firmę

Webhooki

Subskrybuj zdarzenia w czasie rzeczywistym za pomocą REST Hooks. Gdy wystąpi zdarzenie, HummingDeck wysyła żądanie POST na zarejestrowany adres HTTPS z ładunkiem zdarzenia. Nieudane dostarczenia są ponawiane do 3 razy (po 1 s, 5 s i 30 s). Subskrypcje webhooków są zarządzane przez integrację Zapier i nie są dostępne dla tokenów API przestrzeni roboczej.

POST/hooksSubskrybuj zdarzenie. Wymaga docelowego adresu HTTPS i typu zdarzenia. Zwraca identyfikator subskrypcji.
DELETE/hooks/{id}Anuluj subskrypcję zdarzenia na podstawie identyfikatora subskrypcji.

Typy zdarzeń

EventDescription
view.createdPrawdziwa osoba obejrzała udostępniony dokument. Ruch botów (skanery bezpieczeństwa e-mail, crawlery) jest automatycznie filtrowany.
decision.madePotencjalny klient odpowiedział na propozycję: zaakceptował, odrzucił lub poprosił o zmiany.
email_capturedOdwiedzający podał swój adres e-mail, aby uzyskać dostęp do treści z bramką.

Przykładowe ładunki

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"
  }
}

Wyświetlenia i zdarzenia

Punkty końcowe pollingu do pobierania ostatnich danych zaangażowania. Zwracają te same dane, które webhooki dostarczają w czasie rzeczywistym. Używaj ich do uzupełniania danych, testowania lub jako rezerwę.

GET/viewsWyświetl 100 ostatnich wyświetleń dokumentów. Sesje botów są wykluczone.
GET/decisionsWyświetl ostatnie decyzje dotyczące propozycji (zaakceptowane, odrzucone, poproszone o zmiany).
GET/emailsWyświetl ostatnie przechwycenia e-maili z treści z bramką.

Obsługa błędów

Każdy błąd zwraca obiekt JSON z polem error opisującym, co poszło nie tak. Niektóre odpowiedzi zawierają też pole code do obsługi programistycznej, na przykład PLAN_LIMIT_REACHED, INVALID_FORMAT lub FILE_TOO_LARGE. Kody stanu HTTP są zgodne z przyjętymi konwencjami.

StatusMeaning
400Nieprawidłowe żądanie: brakujące lub nieprawidłowe parametry
401Brak autoryzacji: nieprawidłowy lub wygasły Bearer token
403Zabronione: osiągnięto limit planu albo ten rodzaj poświadczeń nie jest dozwolony w tym punkcie końcowym
404Nie znaleziono: zasób nie istnieje lub nie należy do Twojego zespołu
409Konflikt: podane identyfikatory kontaktu, adresu e-mail i firmy nie są zgodne
500Błąd serwera: ponów żądanie

Limity liczby żądań

Maksymalnie 50 aktywnych subskrypcji webhooków na zespół. Żądania API nie są ograniczone, ale nadmierne użycie może być ograniczane.

To API jest obecnie używane przez naszą integrację Zapier. W przyszłości mogą być obsługiwane dodatkowe platformy integracyjne.