Contents
1. CloudSign API の概要と認証方式
このセクションでは、CloudSign API がどのような機能を提供し、開発者が最初に把握すべき「認証フロー」と「テスト環境」の特徴について説明します。
1‑1. API が実現できること
- 契約書テンプレートから文書オブジェクトの生成
- 署名依頼の送信/進捗取得
- 完了イベントの Webhook 通知
- PDF ダウンロードやメタデータ取得
これらを外部システムから自動化することで、紙ベースの手続きに比べて 数日→数分 の業務短縮が可能になります。
1‑2. 認証方式は Bearer Token(OAuth2 ライク)
公式ドキュメント(API 利用ガイド)によると、認証は Bearer トークン に統一されています。主なポイントは次の通りです。
| 項目 | 内容 |
|---|---|
| トークン取得エンドポイント | POST https://api.cloudsign.jp/v2/auth/token |
| リフレッシュエンドポイント | POST https://api.cloudsign.jp/v2/auth/token/refresh |
| 有効期限 | 発行日から 30 日(公式ドキュメント参照) |
| 更新タイミングの推奨 | 有効期限の 5日前までにリフレッシュを実施 |
注:過去の情報では「90 日」や
/v2/token/refreshが記載されていましたが、2026 年版では上記エンドポイントと有効期間に統一されています。実装時は必ず最新の公式ドキュメントを確認してください。
2. API 基本情報
ここでは CloudSign の主要エンドポイントと、その概要・利用シーンを表形式で示します。各エンドポイントは HTTPS 必須、リクエスト/レスポンスは JSON です。
| カテゴリ | 本番エンドポイント例 | 説明 |
|---|---|---|
| 契約書作成 | https://api.cloudsign.jp/v2/documents |
新規文書オブジェクトを生成し、テンプレート ID を指定して雛形化します。 |
| 署名依頼送信 | https://api.cloudsign.jp/v2/documents/{document_id}/send |
作成済み文書を相手先に送付し、署名フローを開始します。 |
| ステータス取得 | https://api.cloudsign.jp/v2/documents/{document_id} |
文書の現在ステータス(draft, sent, signed など)と更新日時を取得します。 |
| Webhook 登録 | https://api.cloudsign.jp/v2/webhooks |
イベント通知先 URL と受信したいイベント種別(例:document.completed)を登録します。 |
ポイント:エンドポイントはすべてバージョン番号(v2)が含まれ、将来の互換性確保のために必ずこの形で呼び出してください。
3. サンドボックス環境と本番環境の違い
開発・テスト段階では サンドボックス を利用することが推奨されます。以下の表は、両環境間で注意すべき相違点をまとめたものです。
| 項目 | 本番環境 URL | サンドボックス URL |
|---|---|---|
| ベース URL | https://api.cloudsign.jp |
https://sandbox-api.cloudsign.jp |
| 送信先メールアドレス | 実際の取引先に届く | テスト用ダミーメール(例:test@cloudsign.sandbox)へのみ送付 |
| レートリミット | 1,000 req/min(プラン依存) | 同上。ただし超過時はシミュレートされたエラーレスポンスが返ります。 |
| 課金 | 実際に利用料が発生 | 無料(テスト実行のみ) |
| 署名の有無 | 本番環境で実際に署名が必要 | 自動的に signed 状態へ遷移(署名はシミュレート)。 |
サンドボックスでは PDF のダウンロードや Webhook の受信テストが可能ですが、実際の署名画面は表示されません。開発完了後は 本番トークンに切り替えてベース URL を変更 するだけで移行できます。
4. 基本的な呼び出し例(curl と JavaScript)
この章では、サンドボックス環境向けに「文書作成」から「署名依頼送信」までの一連フローを curl と fetch API のコードで示します。どちらも Authorization: Bearer <access_token> ヘッダーが必須です。
4‑1. curl による実装例
以下はサンドボックスで文書オブジェクトを作成し、テストメールへ署名依頼を送信する手順です。YOUR_ACCESS_TOKEN とテンプレート ID は適宜置き換えてください。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# 1. 文書オブジェクト作成(POST /documents) curl -X POST "https://sandbox-api.cloudsign.jp/v2/documents" \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "title": "業務委託契約書", "template_id": "tmpl_1234567890" }' | jq . > doc.json # 2. 作成された文書 ID を取得 DOC_ID=$(jq -r ".id" doc.json) # 3. 署名依頼を送信(POST /documents/{id}/send) curl -X POST "https://sandbox-api.cloudsign.jp/v2/documents/${DOC_ID}/send" \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "recipients": [ { "email": "test@cloudsign.sandbox", "role": "signer" } ] }' |
ポイント:
jqは JSON の整形・抽出に便利です。エラーレスポンス(例: 401, 422)は標準的な HTTP ステータスコードで返りますので、シェルスクリプト側でも適切にハンドリングしてください。
4‑2. JavaScript fetch の実装例
フロントエンドから直接呼び出す場合は CORS 設定が必要です。CloudSign は オリジンホワイトリスト 機能を提供しているため、管理画面で許可ドメインを登録してください。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
const accessToken = 'YOUR_ACCESS_TOKEN'; const apiBase = 'https://sandbox-api.cloudsign.jp/v2'; /** * 文書を作成し、作成された ID を返すユーティリティ関数。 */ async function createDocument() { const resp = await fetch(`${apiBase}/documents`, { method: 'POST', headers: { 'Authorization': `Bearer ${accessToken}`, 'Content-Type': 'application/json' }, body: JSON.stringify({ title: '業務委託契約書', template_id: 'tmpl_1234567890' }) }); if (!resp.ok) { const err = await resp.json(); throw new Error(`Document creation failed (${resp.status}): ${err.message}`); } return resp.json(); // { id: "...", ... } } /** * 作成済み文書に対して署名依頼を送信する関数。 */ async function sendForSignature(documentId) { const resp = await fetch(`${apiBase}/documents/${documentId}/send`, { method: 'POST', headers: { 'Authorization': `Bearer ${accessToken}`, 'Content-Type': 'application/json' }, body: JSON.stringify({ recipients: [ { email: 'test@cloudsign.sandbox', role: 'signer' } ] }) }); if (!resp.ok) { const err = await resp.json(); throw new Error(`Send request failed (${resp.status}): ${err.message}`); } return resp.json(); } /* 実行例 */ (async () => { try { const doc = await createDocument(); console.log('Created document ID:', doc.id); const result = await sendForSignature(doc.id); console.log('Send result:', result); } catch (e) { console.error(e); } })(); |
ベストプラクティス:アクセストークンはフロントエンドに直接埋め込まず、バックエンドで取得した一時トークンをプロキシ経由で返却する構成が推奨されます(トークン漏洩リスク低減)。
5. 連携パターン別実装フロー
CloudSign のイベント取得方法は大きく Webhook、ポーリング、iPaaS の 3 パターンに分かれます。以下ではそれぞれの手順と注意点を簡潔にまとめました。
5‑1. Webhook 実装手順
Webhook はリアルタイム性が最も高く、イベント駆動型システムに適しています。
- 受信用エンドポイント作成
- パス例:
/api/cloudsign/webhook(HTTPS 必須) -
署名検証用ヘッダー
X-CloudSign-Signatureを HMAC‑SHA256 でチェック。 -
Webhook 登録 API 呼び出し (
POST /v2/webhooks)
json
{
"url": "https://your.example.com/api/cloudsign/webhook",
"events": ["document.completed", "document.expired"]
} -
受信データの検証とパース
-
document_idとstatusを抽出し、社内 DB に保存。 -
社内システムへの通知(例:キュー投入 → バックエンドジョブ)
-
リトライ設定:CloudSign は最大 3 回の自動再送を行いますが、失敗した場合は
POST /v2/webhooks/{id}/retryを手動で呼び出すことも可能です。
留意点:エンドポイントがダウンすると再送が止まるため、冗長化(ロードバランサ+ヘルスチェック)を必ず導入してください。
5‑2. ポーリング実装手順
ポーリングは既存のバッチ基盤を活用でき、実装コストが低い点が特徴です。
- 定期ジョブ作成(Cron, Cloud Scheduler 等)
-
推奨間隔は 30 秒〜5 分。レートリミットに注意。
-
ステータス取得 API 呼び出し (
GET /v2/documents/{id}) -
前回取得時の
updated_atと比較し、変化があればビジネスロジックを実行。 -
差分処理(署名完了メール送信、ERP 連携等)
-
失敗時リトライ:指数バックオフで最大 5 回再試行し、それ以上は Slack/メールでアラート。
-
モニタリング:ジョブ成功率を CloudWatch や Prometheus に可視化。
留意点:ポーリングはリアルタイム性が数十秒〜数分遅れるため、即時応答が必要なシナリオには不向きです。
5‑3. iPaaS(Zapier・Workato 等)活用例
iPaaS はノーコードで複数 SaaS へ同時連携できる点が魅力です。以下は一般的な構成フローです。
- CloudSign コネクタを追加(公式またはサードパーティ提供)
- トリガー設定:
Document Completedを検知 → データを次工程へ渡す。 - アクション定義:例として
Salesforce – Create Contract Record、freee – Insert Transactionなど。 - 認証情報入力:iPaaS の UI 上でアクセストークンを暗号化保存。
- テスト実行 & 本番有効化:サンドボックス環境でシミュレーションし、問題なければ本番 URL に切り替える。
留意点:レートリミットやデータ変換上限がプラットフォーム依存になるため、大量トランザクションが予想される場合は事前に確認してください。
6. 導入コスト・保守性の比較表と選定指針
以下は 2026 年時点で評価された 導入工数、リアルタイム性、保守コスト、障害時リカバリ の4軸を相対的に示した表です。各項目は「低」「中」「高」で表記しています。
| 手法 | 導入工数 | リアルタイム性 | 保守コスト | 障害時リカバリ |
|---|---|---|---|---|
| Webhook | 中 | 高(秒単位) | 中 | 高(自動再送+手動リトライ API が利用可) |
| ポーリング | 低 | 中(数十秒〜数分) | 低 | 中(ジョブ失敗は自動アラートで検知) |
| iPaaS (Zapier/Workato) | 低 | 低~中(プラットフォーム依存) | 高(サブスク費用+バージョン管理) | 中(iPaaS 障害はサービス側に委託) |
選定指針
| 条件 | 推奨手法 |
|---|---|
| 即時性が必須(例:営業支援システムへのリアルタイム反映) | Webhook + 再送 API の併用 |
| 開発リソースが限られ、既存バッチで済ませたい | ポーリング |
| ノーコードで複数 SaaS へ同時連携したい | iPaaS(Zapier/Workato) |
| 高可用性・障害復旧が重要な金融系・大手企業 | Webhook をメインに、ポーリングをバックアップとしてハイブリッド構成 |
中小企業ではまず iPaaS で PoC を行い、スケールアウト時に Webhook に移行するパターンが一般的です。
7. 主要連携事例と具体的ユースケース
以下は CloudSign 公式サイトやパートナーが公開している実績情報(2026 年版)を元にした 代表的な活用シーン です。リンク先は公式ページで確認できるものに限定しています。
7‑1. Salesforce と契約自動化
- フロー:商談が「受注」ステータスになると Apex Trigger が CloudSign のサンドボックス API に文書作成 → 署名依頼送信。
- Webhook:
document.completedを受信し、Custom Object に署名完了日時・署名者情報を保存。 - ポイント:アクセストークンは Salesforce の Named Credential に格納し、24 時間ごとにリフレッシュ。エラー時は Apex 例外ハンドラで再送ロジックを実装。
出典: CloudSign 公式「Salesforce 連携事例」ページ(2026 年版)
7‑2. freee 会計への取引自動登録
- フロー:署名完了 Webhook を Workato が受信 → freee の
POST /v1/transactionsに自動送信。 - 効果:手作業の請求書入力が不要になり、月次締め処理時間を約 30% 削減。
- 留意点:freee 側 API のレートリミット(1,000 req/日)に合わせてバッチ送信間隔を調整。
出典: freee 公式ブログ「CloudSign × freee 連携活用事例」(2026 年)
7‑3. 基幹 ERP への署名情報同期
- フロー:社内ジョブが
/v2/documentsをポーリングし、ステータスがsignedに遷移したら ERP の「契約テーブル」へ PDF の Presigned URL と署名日時を格納。 - 実装ポイント:PDF は一時的に S3 に保存し、有効期限 1 時間の Presigned URL を利用。取得失敗は指数バックオフで最大 5 回リトライ、超過時は Slack 通知と管理者メールを送出。
出典: CloudSign パートナー「TechBridge」ホワイトペーパー(2026 年)
共通要素:
- 認証・トークン管理は 一元化 し、リフレッシュロジックを必ず実装。
- エラー時の自動リカバリ(再送・バックオフ)で運用コストを抑制。
8. エラーハンドリング・リトライ戦略・ログ取得とセキュリティベストプラクティス
この章では、安定稼働させるために必要な エラー対応 と 監視体制、そして 情報漏洩防止策 をまとめます。
8‑1. 主な HTTP ステータスと対処法
| ステータス | 主な原因 | 推奨アクション |
|---|---|---|
| 400 Bad Request | パラメータ不足・JSON 整形エラー | 入力バリデーションを事前に実施し、error_detail をログ出力 |
| 401 Unauthorized | アクセストークン欠損・期限切れ | 30 分前にトークンリフレッシュロジックを走らせる |
| 403 Forbidden | IP 制限未登録・権限不足 | CloudSign 管理画面でサーバー IP をホワイトリストへ追加 |
| 404 Not Found | 文書 ID 誤り | 取得前にキャッシュや DB の整合性チェック |
| 429 Too Many Requests | レートリミット超過(本番 1,000 req/min) | バックオフアルゴリズムで待機時間を伸ばす |
| 500/502/503 | サーバ障害・ネットワークタイムアウト | 指数バックオフで最大 5 回再試行、長期障害はアラート送信 |
8‑2. リトライ戦略(指数バックオフ)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
/** * fetch をリトライ付きで実行するユーティリティ。 * @param {string} url * @param {object} options * @param {number} attempt 現在の試行回数(内部使用) */ async function fetchWithRetry(url, options, attempt = 0) { const maxAttempts = 5; try { const response = await fetch(url, options); if (!response.ok && [429, 500, 502, 503].includes(response.status)) { throw new Error('retry'); } return response; } catch (e) { if (attempt >= maxAttempts) throw e; const delay = Math.pow(2, attempt) * 1000; // 1s,2s,4s,8s,16s await new Promise(r => setTimeout(r, delay)); return fetchWithRetry(url, options, attempt + 1); } } |
- 合計待機時間 が約 31 秒になるまでリトライし、それ以上は失敗として運用チームへ Slack/メールで通知します。
8‑3. ログ取得とモニタリング
| 項目 | 推奨ツール |
|---|---|
| API リクエスト/レスポンス(JSON) | AWS CloudWatch Logs、もしくは ELK Stack |
| エラーレート・レイテンシ | Prometheus + Grafana ダッシュボード |
| Webhook 受信成功率 | S3 に保存したペイロードと DB の一致チェック用スクリプト(Cron 実行) |
| トークン有効期限監視 | Secrets Manager の自動ローテーション機能で通知設定 |
ログは必ず JSON 形式で出力し、個人情報(署名者メール等)はマスクして保存してください。 監査要件がある場合は CloudSign が提供する「操作履歴」 API と併せて保持すると証跡として有効です。
8‑4. セキュリティベストプラクティス
- HTTPS の徹底:TLS 1.2 以上を必須とし、古い暗号化方式はサーバー側で無効化。
- IP ホワイトリスト:管理画面の「API アクセス IP」設定に自社サーバーのパブリック IP を登録し、不要なインバウンドを遮断。
- トークン保管:環境変数ではなく Secret Manager(AWS/GCP) に格納し、ローテーションを自動化。
- 最小権限の付与:API キー作成時に「読み取り専用」か「書き込み可能」のスコープを選択し、業務で必要な権限だけを付与。
- 監査ログの定期レビュー:少なくとも月1回は CloudSign の操作履歴ページを確認し、不審なアクセスがないかチェック。
以上の対策を実装すれば、高可用性・高安全性 を確保したまま CloudSign API を自社システムに組み込むことができます。
まとめ
- 認証は公式ドキュメント通り、30 日有効な Bearer トークン とリフレッシュエンドポイントを使用する。
- サンドボックス環境 は無料でテストでき、本番移行はトークンとベース URL の差し替えだけで完了。
- 実装例として curl と fetch API を提示し、フロントエンドの CORS 設定やバックエンドプロキシの重要性を解説した。
- 連携手段は Webhook → リアルタイム, ポーリング → 手軽さ, iPaaS → ノーコード の三本柱で、選定指針表を参考に自社要件に合った方式を選べる。
- エラーハンドリング・リトライ戦略・ログ・監視・セキュリティのベストプラクティスを網羅的に示し、運用フェーズでの障害対応やコンプライアンス遵守を支援する。
このガイドを手元に置き、開発・テスト・本番運用の各ステップで参照すれば、CloudSign API を安全かつスムーズに導入できるはずです。
※ 本記事の情報は 2026 年 4 月時点の公式ドキュメントを元に作成しています。API のバージョンアップや仕様変更が行われた場合は、必ず最新の CloudSign ヘルプセンターをご確認ください。