Создано для доверияШифрование TLSГотовность к GDPRGoogle CloudБезопасные платежиОбзор безопасности
G2

Оценка 5,0 из 5 на G2

Читать отзывы на 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

HummingDeck предоставляет REST API для партнёров по интеграции и платформ автоматизации. Эндпоинты аутентифицируются с помощью Bearer-токена и возвращают ответы в формате JSON.

Базовый URLhttps://app.hummingdeck.com/api/v1
OpenAPI Spec

Аутентификация

Каждый запрос к API передаёт Bearer-токен в заголовке Authorization. Принимаются два типа учётных данных, и ведут они себя по-разному.

Метод

Bearer-токен

Формат заголовка

Authorization: Bearer {access_token}

Типы учётных данных

Токен API рабочего пространства

Authorization: Bearer hd_api_...

Доступ к REST API предоставляется по запросу на плане Business и включается отдельно для каждого рабочего пространства после рассмотрения. Затем владельцы и администраторы создают отдельные именованные API-ключи в разделе «Настройки рабочего пространства», «Интеграции», «HummingDeck API». Выбирайте только те разрешения, которые нужны каждой интеграции. Ключ показывается один раз при создании, и получить его позже нельзя. Он действует один год и остаётся привязанным к своему рабочему пространству, поэтому запрос не может выбрать или изменить его.

В одном рабочем пространстве может быть до 20 активных API-ключей. При замене ключа немедленно перестаёт действовать только его предыдущий секрет; остальные ключи продолжают работать. Владельцы и администраторы могут в любой момент отключить один или все ключи. Отзыв секрета необратим.

API-ключ рабочего пространства может вызывать только операции, разрешённые выбранными правами. Эндпоинты подписки на вебхуки недоступны для таких ключей.

Zapier OAuth

Authorization: Bearer {access_token}

Выдаётся через процесс авторизации OAuth, когда рабочее пространство подключает интеграцию Zapier. Токены доступа действуют 30 дней. Используйте токен обновления, который действует 90 дней, чтобы получить новый токен доступа без повторной авторизации.

Это единственные учётные данные, которые могут создавать и удалять подписки на вебхуки.

Разрешения

Выберите хотя бы одно разрешение. Разрешения на запись также включают соответствующий доступ на чтение. Разрешения можно изменить при замене ключа.

rooms:read

Просмотр комнат, вкладок, элементов, ссылок и меток.

rooms:write

Создание комнат, вкладок, элементов, ссылок и меток и управление ими.

plan:read

Просмотр этапов и задач совместного плана действий.

plan:write

Создание этапов и задач совместного плана действий и управление ими.

analytics:read

Просмотр аналитики вовлечённости, активности и собранных адресов.

crm:read

Поиск компаний и контактов рабочего пространства.

crm:write

Создание и обновление компаний, контактов и аудиторий ссылок.

documents:read

Поиск документов и просмотр их метаданных.

documents:write

Загрузка документов и добавление документов или URL в комнаты.

Метки разрешений в строках эндпоинтов относятся к API-ключам рабочего пространства. Обязательные разрешения нужны всегда, дополнительные — вместе с основным, а условные — только когда запрос использует связанные фильтры или поля. GET /me не требует разрешений. Zapier OAuth использует фиксированный доступ интеграции.

Когда запрос возвращает 401

Запрос возвращает 401, если ключ неизвестен или некорректен, истёк, был отключён, принадлежит рабочему пространству с выключенным доступом к API или был выпущен человеком, который больше не является владельцем или администратором этого пространства.

Проверить подключение

Убедитесь, что ваш токен действителен, и просмотрите профиль аутентифицированного пользователя.

GET/me

Возвращает имя, email и информацию о команде текущего пользователя.

Разрешение API-ключа не требуется

Документы

Загружайте, ищите и управляйте документами (PDF-файлы, презентации, коммерческие предложения и другие файлы).

POST/decks

Загрузить новый документ. Отправьте как multipart/form-data с полем file (PDF, PPTX, DOCX, XLSX, XLS, HTML) и полем title. Ограничение на загрузку через API составляет 30 МБ. Обработка продолжается после загрузки; ответ содержит processingStatus.

Обязательно:documents:write
GET/decks

