Gebouwd op vertrouwenTLS-versleutelingAVG-klaarGoogle CloudVeilige betalingenBeveiligingsoverzicht
G2

Beoordeeld met 5,0 van de 5 op G2

Lees de beoordelingen op 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

API-referentie

HummingDeck biedt een REST API voor integratiepartners en automatiseringsplatformen. Endpoints authenticeren met een Bearer token en geven JSON-antwoorden terug.

Basis-URLhttps://app.hummingdeck.com/api/v1
OpenAPI Spec

Authenticatie

Elke API-aanvraag stuurt een Bearer token mee in de Authorization-header. Er worden twee soorten credentials geaccepteerd, en ze gedragen zich verschillend.

Methode

Bearer token

Headerformaat

Authorization: Bearer {access_token}

Soorten credentials

Werkruimte-API-token

Authorization: Bearer hd_api_...

Toegang tot de REST API is op aanvraag beschikbaar met het Business-abonnement en wordt na beoordeling per werkruimte ingeschakeld. Daarna maken eigenaren en beheerders afzonderlijk benoemde API-sleutels in Werkruimte-instellingen, Integraties, HummingDeck API. Kies alleen de machtigingen die elke integratie nodig heeft. Een sleutel wordt bij het aanmaken één keer getoond en kan daarna niet meer worden opgevraagd. De sleutel verloopt na een jaar en blijft aan de werkruimte gekoppeld, zodat een aanvraag de werkruimte niet kan kiezen of wijzigen.

Een werkruimte kan maximaal 20 actieve API-sleutels hebben. Als je één sleutel vervangt, wordt alleen het vorige geheim van die sleutel direct ongeldig; andere sleutels blijven werken. Eigenaren en beheerders kunnen één sleutel of alle sleutels op elk moment uitschakelen. Intrekking van dat geheim is permanent.

Een werkruimte-API-sleutel kan alleen bewerkingen aanroepen die door de geselecteerde machtigingen zijn toegestaan. Endpoints voor webhook-abonnementen zijn niet beschikbaar voor deze sleutels.

Zapier OAuth

Authorization: Bearer {access_token}

Uitgegeven via de OAuth-autorisatiestroom wanneer een werkruimte de Zapier-integratie koppelt. Access tokens verlopen na 30 dagen. Gebruik het refresh token, dat 90 dagen geldig is, om een nieuw access token te krijgen zonder opnieuw te autoriseren.

Dit is de enige credential die webhook-abonnementen kan aanmaken of verwijderen.

Machtigingen

Kies minstens één machtiging. Schrijfmachtigingen omvatten ook de bijbehorende leestoegang. Je kunt de machtigingen wijzigen wanneer je de sleutel vervangt.

rooms:read

Kamers, tabbladen, items, links en labels bekijken.

rooms:write

Kamers, tabbladen, items, links en labels maken en beheren.

plan:read

Fasen en taken van het gezamenlijke actieplan bekijken.

plan:write

Fasen en taken van het gezamenlijke actieplan maken en beheren.

analytics:read

Betrokkenheidsanalyses, activiteit en verzamelde e-mails bekijken.

crm:read

Bedrijven en contacten in de werkruimte zoeken.

crm:write

Bedrijven, contacten en linkdoelgroepen maken of bijwerken.

documents:read

Documenten zoeken en hun metadata bekijken.

documents:write

Documenten uploaden en documenten of URL’s aan kamers toevoegen.

De permissielabels bij endpoints gelden voor API-sleutels van de werkruimte. Vereiste permissies gelden altijd, extra vereiste permissies zijn samen nodig en voorwaardelijke permissies alleen wanneer het verzoek de bijbehorende filters of velden gebruikt. GET /me heeft geen permissie nodig. Zapier OAuth gebruikt de vaste integratietoegang.

Wanneer een aanvraag 401 teruggeeft

Een aanvraag retourneert 401 als de sleutel onbekend of ongeldig is, is verlopen, is uitgeschakeld, bij een werkruimte met uitgeschakelde API-toegang hoort, of is uitgegeven door iemand die geen eigenaar of beheerder van die werkruimte meer is.

Test uw verbinding

