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

Ocena 5,0 na 5 w serwisie G2

Przeczytaj opinie w serwisie G2
The page-level analytics are the best part because they show real engagement instead of just basic opens.
Verified User in Computer Software
What I like most about the product is how easy it is to use, especially when it comes to listing all my links and embedding demos in one place for leads and prospects.
Jerome K.Founder
Responsiveness, configurability and development velocity.
Suman K.Co-Founder & CEO

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_...

Dostęp do REST API jest udostępniany na wniosek w planie Business i włączany po rozpatrzeniu osobno dla każdego obszaru roboczego. Następnie właściciele i administratorzy tworzą osobno nazwane klucze API w Ustawieniach obszaru, Integracje, HummingDeck API. Wybierz tylko uprawnienia potrzebne danej integracji. Klucz jest wyświetlany raz podczas tworzenia i nie można go później odzyskać. Wygasa po roku i pozostaje przypisany do swojego obszaru roboczego, więc żądanie nie może wybrać ani zmienić obszaru.

Obszar roboczy może mieć maksymalnie 20 aktywnych kluczy API. Zastąpienie jednego klucza natychmiast unieważnia tylko jego poprzedni sekret; pozostałe klucze nadal działają. Właściciele i administratorzy mogą w dowolnym momencie wyłączyć jeden klucz lub wszystkie klucze. Unieważnienie tego sekretu jest trwałe.

Klucz API obszaru roboczego może wywoływać tylko operacje dozwolone przez wybrane uprawnienia. Endpointy subskrypcji webhooków nie są dostępne dla tych kluczy.

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.

Uprawnienia

Wybierz co najmniej jedno uprawnienie. Uprawnienia do zapisu obejmują również odpowiedni dostęp do odczytu. Możesz zmienić uprawnienia podczas zastępowania klucza.

rooms:read

Wyświetlanie pokoi, kart, elementów, linków i etykiet.

rooms:write

Tworzenie pokoi, kart, elementów, linków i etykiet oraz zarządzanie nimi.

plan:read

Wyświetlanie etapów i zadań wspólnego planu działania.

plan:write

Tworzenie etapów i zadań wspólnego planu działania oraz zarządzanie nimi.

analytics:read

Wyświetlanie analiz zaangażowania, aktywności i zebranych adresów e-mail.

crm:read

Wyszukiwanie firm i kontaktów w obszarze roboczym.

crm:write

Tworzenie lub aktualizowanie firm, kontaktów i odbiorców linków.

documents:read

Wyszukiwanie dokumentów i wyświetlanie ich metadanych.

documents:write

Przesyłanie dokumentów i dodawanie dokumentów lub adresów URL do pokoi.

Etykiety uprawnień przy punktach końcowych dotyczą kluczy API obszaru roboczego. Uprawnienia wymagane obowiązują zawsze, dodatkowe są potrzebne razem z nimi, a warunkowe tylko wtedy, gdy żądanie używa powiązanych filtrów lub pól. GET /me nie wymaga uprawnień. Zapier OAuth korzysta ze stałego dostępu integracji.

Kiedy żądanie zwraca 401

Żądanie zwraca 401, gdy klucz jest nieznany lub nieprawidłowy, wygasł, został wyłączony, należy do obszaru roboczego z wyłączonym dostępem do API albo został wydany przez osobę, która nie jest już właścicielem ani administratorem tego obszaru.

Przetestuj połączenie

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

GET/me

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

Uprawnienie klucza API nie jest wymagane

Dokumenty

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

POST/decks

Prześlij nowy dokument. Wyślij jako multipart/form-data z polem file (PDF, PPTX, DOCX, XLSX, XLS, HTML) i polem title. Limit przesyłania przez API wynosi 30 MB. Przetwarzanie trwa także po przesłaniu; odpowiedź zawiera processingStatus.

Wymagane:documents:write
GET/decks

Wyświetla do 20 dokumentów, od najnowszych. Opcjonalny parametr zapytania title filtruje po fragmencie tytułu bez rozróżniania wielkości liter.

Wymagane:documents:read

GET /decks Pola odpowiedzi

FieldTypeDescription
idstringIdentyfikator dokumentu
titlestringTytuł dokumentu
fileTypestringTyp MIME dokumentu
pageCountinteger | nullLiczba stron
thumbnailUrlstring | nullURL miniatury
processingStatusstringpending, processing, completed lub failed. Dokument można dodać do pokoju w trakcie przetwarzania; link do niego wyślij, gdy status to completed.
processingErrorCodestring | nullPrzyczyna niepowodzenia przetwarzania, jeśli do niego doszło
createdAtstringZnacznik czasu ISO 8601

