APIリファレンス
HummingDeckは、統合パートナーや自動化プラットフォーム向けにREST APIを提供しています。各エンドポイントはBearer tokenで認証し、JSONレスポンスを返します。
https://app.hummingdeck.com/api/v1認証
すべてのAPIリクエストは、AuthorizationヘッダーにBearer tokenを付けて送信します。2種類の認証情報に対応しており、それぞれ挙動が異なります。
メソッド
Bearer token
ヘッダー形式
Authorization: Bearer {access_token}
認証情報の種類
ワークスペースAPIトークン
Authorization: Bearer hd_api_...
ワークスペースのオーナーが、ワークスペース設定、連携、HummingDeck APIから発行します。非公開パイロット期間中は、選ばれたワークスペースのみが利用できます。トークンは作成時に一度だけ表示され、あとから取得することはできません。作成から1年で失効し、発行されたワークスペースに永続的に紐づくため、リクエスト側でワークスペースを選択したり変更したりすることはできません。
すでにトークンがある状態で作成すると置き換えられ、以前のトークンはただちに使えなくなります。オーナーはいつでもトークンを無効にできます。そのトークンについては元に戻せないため、復元ではなく新しいトークンを作成してください。
Webhookのサブスクリプション用エンドポイントは、ワークスペースAPIトークンでは利用できません。
Zapier OAuth
Authorization: Bearer {access_token}
ワークスペースがZapier連携を接続する際に、OAuth認証フローを通じて発行されます。アクセストークンは30日で失効します。有効期限90日のリフレッシュトークンを使うと、再認証なしで新しいアクセストークンを取得できます。
Webhookのサブスクリプションを作成・削除できるのは、この認証情報だけです。
リクエストが401を返す場合
トークンが未知または不正な形式である、失効している、無効化されている、APIアクセスがオフになったワークスペースに属している、あるいはそのワークスペースのオーナーではなくなった人が発行した場合、リクエストは401で拒否されます。
接続のテスト
トークンが有効であることを確認し、認証済みユーザーのプロフィールを確認します。
/me現在のユーザーの名前、メールアドレス、チーム情報を返します。ドキュメント
ドキュメント(PDF、プレゼンテーション資料、提案書、その他のファイル)のアップロード、検索、管理を行います。
/decks新しいドキュメントをアップロードします。fileフィールド(PDF、PPTX、DOCX、XLSX、HTML)とtitleフィールドを含むmultipart/form-dataとして送信します。API経由のアップロード上限は30MBです。/decks?title={query}タイトルでドキュメントを検索します。大文字小文字を区別せず、最大20件の結果を返します。レスポンスフィールド
| Field | Type | Description |
|---|---|---|
| id | string | ドキュメントID |
| title | string | ドキュメントタイトル |
| fileType | string | ファイルタイプ(pdf、pptx、docx、html) |
| pageCount | number | ページ数 |
| thumbnailUrl | string | サムネイル画像のURL |
| createdAt | string | ISO 8601タイムスタンプ |
ルーム
ルームの構成を取得し、追跡可能な対象者向けリンクを作成します。ワークスペース API トークンでのみ利用でき、Zapier OAuth 認証情報は拒否されます。
/rooms/{roomId}ルームのメタデータ、タブ、コンテンツ項目、有効リンク数と総リンク数を返します。/rooms/{roomId}/links有効なルームに、対象者情報を関連付けた公開リンクを作成します。公開ルームリンクを作成
recipientName、recipientEmail、contactId、companyId、companyName のうち少なくとも1つを指定してください。名前またはメールアドレスから連絡先を検索または作成し、会社フィールドから会社を検索または作成します。公開リンクはURLを知っている誰でも閲覧できます。
{
"accessMode": "open",
"recipientName": "Ada Lovelace",
"recipientEmail": "ada@analytical.example",
"companyName": "Analytical Engines"
}会社と連絡先
既存のアカウント情報を一貫した条件で検索するか、新規作成します。会社名と連絡先メールアドレスは大文字と小文字を区別せず照合されます。
/companies?name={name}&domain={domain}完全一致する名前と任意のドメインで会社を検索します。/companies大文字と小文字を区別せず名前で会社を検索または作成します。明示したドメインはレコードの情報補完にのみ使用されます。/contacts?email={query}メールアドレスで連絡先を検索します。関連する会社とともに一致する連絡先を返します。/contactsメールアドレスで連絡先を検索または作成し、必要に応じて会社に関連付けます。POST /companiesのリクエスト
| Field | Type | Description | |
|---|---|---|---|
| name | string | 必須 | 会社名 |
| domain | string | 任意 | 会社情報の補完に使用するドメイン。既存会社の照合には使用されません |
POST /contactsのリクエスト
| Field | Type | Description | |
|---|---|---|---|
| name | string | 条件付き | 氏名。firstNameがない場合は必須 |
| firstName | string | 条件付き | 名。nameがない場合は必須 |
| lastName | string | 任意 | 姓 |
| string | 必須 | 一意の照合に使用するメールアドレス | |
| title | string | 任意 | 役職 |
| companyId | UUID | 任意 | 認証済みワークスペースの既存の会社 |
| companyName | string | 任意 | 検索または作成する会社名 |
| companyDomain | string | 任意 | companyNameとともに使用する任意の情報補完ドメイン。会社の照合キーではありません |
会社のレスポンス
| Field | Type | Description |
|---|---|---|
| company.id | UUID | 会社ID |
| company.name | string | 会社名 |
| company.domain | string | null | 正規化された会社ドメイン |
| created | boolean | POSTリクエストで会社を作成した場合はtrue |
連絡先のレスポンス
| Field | Type | Description |
|---|---|---|
| contact.id | UUID | 連絡先ID |
| contact.firstName | string | 名 |
| contact.lastName | string | 姓 |
| contact.email | string | 正規化されたメールアドレス |
| contact.title | string | null | 役職 |
| contact.companyId | UUID | null | 関連付けられた会社ID |
| contact.companyName | string | null | 関連付けられた会社名 |
| created | boolean | POSTリクエストで連絡先を作成した場合はtrue |
| company | object | null | 解決された会社(存在する場合) |
| companyCreated | boolean | このリクエストで会社を作成した場合はtrue |
Webhook
REST Hooksを介してリアルタイムイベントにサブスクライブします。イベントが発生すると、HummingDeckはイベントペイロードとともに登録済みのHTTPS URLにPOSTリクエストを送信します。配信が失敗した場合は最大3回まで再試行されます(1秒、5秒、30秒の間隔)。 Webhookのサブスクリプションは Zapier 連携で管理され、ワークスペースAPIトークンでは利用できません。
/hooksイベントにサブスクライブします。HTTPS宛先URLとイベントタイプが必要です。サブスクリプションIDを返します。/hooks/{id}サブスクリプションIDによってイベントのサブスクリプションを解除します。イベントタイプ
| Event | Description |
|---|---|
| view.created | 実際の人物が共有ドキュメントを閲覧しました。ボットトラフィック(メールセキュリティスキャナー、クローラー)は自動的にフィルタリングされます。 |
| 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がリアルタイムで配信するものと同じデータを返すため、バックフィル、テスト、フォールバックに利用できます。
/views最新のドキュメント閲覧100件をリストします。ボットセッションは除外されます。/decisions最近の提案決定(承認、拒否、変更要求)をリストします。/emailsゲートコンテンツからの最近のメールキャプチャをリストします。エラー処理
すべてのエラーは、何が問題だったかを示す error フィールドを含むJSONオブジェクトを返します。一部のレスポンスには、PLAN_LIMIT_REACHED、INVALID_FORMAT、FILE_TOO_LARGE のようにプログラムで処理できる code フィールドも含まれます。HTTPステータスコードは一般的な慣例に従います。
| Status | Meaning |
|---|---|
| 400 | リクエスト不正:パラメータが欠落しているか無効です |
| 401 | 未認証:Bearer tokenが無効または期限切れです |
| 403 | 禁止:プランの上限に達しているか、この認証情報の種類ではこのエンドポイントを利用できません |
| 404 | 見つかりません:リソースが存在しないか、チームに属していません |
| 409 | 競合:指定した連絡先、メールアドレス、会社の識別子が一致しません |
| 500 | サーバーエラー:リクエストを再試行してください |
レート制限
チームあたり最大50件のアクティブなwebhookサブスクリプション。APIリクエストにレート制限はありませんが、過度な使用はスロットリングされる場合があります。
このAPIは現在、当社のZapier統合で使用されています。将来的には追加の統合プラットフォームがサポートされる可能性があります。