Verifieer dat uw token geldig is en bekijk het profiel van de geauthenticeerde gebruiker.

GET/me

Retourneert de naam, het e-mailadres en de teaminformatie van de huidige gebruiker.

Geen API-sleutelpermissie vereist

Documenten

Upload, zoek en beheer documenten (PDF's, presentaties, voorstellen en andere bestanden).

POST/decks

Een nieuw document uploaden. Verzend als multipart/form-data met een file-veld (PDF, PPTX, DOCX, XLSX, XLS, HTML) en een title-veld. De uploadlimiet via de API is 30 MB. De verwerking gaat na de upload door; het antwoord bevat processingStatus.

Vereist:documents:write
GET/decks

Geeft maximaal 20 documenten weer, nieuwste eerst. Gebruik de optionele queryparameter title om zonder onderscheid tussen hoofdletters en kleine letters op een deel van de titel te filteren.

Vereist:documents:read

GET /decks Antwoordvelden

FieldTypeDescription
idstringDocument-ID
titlestringDocumenttitel
fileTypestringMIME-type van het document
pageCountinteger | nullAantal pagina's
thumbnailUrlstring | nullURL van de miniatuurafbeelding
processingStatusstringpending, processing, completed of failed. Een document kan al tijdens de verwerking in een ruimte; stuur een link ernaar zodra de status completed is.
processingErrorCodestring | nullWaarom de verwerking mislukte, als dat gebeurde
createdAtstringISO 8601-tijdstempel

POST /decks Antwoordvelden

FieldTypeDescription
idstringDocument-ID
titlestringDocumenttitel
fileTypestringMIME-type van het document
processingStatusstringpending, processing, completed of failed. Een document kan al tijdens de verwerking in een ruimte; stuur een link ernaar zodra de status completed is.
processingErrorCodestring | nullWaarom de verwerking mislukte, als dat gebeurde

Deellinks

Maak traceerbare documentlinks. Een persoonlijke link kan in dezelfde aanvraag het contact en bedrijf vinden of aanmaken.

POST/shares

Maakt een persoonlijke of anonieme link. Persoonlijke links kunnen accountrecords automatisch vinden of aanmaken.

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

Verzoeksvelden

FieldTypeDescription
deckIdstringverplichtID van het te delen document
recipientNamestringoptioneelNaam van de ontvanger voor een persoonlijke link
recipientEmailstringoptioneelE-mailadres van de ontvanger voor een persoonlijke link
contactIdUUIDoptioneelBestaand contact in de geauthenticeerde werkruimte
companyIdUUIDoptioneelBestaand bedrijf. Kan niet samen met companyName worden gebruikt
companyNamestringoptioneelBedrijf om op naam te vinden of aan te maken
companyDomainstringoptioneelDomein dat voor verrijking wordt opgeslagen wanneer companyName is opgegeven. Het selecteert nooit een bedrijf
typestringoptioneelStandaard personal met ontvanger- of accountvelden, anders anonymous

Maak de link en accountrecords tegelijk

Stuur gegevens van de ontvanger en het bedrijf rechtstreeks naar /shares. HummingDeck vindt overeenkomende records, maakt ontbrekende records aan, koppelt ze aan de link en meldt wat er is aangemaakt. Stel type expliciet in op anonymous om geen accountrecords aan te maken.

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

Antwoordvelden

FieldTypeDescription
idstringDeel-ID
slugstringDeel-slug (gebruikt in de URL)
shareUrlstringVolledige traceerbare URL
typestring"personal" of "anonymous"
recipientNamestringNaam van de ontvanger (bij persoonlijke links)
recipientEmailstringE-mail van de ontvanger (bij persoonlijke links)
contactobject | nullContact dat aan de persoonlijke link is gekoppeld
contactCreatedbooleantrue als deze aanvraag het contact heeft aangemaakt
companyobject | nullBedrijf dat aan de persoonlijke link is gekoppeld
companyCreatedbooleantrue als deze aanvraag het bedrijf heeft aangemaakt
createdAtstringISO 8601-tijdstempel

Ruimtes

Maak Digital Sales Rooms met hun documenten en doelgroeplink in één aanroep, zoek ruimtes, wijzig hun instellingen, archiveer en herstel ze, en orden hun tabbladen en items. Alleen beschikbaar met API-tokens voor de werkruimte; Zapier OAuth-referenties worden geweigerd.

GET/rooms

Geeft ruimtes terug, de nieuwste eerst. Filter met search, status (active, archived of all) en companyId. Een pagina bevat 25 ruimtes (tot 100 met limit); geef de nextCursor van een pagina door als cursor om de volgende op te halen.

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

Maakt een ruimte met de documenten en de eerste doelgroeplink in één aanroep.

Vereist:rooms:write
Voorwaardelijk: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}