POST /decks Pola odpowiedzi

FieldTypeDescription
idstringIdentyfikator dokumentu
titlestringTytuł dokumentu
fileTypestringTyp MIME dokumentu
processingStatusstringpending, processing, completed lub failed. Dokument można dodać do pokoju w trakcie przetwarzania; link do niego wyślij, gdy status to completed.
processingErrorCodestring | nullPrzyczyna niepowodzenia przetwarzania, jeśli do niego doszło

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/shares

Tworzy link osobisty lub anonimowy. Linki osobiste mogą automatycznie znajdować lub tworzyć rekordy konta.

Wymagane:documents:write
Warunkowe:crm:write(Required for a non-anonymous share when the request supplies contactId, companyId, companyName, recipientEmail, or recipientName.)

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

Twórz pokoje transakcyjne z dokumentami i linkiem dla odbiorców w jednym wywołaniu, wyszukuj pokoje, zmieniaj ich ustawienia, archiwizuj je i przywracaj oraz porządkuj ich karty i elementy. Funkcja jest dostępna tylko z tokenami API obszaru roboczego; dane uwierzytelniające OAuth Zapier są odrzucane.

GET/rooms

Zwraca listę pokoi od najnowszych. Filtruj za pomocą search, status (active, archived lub all) i companyId. Strona zawiera 25 pokoi (do 100 z limit); aby pobrać kolejną stronę, przekaż nextCursor bieżącej strony jako cursor.

Wymagane:rooms:read
Warunkowe:crm:read(Required when the companyId filter is present.)
POST/rooms

Tworzy pokój z dokumentami i pierwszym linkiem dla odbiorców w jednym wywołaniu.

Wymagane:rooms:write
Warunkowe:documents:write(Required when documentIds contains one or more document IDs.)crm:write(Required when the request supplies contactId, recipientName, recipientEmail, companyId, companyName, or when either primaryLink.allowedEmails or primaryLink.allowedDomains is non-empty.)
GET/rooms/{roomId}

Zwraca ustawienia pokoju, jego karty i elementy w kolejności wyświetlania oraz liczbę linków.

Wymagane:rooms:read
PATCH/rooms/{roomId}

Zmienia nazwę, wiadomość powitalną, osobę do kontaktu, firmę lub kontakt.

Wymagane:rooms:write
Warunkowe:crm:write(Required when companyId or contactId is present, including null to detach the association.)
POST/rooms/{roomId}/archive

Archiwizuje pokój. Jego linki przestają działać.

Wymagane:rooms:write
POST/rooms/{roomId}/restore

Przywraca zarchiwizowany pokój. Jego linki znów działają.

Wymagane:rooms:write
POST/rooms/{roomId}/tabs

Dodaje kartę w wybranym miejscu lub na końcu.

Wymagane:rooms:write
PATCH/rooms/{roomId}/tabs/{tabId}

Zmienia nazwę karty.

Wymagane:rooms:write
PUT/rooms/{roomId}/tabs/order

Ustawia wszystkie karty w nowej kolejności.

Wymagane:rooms:write
DELETE/rooms/{roomId}/tabs/{tabId}

Usuwa kartę, która nie pokazuje żadnych elementów.

Wymagane:rooms:write
POST/rooms/{roomId}/items

Dodaje do karty dokument, adres URL, osadzenie lub separator sekcji.

Wymagane:rooms:write
Warunkowe:documents:write(Required when type is document or url.)
POST/rooms/{roomId}/items/{itemId}/move

Przenosi element na koniec innej karty.

Wymagane:rooms:write
PUT/rooms/{roomId}/items/order

Ustawia elementy jednej karty w nowej kolejności.

Wymagane:rooms:write
DELETE/rooms/{roomId}/items/{itemId}

Usuwa element z pokoju. Pozostaje on w Twojej bibliotece.

Wymagane:rooms:write
GET/rooms/{roomId}/links

Wyświetla linki pokoju dla odbiorców, od najnowszych, wraz z aktywnymi zaproszonymi przy każdym linku ograniczonym.

Wymagane:rooms:read
POST/rooms/{roomId}/links

Tworzy przypisany otwarty link do aktywnego pokoju.

Wymagane:rooms:write
Również wymagane:crm:write
PATCH/rooms/{roomId}/links/{linkId}

Włącza lub wyłącza link, ustawia albo czyści datę wygaśnięcia, lub zastępuje listę dostępu.