Возвращает до 20 документов, начиная с самых новых. Необязательный параметр запроса title фильтрует по части названия без учёта регистра.

Обязательно:documents:read
POST/decks/{deckId}/replace

Заменяет документ локальным файлом того же типа. Требуется API-ключ рабочего пространства с правом documents:write. Существующие ссылки, название и режим доставки сохраняются. Файлы с предпросмотром возвращают pending, файлы только для скачивания — completed. Поля ответа совпадают с POST /decks.

Обязательно:documents:write

GET /decks Поля ответа

FieldTypeDescription
idstringИдентификатор документа
titlestringЗаголовок документа
fileTypestringMIME-тип документа
pageCountinteger | nullКоличество страниц
thumbnailUrlstring | nullURL миниатюры
processingStatusstringpending, processing, completed или failed. Документ можно добавить в комнату, пока он обрабатывается; отправляйте ссылку на него, когда статус станет completed.
processingErrorCodestring | nullПричина сбоя обработки, если он произошёл
createdAtstringВременная метка ISO 8601

POST /decks Поля ответа

FieldTypeDescription
idstringИдентификатор документа
titlestringЗаголовок документа
fileTypestringMIME-тип документа
processingStatusstringpending, processing, completed или failed. Документ можно добавить в комнату, пока он обрабатывается; отправляйте ссылку на него, когда статус станет completed.
processingErrorCodestring | nullПричина сбоя обработки, если он произошёл

Ссылки для совместного доступа

Создавайте отслеживаемые ссылки на документы. Персональная ссылка может найти или создать контакт и компанию в том же запросе.

POST/shares

Создать персональную или анонимную ссылку. Персональная ссылка может автоматически найти или создать записи компании и контакта.

Обязательно:documents:write
Условно:crm:write(Required for a non-anonymous share when the request supplies contactId, companyId, companyName, recipientEmail, or recipientName.)

Поля запроса

FieldTypeDescription
deckIdstringобязательноИдентификатор документа для публикации
recipientNamestringнеобязательноИмя получателя для персональной ссылки
recipientEmailstringнеобязательноEmail получателя для персональной ссылки
contactIdUUIDнеобязательноСуществующий контакт в аутентифицированном рабочем пространстве
companyIdUUIDнеобязательноСуществующая компания. Нельзя сочетать с companyName
companyNamestringнеобязательноКомпания, которую нужно найти по названию или создать
companyDomainstringнеобязательноДомен для дополнения записи при использовании companyName. Никогда не используется для выбора компании
typestringнеобязательноПо умолчанию personal, если указаны получатель или данные компании; иначе anonymous

Создайте ссылку и записи компании вместе

Передайте сведения о получателе и компании прямо в /shares. HummingDeck найдёт совпадающие записи, создаст недостающие, привяжет их к ссылке и сообщит, что было создано. Явно задайте type как anonymous, чтобы пропустить создание записей компании.

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

Поля ответа

FieldTypeDescription
idstringИдентификатор ссылки
slugstringSlug ссылки, используемый в URL
shareUrlstringПолный отслеживаемый URL
typestring"personal" или "anonymous"
recipientNamestringИмя получателя для персональной ссылки
recipientEmailstringEmail получателя для персональной ссылки
contactobject | nullНайденный контакт, привязанный к ссылке
contactCreatedbooleanСоздал ли этот запрос контакт
companyobject | nullНайденная компания, привязанная к ссылке
companyCreatedbooleanСоздал ли этот запрос компанию
createdAtstringВременная метка ISO 8601

Комнаты

Создавайте комнаты для сделок с документами и ссылкой для аудитории одним вызовом, находите комнаты, меняйте их настройки, архивируйте и восстанавливайте их, упорядочивайте вкладки и элементы. Доступно только с API-токенами рабочего пространства; учётные данные Zapier OAuth отклоняются.

GET/rooms

Возвращает список комнат, начиная с новых. Фильтры: search, status (active, archived или all) и companyId. На странице 25 комнат (до 100 с limit); чтобы получить следующую страницу, передайте nextCursor текущей страницы как cursor.

Обязательно:rooms:read
Условно:crm:read(Required when the companyId filter is present.)
POST/rooms

Создаёт комнату с документами и первой ссылкой для аудитории одним вызовом.