Geeft de instellingen van de ruimte terug, de tabbladen en items in weergavevolgorde en het aantal links.

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

Wijzigt de naam, het welkomstbericht, het aanspreekpunt, het bedrijf of de contactpersoon.

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

Archiveert de ruimte. De links ervan werken niet meer.

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

Herstelt een gearchiveerde ruimte. De links werken weer.

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

Voegt een tabblad toe, op een gekozen positie of achteraan.

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

Wijzigt de naam van een tabblad.

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

Zet alle tabbladen in een nieuwe volgorde.

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

Verwijdert een tabblad dat geen items toont.

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

Voegt een document, URL, embed of sectiescheiding toe aan een tabblad.

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

Verplaatst een item naar het einde van een ander tabblad.

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

Zet de items van één tabblad in een nieuwe volgorde.

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

Haalt een item uit de ruimte. Het blijft in je bibliotheek.

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

Toont de doelgroeplinks van de ruimte, nieuwste eerst, met de actieve genodigden van elke beperkte link.

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

Maakt een toegeschreven open link voor een actieve ruimte.

Vereist:rooms:write
Ook vereist:crm:write
PATCH/rooms/{roomId}/links/{linkId}

Zet een link aan of uit, stelt de vervaldatum in of wist die, of vervangt de toegangslijst.

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

Geeft het actieplan van de ruimte terug: instellingen, fases, taken (ook interne), afhankelijkheden en voortgang.

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

Wijzigt de instellingen van het plan, inclusief of wie de room opent de eigen taken mag afvinken.

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

Voegt een mijlpaal toe. Zonder color wisselen fases op volgorde tussen turquoise, perzik en blauw.

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

Hernoemt een fase, verplaatst hem, wijzigt de datum of stelt de kleur in. color null herstelt de rotatie.

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

Verwijdert een fase. mode is verplicht: delete_tasks of move_to_unphased, zodat taken nooit per ongeluk verdwijnen.

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

Voegt een taak toe. assignee is null, alleen een side voor het verantwoordelijke bedrijf, of een side met email voor een specifieke persoon.

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

Werkt een taak bij. assignee weglaten laat het eigenaarschap staan; null wist het.

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

Verwijdert een taak. De subtaken gaan mee.

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

Voltooit of heropent een taak namens de werkruimte. Een taak achter een onafgeronde afhankelijkheid geeft 409 TASK_BLOCKED.

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

Ruimtebezoeken, unieke kijkers, gemiddelde tijd, geopende documenten van het totaal en gemiddelde voltooiing. Bots uitgesloten.

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

Wat er in de room gebeurde, nieuwste eerst. Discussie-items noemen de afzender en bevatten nooit het bericht. Beperk met since.

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

Adressen die de room heeft verzameld. source is verify als de persoon het met een eenmalige link bevestigde, en ask als het alleen is ingetypt.

Vereist:analytics:read
GET/room-views

Ruimtebezoeken in de hele werkruimte, nieuwste eerst. Er is geen andere bron voor wie een room binnenkomt; /views dekt alleen documentweergaven.

Vereist:analytics:read
GET/room-labels

Toont de roomlabels van de werkruimte met hoeveel rooms elk label gebruiken. Hier vind je de label-ID's voordat je een room labelt.

Vereist:rooms:read
POST/room-labels

Maakt een label. Namen zijn uniek per werkruimte, ongeacht hoofdletters; color is een hexwaarde in de vorm #RRGGBB.

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

Hernoemt een label, wijzigt de kleur of bewerkt de beschrijving.

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