Wymagane:rooms:write
Warunkowe:crm:write(Required when allowedEmails or allowedDomains is present, including an empty array that clears the audience.)
GET/rooms/{roomId}/action-plan

Zwraca plan działania pokoju: ustawienia, etapy, zadania (także wewnętrzne), zależności i postęp.

Wymagane:plan:read
PATCH/rooms/{roomId}/action-plan

Zmienia ustawienia planu, w tym to, czy osoby otwierające pokój mogą odhaczać własne zadania.

Wymagane:plan:write
POST/rooms/{roomId}/action-plan/phases

Dodaje kamień milowy. Bez pola color etapy zmieniają się kolejno na turkusowy, brzoskwiniowy i niebieski.

Wymagane:plan:write
PATCH/rooms/{roomId}/action-plan/phases/{phaseId}

Zmienia nazwę etapu, przenosi go, zmienia datę lub ustawia kolor. Wysłanie color null przywraca rotację.

Wymagane:plan:write
DELETE/rooms/{roomId}/action-plan/phases/{phaseId}

Usuwa etap. Pole mode jest wymagane: delete_tasks albo move_to_unphased, żeby zadania nie zniknęły przez przypadek.

Wymagane:plan:write
POST/rooms/{roomId}/action-plan/tasks

Dodaje zadanie. assignee to null, samo pole side dla odpowiedzialnej firmy albo side z adresem email dla konkretnej osoby.

Wymagane:plan:write
PATCH/rooms/{roomId}/action-plan/tasks/{taskId}

Aktualizuje zadanie. Pominięcie assignee zostawia przypisanie bez zmian; wysłanie null je usuwa.

Wymagane:plan:write
DELETE/rooms/{roomId}/action-plan/tasks/{taskId}

Usuwa zadanie. Jego podzadania znikają razem z nim.

Wymagane:plan:write
POST/rooms/{roomId}/action-plan/tasks/{taskId}/status

Kończy lub ponownie otwiera zadanie w imieniu obszaru roboczego. Zadanie z nieukończoną zależnością zwraca 409 TASK_BLOCKED.

Wymagane:plan:write
GET/rooms/{roomId}/analytics

Wizyty w pokoju, unikalni odbiorcy, średni czas, otwarte dokumenty z całości i średnie ukończenie. Bez botów.

Wymagane:analytics:read
GET/rooms/{roomId}/activity

Co wydarzyło się w pokoju, od najnowszych. Wpisy z dyskusji podają nadawcę i nigdy nie zawierają treści wiadomości. Zawęź parametrem since.

Wymagane:analytics:read
GET/rooms/{roomId}/captured-emails

Adresy zebrane przez pokój. Pole source ma wartość verify, gdy osoba potwierdziła adres jednorazowym linkiem, i ask, gdy tylko go wpisała.

Wymagane:analytics:read
GET/room-views

Wejścia do pokoi w całym obszarze roboczym, od najnowszych. Nie ma innego źródła informacji o wejściu; /views obejmuje tylko wyświetlenia dokumentów.

Wymagane:analytics:read
GET/room-labels

Wyświetla etykiety pokoi w obszarze roboczym wraz z liczbą pokoi, które ich używają. Tutaj znajdziesz identyfikatory przed oznaczeniem pokoju.

Wymagane:rooms:read
POST/room-labels

Tworzy etykietę. Nazwy są unikalne w obszarze roboczym, bez rozróżniania wielkości liter; color to wartość szesnastkowa #RRGGBB.

Wymagane:rooms:write
PATCH/room-labels/{labelId}

Zmienia nazwę etykiety, jej kolor lub opis.

Wymagane:rooms:write
DELETE/room-labels/{labelId}

Usuwa etykietę i jej przypisania. Pokoje, które ją miały, pozostają bez zmian; odpowiedź podaje, ile ją straciło.

Wymagane:rooms:write

Utwórz pokój jednym wywołaniem

Prześlij każdy plik za pomocą POST /decks, a następnie utwórz pokój dla firmy odbiorcy z ograniczonym linkiem dla osób, które mają go zobaczyć. Firma, kontakty, pokój, dokumenty i link powstają razem: jeśli wywołanie zostanie odrzucone, nic nie zostanie utworzone. Dokumenty mogą trafić do pokoju jeszcze w trakcie przetwarzania. Elementy pokoju podają processingStatus, więc wyślij link, gdy każdy dokument będzie miał status completed.