Обязательно:rooms:write
Условно: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}

Возвращает настройки комнаты, её вкладки и элементы в порядке отображения, а также количество ссылок.

Обязательно:rooms:read
PATCH/rooms/{roomId}

Меняет название, приветственное сообщение, контактное лицо, компанию или контакт.

Обязательно:rooms:write
Условно:crm:write(Required when companyId or contactId is present, including null to detach the association.)
POST/rooms/{roomId}/archive

Архивирует комнату. Её ссылки перестают работать.

Обязательно:rooms:write
POST/rooms/{roomId}/restore

Восстанавливает архивную комнату. Её ссылки снова работают.

Обязательно:rooms:write
POST/rooms/{roomId}/tabs

Добавляет вкладку в указанную позицию или в конец.

Обязательно:rooms:write
PATCH/rooms/{roomId}/tabs/{tabId}

Переименовывает вкладку.

Обязательно:rooms:write
PUT/rooms/{roomId}/tabs/order

Задаёт новый порядок всех вкладок.

Обязательно:rooms:write
DELETE/rooms/{roomId}/tabs/{tabId}

Удаляет вкладку, в которой нет элементов.

Обязательно:rooms:write
POST/rooms/{roomId}/items

Добавляет во вкладку документ, URL, встраиваемый контент или разделитель раздела.

Обязательно:rooms:write
Условно:documents:write(Required when type is document or url.)
POST/rooms/{roomId}/items/{itemId}/move

Перемещает элемент в конец другой вкладки.

Обязательно:rooms:write
PUT/rooms/{roomId}/items/order

Задаёт новый порядок элементов одной вкладки.

Обязательно:rooms:write
DELETE/rooms/{roomId}/items/{itemId}

Убирает элемент из комнаты. Он остаётся в вашей библиотеке.

Обязательно:rooms:write
GET/rooms/{roomId}/links

Показывает ссылки комнаты для аудитории, сначала новые, вместе с активными приглашёнными для каждой ограниченной ссылки.

Обязательно:rooms:read
POST/rooms/{roomId}/links

Создаёт атрибутированную открытую ссылку для активной комнаты.

Обязательно:rooms:write
Также обязательно:crm:write
PATCH/rooms/{roomId}/links/{linkId}

Включает или выключает ссылку, задаёт или снимает срок действия, либо заменяет список доступа.

Обязательно:rooms:write
Условно:crm:write(Required when allowedEmails or allowedDomains is present, including an empty array that clears the audience.)
GET/rooms/{roomId}/action-plan

Возвращает план действий комнаты: настройки, этапы, задачи (включая внутренние), зависимости и прогресс.

Обязательно:plan:read
PATCH/rooms/{roomId}/action-plan

Меняет настройки плана, в том числе то, могут ли открывшие комнату отмечать свои задачи.

Обязательно:plan:write
POST/rooms/{roomId}/action-plan/phases

Добавляет веху. Без поля color этапы по очереди получают бирюзовый, персиковый и синий.

Обязательно:plan:write
PATCH/rooms/{roomId}/action-plan/phases/{phaseId}

Переименовывает этап, перемещает его, меняет дату или задаёт цвет. color со значением null возвращает автоматическое чередование.

Обязательно:plan:write
DELETE/rooms/{roomId}/action-plan/phases/{phaseId}

Удаляет этап. Поле mode обязательно: delete_tasks или move_to_unphased, чтобы задачи не исчезли случайно.

Обязательно:plan:write
POST/rooms/{roomId}/action-plan/tasks

Добавляет задачу. assignee — это null, один side для ответственной компании или side с email для конкретного человека.

Обязательно:plan:write
PATCH/rooms/{roomId}/action-plan/tasks/{taskId}

Обновляет задачу. Если assignee не передан, ответственный не меняется; null снимает назначение.

Обязательно:plan:write
DELETE/rooms/{roomId}/action-plan/tasks/{taskId}

Удаляет задачу. Её подзадачи удаляются вместе с ней.

Обязательно:plan:write
POST/rooms/{roomId}/action-plan/tasks/{taskId}/status

Завершает или открывает задачу заново от имени рабочего пространства. Задача с незавершённой зависимостью возвращает 409 TASK_BLOCKED.