Verwijdert een label en de toewijzingen ervan. De rooms die het droegen blijven ongemoeid; het antwoord zegt hoeveel het kwijtraakten.

Vereist:rooms:write

Een ruimte maken in één aanroep

Upload elk bestand met POST /decks en maak daarna de ruimte voor het bedrijf van de ontvanger, met een beperkte link voor de mensen die de ruimte mogen zien. Het bedrijf, de contactpersonen, de ruimte, de documenten en de link worden samen aangemaakt: als de aanroep wordt geweigerd, wordt er niets aangemaakt. Documenten kunnen al in de ruimte terwijl ze nog worden verwerkt. De items van de ruimte melden processingStatus, dus stuur de link pas zodra elk document completed meldt.

{
  "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 is open (iedereen met de URL), verify-any (bezoekers bevestigen hun e-mailadres met een eenmalige link) of verified-allowlist (alleen de adressen in allowedEmails en iedereen met een adres op de domeinen in allowedDomains). De API voegt uit zichzelf niemand toe aan een beperkte link, dus neem je eigen adres op als je de ruimte vooraf wilt bekijken. Een optie die je abonnement niet bevat geeft 403 FEATURE_NOT_AVAILABLE terug en een onbekend veld geeft 400, zodat een ruimte nooit opengaat voor een andere doelgroep dan je vroeg.

Tabbladen en items ordenen

Ga uit van de ruimte zoals die nu is: als je een ruimte opvraagt, krijg je de tabbladen en items in weergavevolgorde, en elk item meldt zijn tabblad en zijn positie daarin, geteld vanaf 0. Voeg tabbladen en items op een positie toe, verplaats items tussen tabbladen en stuur de volledige nieuwe volgorde van een tabblad. Een volgorde moet elk item van het tabblad precies één keer bevatten, dus vraag de ruimte opnieuw op als er intussen een andere wijziging was. Een tabblad kan weg zodra het geen items meer toont.

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

Ondersteunde embedaanbieders

Embeds accepteren een deel- of embedlink en normaliseren die naar de embedvorm van de aanbieder. Alles buiten deze lijst geeft 400 EMBED_PROVIDER_NOT_SUPPORTED.

FieldTypeDescription
VideoLoom, YouTube, Vimeo, Wistia, Vidyard
Afspraken plannenCalendly, Cal.com, SavvyCal, Google Calendar
FormulierenTypeform, Tally, Google Forms, Jotform, Fillout
DesignFigma, Miro, Canva, Whimsical
Documenten en tabellenGoogle Docs, Google Sheets, Notion, Coda, Airtable
PresentatiesGoogle Slides, Pitch, Gamma, Guideflow, Flipsnack, Prezi
AudioSpotify, SoundCloud

Nog een doelgroeplink toevoegen

Elke ruimte heeft al een link uit POST /rooms; voeg er meer toe voor doelgroepen die een andere toewijzing of toegang nodig hebben. Geef minstens één van recipientName, recipientEmail, contactId, companyId of companyName op. accessMode accepteert dezelfde waarden open, verify-any of verified-allowlist als primaryLink, met dezelfde velden (requireEmail, allowedEmails, allowedDomains, label, expiresAt, allowDownloads). Een geweigerde aanroep, ook door een planlimiet, laat geen link, bedrijf of contact achter.

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

Een link bijwerken

Vier velden: isActive, expiresAt, allowedEmails, allowedDomains (de laatste twee alleen op verified-allowlist-links). accessMode en de slug veranderen nooit; maak in plaats daarvan een nieuwe link. Een link weer inschakelen controleert opnieuw de limiet voor actieve links van het abonnement.

{
  "isActive": false
}

Het actieplan opbouwen

Elke ruimte heeft precies één plan, dus het hangt onder de ruimte zonder eigen ID. De meeste taken horen bij een bedrijf en niet bij een persoon: stuur alleen een side en het plan leest dat als het bedrijf, precies wat je wilt als je niet weet wie aan de andere kant het werk doet. Voeg alleen een email toe als je de persoon kent. Een interne taak is nooit zichtbaar in de room en kan dus niet bij de ontvanger horen.

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

recipientCompletionEnabled op het plan bepaalt of wie de room opent de taken van de eigen kant mag afvinken. De standaard is true en het is de enige drempel: de API vraagt nooit om het adres van een ontvanger om een taak af te ronden. Wie wat heeft afgevinkt wordt vastgelegd met de zekerheid die de toegangsmodus van de room geeft.

Rooms labelen

Labels gelden voor de hele werkruimte: maak ze één keer en hergebruik ze. Geef labelIds mee bij POST /rooms om een room meteen te labelen, of bij PATCH /rooms/{roomId} om de hele set te vervangen; een lege array wist alle labels en het veld weglaten laat ze staan. Een room draagt er hooguit vijf, wat structureel is en geen instelling. Bij het lezen van een room worden de labels teruggegeven.

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

Zien wat er is gebeurd

Vraag /room-views op voor bezoeken in de hele werkruimte en lees daarna de analytics, activiteit en verzamelde adressen van één room. Geef de nextCursor van een pagina door als cursor om verder te gaan; een cursor die deze API niet heeft uitgegeven geeft 400 in plaats van opnieuw te beginnen, zodat een poller geen werk overdoet. Beperk het activiteitsvenster met since en blader er met cursor doorheen. /room-views is een venster en geen archief: zonder since krijg je de laatste 30 dagen en verzoeken van meer dan 90 dagen geleden worden geweigerd. Het gebruikte venster komt terug als since; stuur het mee met cursor om dezelfde set verder te doorlopen.

Bedrijven en contacten

Vind bestaande accountrecords of maak ze aan met eenduidige matching. Bedrijfsnamen en e-mailadressen van contacten worden zonder onderscheid tussen hoofdletters en kleine letters vergeleken.

GET/companies?name={name}&domain={domain}

Zoekt bedrijven op exacte naam en een optioneel domein.

Vereist:crm:read
POST/companies

Vindt een bedrijf hoofdletterongevoelig op naam of maakt het aan. Een expliciet domein verrijkt alleen het record.

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

Zoekt contacten op e-mailadres en retourneert overeenkomsten met het bijbehorende bedrijf.

Vereist:crm:read
POST/contacts

Vindt of maakt een contact op e-mailadres en koppelt dit optioneel aan een bedrijf.

Vereist:crm:write

POST /companies-aanvraag

FieldTypeDescription
namestringverplichtBedrijfsnaam
domainstringoptioneelDomein voor bedrijfsverrijking. Het wordt nooit gebruikt om een bestaand bedrijf te vinden

POST /contacts-aanvraag

FieldTypeDescription
namestringvoorwaardelijkVolledige naam. Verplicht als firstName ontbreekt
firstNamestringvoorwaardelijkVoornaam. Verplicht als name ontbreekt
lastNamestringoptioneelAchternaam
emailstringverplichtE-mailadres voor eenduidige matching
titlestringoptioneelFunctietitel
companyIdUUIDoptioneelBestaand bedrijf in de geauthenticeerde werkruimte
companyNamestringoptioneelNaam van het bedrijf om te vinden of aan te maken
companyDomainstringoptioneelOptioneel verrijkingsdomein voor gebruik met companyName. Geen matchingsleutel voor bedrijven

Bedrijfsantwoord

FieldTypeDescription
company.idUUIDBedrijfs-ID
company.namestringBedrijfsnaam
company.domainstring | nullGenormaliseerd bedrijfsdomein
createdbooleantrue als de POST-aanvraag het bedrijf heeft aangemaakt

Contactantwoord

FieldTypeDescription
contact.idUUIDContact-ID
contact.firstNamestringVoornaam
contact.lastNamestringAchternaam
contact.emailstringGenormaliseerd e-mailadres
contact.titlestring | nullFunctietitel
contact.companyIdUUID | nullID van het gekoppelde bedrijf
contact.companyNamestring | nullNaam van het gekoppelde bedrijf
createdbooleantrue als de POST-aanvraag het contact heeft aangemaakt
companyobject | nullGevonden bedrijf, indien beschikbaar
companyCreatedbooleantrue als deze aanvraag het bedrijf heeft aangemaakt

Webhooks

Abonneer op realtime-evenementen via REST Hooks. Wanneer een evenement plaatsvindt, stuurt HummingDeck een POST-verzoek naar uw geregistreerde HTTPS-URL met de evenementpayload. Mislukte leveringen worden tot 3 keer opnieuw geprobeerd (na 1 s, 5 s en 30 s). Webhook-abonnementen worden beheerd door de Zapier-integratie en zijn niet beschikbaar voor werkruimte-API-tokens.

POST/hooks

Abonneren op een evenement. Vereist een HTTPS-doel-URL en een evenementtype. Retourneert een abonnements-ID.

Alleen Zapier OAuth

DELETE/hooks/{id}

Abonnement op een evenement opzeggen op basis van abonnements-ID.

Alleen Zapier OAuth

Evenementtypen

EventDescription
view.createdEen echte persoon heeft een gedeeld document bekeken. Botverkeer (e-mailbeveiligingsscanners, crawlers) wordt automatisch gefilterd.
decision.madeEen prospect heeft gereageerd op een voorstel: geaccepteerd, afgewezen of wijzigingen aangevraagd.
email_capturedEen bezoeker heeft hun e-mailadres ingevoerd om toegang te krijgen tot beveiligde inhoud.

Voorbeeldpayloads

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

Weergaven en evenementen

Polling-endpoints voor het ophalen van recente betrokkenheidsgegevens. Deze retourneren dezelfde gegevens die webhooks in realtime leveren. Gebruik ze voor backfilling, testen of als alternatief.

GET/views

De meest recente 100 documentweergaven weergeven. Botsessies zijn uitgesloten.

Vereist:analytics:read
GET/decisions

Recente voorstelbeslissingen weergeven (geaccepteerd, afgewezen, wijzigingen aangevraagd).

Vereist:analytics:read
GET/emails

Recente e-mailregistraties van beveiligde inhoud weergeven.

Vereist:analytics:read

Foutafhandeling

Elke fout geeft een JSON-object terug met een error-veld dat beschrijft wat er misging. De meeste antwoorden bevatten ook een code-veld voor programmatische afhandeling, zoals PLAN_LIMIT_REACHED, FEATURE_NOT_AVAILABLE, ROOM_NOT_ACTIVE, TAB_NOT_EMPTY, INVALID_FORMAT of FILE_TOO_LARGE. HTTP-statuscodes volgen de gebruikelijke conventies.

StatusMeaning
400Ongeldig verzoek: ontbrekende of ongeldige parameters
401Niet geautoriseerd: ongeldig of verlopen Bearer token
403Verboden: de credential mist een vereiste scope, een abonnementsgrens is bereikt, het abonnement bevat een vereiste optie niet, of dit type credential is niet toegestaan op dit endpoint
404Niet gevonden: resource bestaat niet of behoort niet tot uw team
409Conflict: de opgegeven ID's komen niet overeen, de ruimte is gearchiveerd, of de tabbladen van de ruimte staan de wijziging niet toe
413Payload te groot: de aanvraaginhoud of het geüploade bestand overschrijdt de limiet van dit endpoint
429Te veel verzoeken: de sleutel of het client-IP heeft de huidige limiet overschreden; probeer het opnieuw na de Retry-After-wachttijd
500Serverfout: probeer het verzoek opnieuw

Tarieflimieten

Handmatige werkruimtesleutels en Zapier OAuth-verbindingen hebben limieten per aanmeldgegeven: 600 leesverzoeken per 5 minuten, 120 schrijfverzoeken per minuut, 60 /room-views-verzoeken per minuut en 20 uploads per uur. Over alle aanmeldgegevens samen geldt per werkruimte een limiet van 1.200 leesverzoeken per 5 minuten, 240 schrijfverzoeken per minuut, 120 /room-views-verzoeken per minuut en 40 uploads per uur. Mislukte Bearer-authenticatie en ongeldige OAuth-clientauthenticatie zijn elk per client-IP beperkt tot 60 pogingen per 5 minuten. Maximaal 50 actieve webhookabonnementen per team.

Deze API wordt momenteel gebruikt door onze Zapier-integratie. In de toekomst worden mogelijk aanvullende integratieplatformen ondersteund.