{
  "name": "Acme renewal",
  "companyName": "Acme Inc",
  "recipientName": "Pat Buyer",
  "recipientEmail": "pat@acme.example",
  "documentIds": [
    "{documentId}",
    "{documentId}"
  ],
  "primaryLink": {
    "accessMode": "verified-allowlist",
    "allowedEmails": [
      "pat@acme.example",
      {
        "email": "cfo@acme.example",
        "name": "Sam Rivera"
      }
    ],
    "allowedDomains": [
      "acme.example"
    ]
  }
}

accessMode to open (każdy, kto ma URL), verify-any (odwiedzający potwierdzają adres e-mail jednorazowym linkiem) lub verified-allowlist (tylko adresy z allowedEmails i każdy z adresem w domenach z allowedDomains). API samo nikogo nie dodaje do ograniczonego linku, więc dodaj własny adres, jeśli chcesz obejrzeć pokój wcześniej. Opcja, której nie obejmuje Twój plan, zwraca 403 FEATURE_NOT_AVAILABLE, a nieznane pole zwraca 400, dzięki czemu pokój nigdy nie otworzy się dla innych odbiorców niż ci, o których prosisz.

Porządkuj karty i elementy

Zacznij od aktualnego stanu pokoju: odczyt pokoju zwraca jego karty i elementy w kolejności wyświetlania, a każdy element podaje swoją kartę i pozycję na niej, licząc od 0. Dodawaj karty i elementy w wybranej pozycji, przenoś elementy między kartami i wysyłaj pełną nową kolejność karty. Kolejność musi zawierać każdy element karty dokładnie raz, więc odczytaj pokój ponownie, jeśli w międzyczasie nastąpiła inna zmiana. Kartę można usunąć, gdy nie pokazuje już żadnych elementów.

{
  "type": "section",
  "label": "Commercials",
  "tabId": "{tabId}",
  "position": 0
}

Obsługiwani dostawcy osadzeń

Osadzenia przyjmują link udostępniania lub link osadzenia i normalizują go do formy osadzenia dostawcy. Wszystko spoza tej listy zwraca 400 EMBED_PROVIDER_NOT_SUPPORTED.

FieldTypeDescription
WideoLoom, YouTube, Vimeo, Wistia, Vidyard
Umawianie spotkańCalendly, Cal.com, SavvyCal, Google Calendar
FormularzeTypeform, Tally, Google Forms, Jotform, Fillout
ProjektowanieFigma, Miro, Canva, Whimsical
Dokumenty i tabeleGoogle Docs, Google Sheets, Notion, Coda, Airtable
PrezentacjeGoogle Slides, Pitch, Gamma, Guideflow, Flipsnack, Prezi
AudioSpotify, SoundCloud

Dodaj kolejny link dla odbiorców

Każdy pokój ma już link utworzony przez POST /rooms; dodaj kolejne dla odbiorców, którzy potrzebują innego przypisania lub dostępu. Podaj co najmniej jedno z pól recipientName, recipientEmail, contactId, companyId lub companyName. accessMode przyjmuje te same wartości open, verify-any i verified-allowlist co primaryLink, wraz z tymi samymi polami (requireEmail, allowedEmails, allowedDomains, label, expiresAt, allowDownloads). Odrzucone wywołanie, także z powodu limitu planu, nie zostawia żadnego linku, firmy ani kontaktu.

{
  "companyName": "Analytical Engines",
  "accessMode": "verified-allowlist",
  "allowedEmails": [
    {
      "email": "cfo@analytical.example",
      "name": "Sam Rivera"
    }
  ]
}

Zaktualizuj link

Cztery pola: isActive, expiresAt, allowedEmails, allowedDomains (dwa ostatnie tylko w linkach verified-allowlist). accessMode i slug nigdy się nie zmieniają; zamiast tego utwórz nowy link. Ponowne włączenie linku sprawdza limit aktywnych linków w planie.

{
  "isActive": false
}

Zbuduj plan działania

Każdy pokój ma dokładnie jeden plan, więc plan podpina się pod pokój bez własnego identyfikatora. Większość zadań należy do firmy, a nie do osoby: wyślij samo pole side, a plan odczyta je jako firmę. O to właśnie chodzi, gdy nie wiesz, kto po drugiej stronie wykona pracę. Adres email dodaj tylko wtedy, gdy znasz konkretną osobę. Zadanie wewnętrzne nigdy nie pojawia się w pokoju, więc nie może należeć do odbiorcy.

{
  "title": "Sign the NDA",
  "assignee": {
    "side": "buyer"
  },
  "dueDate": "2026-10-02"
}

Pole recipientCompletionEnabled w planie decyduje, czy osoby otwierające pokój mogą odhaczać zadania swojej strony. Domyślnie ma wartość true i jest to jedyne ograniczenie: API nigdy nie prosi o adres odbiorcy, żeby ukończyć zadanie. To, kto odhaczył każde z nich, jest zapisywane z pewnością wynikającą z trybu dostępu pokoju.