Обязательно:plan:write
GET/rooms/{roomId}/analytics

Посещения комнаты, уникальные зрители, среднее время, открытые документы из общего числа и средний процент прочтения. Без ботов.

Обязательно:analytics:read
GET/rooms/{roomId}/activity

Что происходило в комнате, начиная с самого свежего. Записи обсуждений называют отправителя и никогда не содержат текст сообщения. Сужайте выборку параметром since.

Обязательно:analytics:read
GET/rooms/{roomId}/captured-emails

Адреса, собранные комнатой. Поле source равно verify, если адрес подтверждён одноразовой ссылкой, и ask, если его просто ввели.

Обязательно:analytics:read
GET/room-views

Входы в комнаты по всему рабочему пространству, начиная с самых свежих. Другого источника для входа в комнату нет; /views охватывает только просмотры документов.

Обязательно:analytics:read
GET/room-labels

Показывает метки комнат рабочего пространства и количество комнат, использующих каждую. Здесь вы найдёте идентификаторы, прежде чем помечать комнату.

Обязательно:rooms:read
POST/room-labels

Создаёт метку. Имена уникальны в пределах рабочего пространства без учёта регистра; color — шестнадцатеричное значение вида #RRGGBB.

Обязательно:rooms:write
PATCH/room-labels/{labelId}

Переименовывает метку, меняет её цвет или описание.

Обязательно:rooms:write
DELETE/room-labels/{labelId}

Удаляет метку и её назначения. Комнаты, которые её несли, не меняются; в ответе указано, сколько её лишились.

Обязательно:rooms:write

Создание комнаты одним вызовом

Загрузите каждый файл через POST /decks, а затем создайте комнату для компании получателя с ограниченной ссылкой для тех, кто должен её видеть. Компания, контакты, комната, документы и ссылка создаются вместе: если вызов отклонён, не создаётся ничего. Документы можно добавить в комнату, пока они ещё обрабатываются. Элементы комнаты сообщают processingStatus, поэтому отправляйте ссылку, когда у каждого документа статус 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 принимает значения open (любой, у кого есть URL), verify-any (посетители подтверждают адрес электронной почты одноразовой ссылкой) или verified-allowlist (только адреса из allowedEmails и все, у кого адрес на доменах из allowedDomains). API само никого не добавляет к ограниченной ссылке, поэтому укажите свой адрес, если хотите заранее посмотреть комнату. Параметр, которого нет в вашем тарифе, возвращает 403 FEATURE_NOT_AVAILABLE, а неизвестное поле возвращает 400, поэтому комната никогда не откроется не той аудитории, которую вы указали.

Упорядочивание вкладок и элементов

Начните с текущего состояния комнаты: при чтении комнаты её вкладки и элементы возвращаются в порядке отображения, и каждый элемент сообщает свою вкладку и позицию в ней, считая с 0. Добавляйте вкладки и элементы в нужную позицию, перемещайте элементы между вкладками и отправляйте полный новый порядок вкладки. Порядок должен содержать каждый элемент вкладки ровно один раз, поэтому прочитайте комнату заново, если за это время произошло другое изменение. Вкладку можно удалить, когда в ней больше нет элементов.

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

Поддерживаемые источники встраивания

Встраивания принимают и ссылку для доступа, и ссылку для встраивания, приводя её к формату провайдера. Всё, чего нет в этом списке, возвращает 400 EMBED_PROVIDER_NOT_SUPPORTED.

FieldTypeDescription
ВидеоLoom, YouTube, Vimeo, Wistia, Vidyard
Планирование встречCalendly, Cal.com, SavvyCal, Google Calendar
ФормыTypeform, Tally, Google Forms, Jotform, Fillout
ДизайнFigma, Miro, Canva, Whimsical
Документы и таблицыGoogle Docs, Google Sheets, Notion, Coda, Airtable
ПрезентацииGoogle Slides, Pitch, Gamma, Guideflow, Flipsnack, Prezi
АудиоSpotify, SoundCloud

Добавить ещё одну ссылку для аудитории

