ARTICLE

DocuSignとは?電子署名REST API・JWT認証の実装ガイド【2026年版】

2026/9/16

SHARE

DocuSignの電子署名REST API・JWT認証の実装ガイドを徹底解説【2026年版】

Do

DocuSignとは?電子署名REST API・JWT認証の実装ガイド【2026年版】

ARTICLE株式会社renue
renue

株式会社renue

2026/9/16 公開

AI導入・DXの悩みをプロに相談してみませんか?

AIやDXに関する悩みがありましたら、お気軽にrenueの無料相談をご利用ください。 renueのAI支援実績、コンサルティングの方針や進め方をご紹介します。

DocuSign eSignature REST APIは広く利用されている電子署名サービスのAPIだが、「JWT Grant認証をどうPython本番コードに落とし込むか」「デモ/本番の切り替えをどう設計するか」「封筒(Envelope)作成のペイロードをどう構造化するか」といった実装者が本当に詰まるポイントは公式ドキュメントだけでは把握しきれない。本記事では一般的な実装パターンをもとに、JWT Grant認証・アカウントIDパス設計・base_url自動判定・封筒作成・書類ダウンロードを含む本番品質の統合パターンを解説する。

DocuSign APIの基礎とJWT Grant認証の位置付け

DocuSign eSignature APIにはAuthorization Code Grant(ユーザーログイン)とJWT Grant(サーバー間連携)の2種類がある。バッチ/自動化/社内システム組込みではJWT Grantを選ぶのが定石だが、以下の前提を揃える必要がある。

  • Integration Key: DocuSign管理画面で発行するアプリ識別子
  • RSA鍵ペア: 公開鍵をDocuSign側に登録、秘密鍵はサーバー保管
  • User ID (GUID): API操作をそのユーザーの権限で実行するためのユーザーGUID。契約の受信者・署名者の指定とは別である(JWT Grantの対象
  • Account ID: APIコール先のDocuSignアカウントID
  • 事前同意(consent): impersonationスコープには対象ユーザーについて同意の付与が必要。個別同意のほか、条件を満たす場合は管理者同意も利用できる

これらを取り違えると「consent_required」「invalid_grant」等の分かりにくいエラーに遭遇する。特に個別同意はブラウザで取得し、管理者同意には別の利用条件がある点を確認する。同意が撤回された場合等は、再取得が必要になる(同意方式同意の継続条件)。

レイヤー1: デモ/本番環境の自動判定

DocuSignのeSignature APIは開発用のdemo環境(demo.docusign.net)とアカウント別の本番環境(*.docusign.net)を使う。OAuthのホストはそれぞれaccount-d.docusign.comとaccount.docusign.comである(OAuth環境)。切り替えミスが最も多いバグの温床なので、base_urlから自動判定するヘルパーを用意すると事故が減る。

明示指定も許しつつ、未指定時は検証済みの環境設定から判定する2段構えとする。本番のAPI接続先は固定せず、OAuth UserInfoが返す対象アカウントのbase_uriを使い、アカウントIDとの組み合わせを確認する(UserInfoと接続先)。

レイヤー2: JWT Grant認証の実装

JWT Grant認証の核心はRS256署名付きJWTを作ってOAuthエンドポイントに投げ、アクセストークンに交換する流れだ。ペイロードのaud(audience)はデモ/本番で変える必要がある。

JWTペイロードの落とし穴

フィールドよくあるミス
issIntegration KeyAccount IDと混同する
subUser GUIDユーザー名やメールを入れてしまう
audaccount-d.docusign.com or account.docusign.comデモ/本番のマッピング間違い
scopesignature impersonationスペース区切り必須(カンマ区切りにしてしまう)
expnow + 3600長過ぎる値(最大1時間)

private_keyの改行問題

環境変数にPEM秘密鍵を入れる際、改行が\nにエスケープされているケースが多い。実際の改行に戻す処理が必要だ。

Azure Key Vault/AWS Secrets Manager経由で取得するとこの問題は起きにくいが、.envaz webapp config appsettingsで設定する場合は必須の前処理。

レイヤー3: アカウントIDを含むURLパス設計

DocuSign REST APIの特徴は封筒等のアカウント配下のエンドポイントはアカウントIDを含む点だ。/v2.1/accounts/{account_id}/envelopesのように。これを毎回呼び出し側で組み立てるのは冗長なので、共通リクエスト処理で一元化する。

呼び出し側は/envelopesと書くだけで済み、アカウントIDやバージョンプレフィックスを意識しなくてよい。バージョンのプレフィックスはここで一元管理できるが、将来のAPI移行はパス変更だけで完了すると決めず、移行先のリクエスト・レスポンス仕様も確認する。

レイヤー4: 封筒作成の型付きヘルパーの設計

DocuSign APIで最も使うのが封筒(Envelope)作成だ。生のAPIは柔軟性が高い代わりにペイロードが複雑なので、型付きラッパーを用意すると呼び出し側のコードが劇的に読みやすくなる。

ファイルから封筒を作成・送信する簡易ヘルパー

PDFファイルと署名者1名を受け取り、文書のBase64エンコード、署名者・署名位置・件名の設定、status=sentでの封筒作成をまとめるヘルパーを設計できる。認証とアカウント設定を済ませたうえで、社内システムからの契約送信フローに組み込む。具体的な要求データの例はDocusign公式の送信例で確認できる。

レイヤー5: 全封筒取得のページネーション(totalSetSize方式)

DocuSignの封筒一覧等では、totalSetSize文字列等のページ情報を使って取得範囲を管理する。nextUriを使うか、endPositionから次の開始位置を計算する。listStatusChangesで対象期間全体を取得する場合は、from_date/to_dateも指定する(公式のページネーション説明)。

ポイントはresultSetSize/totalSetSizeが文字列で返る仕様。数値として比較・加算する場合はint等で変換する。Pythonでは整数と文字列の等値比較はFalseになり、大小比較はTypeError、文字列同士では辞書順比較となる。無限ループになるかは終了条件次第なので、次ページがない場合や取得件数が増えない場合の終了処理も設ける(Pythonの比較規則)。

ダウンロードの特殊ID: "combined" と "certificate"

封筒内のドキュメントIDには予約語がある。

  • document_id="combined" — 封筒内の全ドキュメントを1つのPDFに結合してダウンロード
  • document_id="certificate" — 電子署名証明書(Certificate of Completion)のPDFダウンロード
  • document_id="1", "2", ... — 個別ドキュメント

CloudSign vs DocuSign: 設計の違い

観点CloudSignDocuSign
認証client_id → tokenJWT Grant (RSA署名)
環境分離base_urlのみdemo/prod OAuth URL分離
URLパスシンプル(/documents)アカウントID込み(/v2.1/accounts/{id}/envelopes)
ページネーションpage/per_pagestart_position/count + totalSetSize(文字列)
証明書取得専用エンドポイント(/certificate)documentId="certificate"
結合PDF-documentId="combined"

両者を併用するハイブリッドな社内システムを作る場合、この違いを把握しておくと抽象化レイヤー設計が楽になる。

まとめ: DocuSign統合の5つの勘所

  1. base_urlからデモ/本番を自動判定する実装で環境取り違えを防ぐ
  2. JWT Grant認証はiss/sub/aud/scopeの取り違えが最頻バグ
  3. private_keyの改行エスケープ復元を初期化時に必ず実施
  4. アカウントIDを含むURLは共通処理で一元化して呼び出し側を単純化
  5. totalSetSizeは文字列 — 数値として扱う場合は変換し、nextUriや終了条件でページネーションを制御

こうした設計は、契約書の送信フロー自動化に応用できる。電子署名APIは一度きちんと組めば長期運用できるため、初回の設計投資を惜しまないことが重要だ。

あわせて読みたい

AI活用のご相談はrenueへ

renueは自社開発のAIツールを自社運用するAIコンサルティングファームです。

→ 詳細を見る

SHARE

FAQ

よくある質問

個別同意の場合は、開発環境でhttps://account-d.docusign.com/oauth/auth?response_type=code&scope=signature%20impersonation&client_id={key}&redirect_uri={uri}にブラウザアクセスして承認する。本番はaccount.docusign.comを使い、登録済みredirect_uriをURLエンコードする。条件を満たす組織では管理者同意も可能。同意がない、または撤回された場合はconsent_requiredとなる。(出典:https://www.docusign.com/blog/developers/oauth-jwt-granting-consent)

認証の簡潔さではCloudSign(client_id 1本)、機能の豊富さとグローバル対応ではDocuSign。国内法務中心ならCloudSign、海外取引を含むならDocuSignが選択肢になる。

DocuSignのeSignature APIにはアカウント単位の時間上限、短時間のバースト上限、封筒単位のポーリング制限がある。X-RateLimit-Limit/Remaining/Reset等の応答ヘッダーを監視し、該当する上限の回復を待って再試行する。429の状態コードだけでなくerrorCodeも確認し、封筒送信の重複実行を避ける。進捗確認にはConnect Webhookも検討する。(出典:https://developers.docusign.com/docs/esign-rest-api/esign101/rules-and-limits/、https://www.docusign.com/blog/developers/clearer-docusign-api-error-message-and-status-code-improvements)

主に、JWT認証(RSA鍵ペア・クレーム生成)、OAuth 2.0 認証コードフロー、consent取得、access_token更新、Envelopes API(作成・送信・ステータス確認)、Documents/Recipients/Tabs設計、署名方式(用途に応じた本人確認・電子証明書の要件を確認。方式例:https://www.docusign.com/ja-jp/blog/docusign-can-be-used-for-official-documents-with-national-and-local-public-entities)、テンプレート、フック(Connect Webhook)、エラーハンドリングと再試行、AIによる支援を活用した署名フロー設計、AgentOps、ChatOpsによる通知、データガバナンス、外部AIパートナー連携、社員教育、KPIモニタリング、などです。

主に、テナント・アカウント体系の整備、AIによる支援を活用したテンプレート生成・差分検出、SRE/プラットフォームエンジニアリングとの連携(API運用・障害監視)、AIエージェントによるエンベロープ生成・進捗追跡、AgentOps、ChatOpsによる承認・通知、データガバナンス(電子契約データ・PIIの取り扱い)、外部AIパートナー(リーガルテック・電子契約ベンダー)との連携、社員教育(電子署名法・GDPR・eIDAS)、規制対応(電子帳簿保存法・タイムスタンプ)、KPIモニタリング(締結リードタイム・差し戻し件数・運用コスト)、PDCAサイクル、です。DocuSign運用は単なる電子署名ツール導入ではなく、契約業務をデジタル化する組織能力として、長期的な競争力の本質的な要素となります。

AI導入・DXの悩みをプロに相談してみませんか?

AIやDXに関する悩みがありましたら、お気軽にrenueの無料相談をご利用ください。 renueのAI支援実績、コンサルティングの方針や進め方をご紹介します。

関連記事

AI導入・DXの悩みをプロに相談してみませんか?

AIやDXに関する悩みがありましたら、お気軽にrenueの無料相談をご利用ください。renueのAI支援実績、コンサルティングの方針や進め方をご紹介します。

無料資料をダウンロード