Oznaczaj pokoje etykietami

Etykiety obowiązują w całym obszarze roboczym: utwórz je raz i używaj wielokrotnie. Przekaż labelIds w POST /rooms, aby oznaczyć pokój już przy tworzeniu, albo w PATCH /rooms/{roomId}, aby zastąpić cały zestaw; pusta tablica usuwa wszystkie etykiety, a pominięcie pola zostawia je bez zmian. Pokój ma najwyżej pięć, co wynika ze struktury, a nie z ustawienia. Odczyt pokoju zwraca jego etykiety.

{
  "labelIds": [
    "{labelId}"
  ]
}

Sprawdź, co się wydarzyło

Odpytuj /room-views o wejścia w całym obszarze roboczym, a następnie czytaj analitykę, aktywność i zebrane adresy jednego pokoju. Aby przejść dalej, przekaż nextCursor strony jako cursor; kursor, którego to API nie wydało, zwraca 400 zamiast zaczynać od początku, więc odpytywanie nie powtarza pracy. Zawęź okno aktywności parametrem since i przeglądaj strony za pomocą cursor. /room-views to okno czasowe, a nie archiwum: bez since otrzymasz ostatnie 30 dni, a żądania sięgające dalej niż 90 dni wstecz zostaną odrzucone. Zastosowane okno wraca jako since; wyślij je razem z cursor, aby dalej przeglądać ten sam zestaw.

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.

Wymagane:crm:read
POST/companies

Znajduje firmę według nazwy bez rozróżniania wielkości liter lub ją tworzy. Jawna domena jedynie wzbogaca rekord.

Wymagane:crm:write
GET/contacts?email={query}

Wyszukuje kontakty według adresu e-mail i zwraca dopasowania wraz z powiązaną firmą.

Wymagane:crm:read
POST/contacts

Znajduje lub tworzy kontakt według adresu e-mail i opcjonalnie łączy go z firmą.

Wymagane:crm:write

Żą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/hooks

Subskrybuj zdarzenie. Wymaga docelowego adresu HTTPS i typu zdarzenia. Zwraca identyfikator subskrypcji.

Tylko Zapier OAuth

DELETE/hooks/{id}

Anuluj subskrypcję zdarzenia na podstawie identyfikatora subskrypcji.

Tylko Zapier OAuth

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/views

Wyświetl 100 ostatnich wyświetleń dokumentów. Sesje botów są wykluczone.

Wymagane:analytics:read
GET/decisions

Wyświetl ostatnie decyzje dotyczące propozycji (zaakceptowane, odrzucone, poproszone o zmiany).

Wymagane:analytics:read
GET/emails

Wyświetl ostatnie przechwycenia e-maili z treści z bramką.

Wymagane:analytics:read

Obsługa błędów

Każdy błąd zwraca obiekt JSON z polem error opisującym, co poszło nie tak. Większość odpowiedzi zawiera też pole code do obsługi programistycznej, na przykład PLAN_LIMIT_REACHED, FEATURE_NOT_AVAILABLE, ROOM_NOT_ACTIVE, TAB_NOT_EMPTY, 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: poświadczenie nie ma wymaganego scope, osiągnięto limit planu, plan nie obejmuje wymaganej opcji 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 nie są zgodne, pokój jest zarchiwizowany albo karty pokoju nie pozwalają na tę zmianę
413Ładunek jest zbyt duży: treść żądania lub przesyłany plik przekracza limit tego punktu końcowego
429Zbyt wiele żądań: klucz lub adres IP klienta przekroczył bieżący limit; ponów po czasie podanym w Retry-After
500Błąd serwera: ponów żądanie

Limity liczby żądań

Ręczne klucze obszaru roboczego i połączenia OAuth Zapier mają limity na dane uwierzytelniające: 600 odczytów na 5 minut, 120 zapisów na minutę, 60 żądań /room-views na minutę i 20 przesłań na godzinę. Łącznie dla wszystkich danych uwierzytelniających obszar roboczy ma limit 1 200 odczytów na 5 minut, 240 zapisów na minutę, 120 żądań /room-views na minutę i 40 przesłań na godzinę. Nieudane uwierzytelnienia Bearer i nieprawidłowe uwierzytelnienia klienta OAuth są osobno ograniczone do 60 prób na 5 minut dla każdego adresu IP klienta. Maksymalnie 50 aktywnych subskrypcji webhooków na zespół.

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