У каждой комнаты уже есть ссылка, созданная через POST /rooms; добавляйте новые для аудиторий, которым нужна другая атрибуция или другой доступ. Укажите хотя бы одно из полей recipientName, recipientEmail, contactId, companyId или companyName. accessMode принимает те же значения open, verify-any и verified-allowlist, что и primaryLink, с теми же полями (requireEmail, allowedEmails, allowedDomains, label, expiresAt, allowDownloads). Отклонённый вызов, в том числе из-за ограничения тарифа, не оставляет ни ссылки, ни компании, ни контакта.

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

Обновить ссылку

Четыре поля: isActive, expiresAt, allowedEmails, allowedDomains (последние два только у ссылок verified-allowlist). accessMode и слаг не меняются; создайте новую ссылку. Повторное включение ссылки заново проверяет лимит активных ссылок в тарифе.

{
  "isActive": false
}

Собрать план действий

У каждой комнаты ровно один план, поэтому он подключается к комнате без собственного идентификатора. Большинство задач принадлежит компании, а не человеку: отправьте один side, и план прочитает его как компанию. Именно это нужно, когда неизвестно, кто выполнит работу на другой стороне. Добавляйте email, только если знаете конкретного человека. Внутренняя задача никогда не видна в комнате, поэтому она не может принадлежать стороне получателя.

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

Поле recipientCompletionEnabled в плане решает, могут ли открывшие комнату отмечать задачи своей стороны. По умолчанию true, и это единственное условие: API никогда не требует адрес получателя, чтобы завершить задачу. Кто именно отметил задачу, записывается с той достоверностью, которую даёт режим доступа комнаты.

Помечать комнаты метками

Метки действуют во всём рабочем пространстве: создайте их один раз и используйте повторно. Передайте labelIds в POST /rooms, чтобы пометить комнату при создании, или в PATCH /rooms/{roomId}, чтобы заменить весь набор; пустой массив снимает все метки, а если поле не передано, они не меняются. Комната несёт не более пяти меток — это структурное ограничение, а не настройка. При чтении комнаты её метки возвращаются вместе с ней.

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

Узнать, что произошло

Запрашивайте /room-views, чтобы видеть входы по всему рабочему пространству, а затем читайте аналитику, активность и собранные адреса конкретной комнаты. Чтобы получить следующую страницу, передайте её nextCursor как cursor; курсор, который этот API не выдавал, возвращает 400 вместо перехода к началу, поэтому опрос не повторяет работу. Сужайте окно активности параметром since и переходите между страницами с помощью cursor. /room-views представляет временное окно, а не архив: без since возвращаются последние 30 дней, а запросы более чем за 90 дней отклоняются. Применённое окно возвращается в поле since; отправляйте его вместе с cursor, чтобы продолжать листать тот же набор.

Компании и контакты

Находите существующие записи или создавайте их по однозначным правилам сопоставления. Названия компаний и адреса электронной почты контактов сопоставляются без учёта регистра.

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

Находит до 10 компаний по точному названию, домену или обоим параметрам.

Обязательно:crm:read
POST/companies

Находит компанию по названию без учёта регистра или создаёт её. Явно указанный домен только дополняет запись. Поле created показывает результат.

Обязательно:crm:write
GET/contacts?email={query}

Ищет контакты по адресу электронной почты. Возвращает совпавшие контакты и связанные с ними компании.

Обязательно:crm:read
POST/contacts

Находит контакт по адресу электронной почты или создаёт его; можно указать существующую или новую компанию.

Обязательно:crm:write

Запрос POST /companies

FieldTypeDescription
namestringобязательноНазвание компании
domainstringнеобязательноДомен компании для дополнения записи. Никогда не используется для поиска существующей компании

Запрос POST /contacts

FieldTypeDescription
namestringусловноПолное имя. Укажите его или firstName и lastName
firstNamestringусловноИмя, если поле name не указано
lastNamestringнеобязательноФамилия при использовании firstName
emailstringобязательноАдрес электронной почты для поиска без учёта регистра
titlestringнеобязательноДолжность
companyIdUUIDнеобязательноСуществующая компания в аутентифицированном рабочем пространстве
companyNamestringнеобязательноКомпания, которую нужно найти или создать, если companyId не указан
companyDomainstringнеобязательноНеобязательный домен для дополнения companyName. Не используется как ключ поиска компании

Ответ с компанией

FieldTypeDescription
company.idUUIDИдентификатор компании
company.namestringНазвание компании
company.domainstring | nullНормализованный домен компании
createdbooleanСоздал ли этот запрос компанию

Ответ с контактом

FieldTypeDescription
contact.idUUIDИдентификатор контакта
contact.firstNamestringИмя
contact.lastNamestringФамилия
contact.emailstringАдрес электронной почты
contact.titlestring | nullДолжность
contact.companyIdUUID | nullИдентификатор связанной компании
contact.companyNamestring | nullНазвание связанной компании
createdbooleanСоздал ли этот запрос контакт
companyobject | nullНайденная компания, если она есть
companyCreatedbooleanСоздал ли этот запрос компанию

Webhook

Подписывайтесь на события в реальном времени через REST Hooks. При возникновении события HummingDeck отправляет POST-запрос на зарегистрированный HTTPS-адрес с данными события. При сбое доставки выполняется до 3 повторных попыток (через 1 с, 5 с и 30 с). Подписки на вебхуки управляются интеграцией Zapier и недоступны для токенов API рабочего пространства.

POST/hooks

Подписаться на событие. Требуется HTTPS-URL назначения и тип события. Возвращает идентификатор подписки.

Только Zapier OAuth

DELETE/hooks/{id}

Отменить подписку на событие по идентификатору подписки.

Только Zapier OAuth

Типы событий

EventDescription
view.createdРеальный человек просмотрел опубликованный документ. Трафик ботов (сканеры безопасности email, краулеры) фильтруется автоматически.
decision.madeПотенциальный клиент ответил на предложение — принял, отклонил или запросил изменения.
email_capturedПосетитель ввёл адрес электронной почты для доступа к защищённому контенту.

Примеры данных

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

Просмотры и события

Эндпоинты для опроса последних данных о вовлечённости. Они возвращают те же данные, что webhook передаёт в реальном времени — используйте их для ретроспективного заполнения, тестирования или в качестве запасного варианта.

GET/views

Вывести последние 100 просмотров документов. Сессии ботов исключены.

Обязательно:analytics:read
GET/decisions

Вывести последние решения по предложениям (принято, отклонено, запрошены изменения).

Обязательно:analytics:read
GET/emails

Вывести последние записи email из защищённого контента.

Обязательно:analytics:read

Обработка ошибок

Каждая ошибка возвращает JSON-объект с полем error, описывающим, что пошло не так. Большинство ответов также содержит поле code для программной обработки, например PLAN_LIMIT_REACHED, FEATURE_NOT_AVAILABLE, ROOM_NOT_ACTIVE, TAB_NOT_EMPTY, INVALID_FORMAT или FILE_TOO_LARGE. HTTP-коды статусов соответствуют общепринятым соглашениям.

StatusMeaning
400Неверный запрос: отсутствующие или недопустимые параметры
401Не авторизован: недействительный или истёкший Bearer-токен
403Запрещено: у учётных данных нет нужного scope, достигнут лимит тарифа, тариф не включает нужную возможность или этот тип учётных данных недоступен для эндпоинта
404Не найдено: ресурс не существует или не принадлежит вашей команде
409Конфликт: указанные идентификаторы не согласуются, комната архивирована или вкладки комнаты не допускают это изменение
413Слишком большой запрос: тело запроса или загружаемый файл превышает лимит эндпоинта
429Слишком много запросов: ключ или IP клиента превысил текущий лимит; повторите запрос после задержки из Retry-After
500Ошибка сервера: повторите запрос

Ограничения запросов

Для ручных ключей рабочего пространства и подключений Zapier OAuth действуют лимиты на учётные данные: 600 чтений за 5 минут, 120 операций записи в минуту, 60 запросов /room-views в минуту и 20 загрузок в час. Для всех учётных данных рабочего пространства вместе лимиты составляют 1 200 чтений за 5 минут, 240 операций записи в минуту, 120 запросов /room-views в минуту и 40 загрузок в час. Ошибки Bearer-аутентификации и недействительная аутентификация клиента OAuth отдельно ограничены 60 попытками за 5 минут для каждого IP клиента. Не более 50 активных webhook-подписок на команду.

Этот API в настоящее время используется нашей интеграцией с Zapier. В будущем могут поддерживаться дополнительные платформы интеграции.