生成AI

最終更新日:2026/05/11
Dify APIの使い方完全ガイド
Difyで便利なAIアプリを作ったものの、「自社サイトやSlackとどう繋げばいいかわからない」「API連携のコードが書けず止まっている」と悩んでいませんか?
Dify APIを使いこなせば、画面上のGUIで作った機能を、既存の業務ツールや自社システムにわずか数行のコードで実装できます。
本記事では、非エンジニアでも迷わないAPIキーの取得手順から、Python・GASでの実践的なコード例まで、あなたの開発を加速させる全知識を公開します。

Dify APIとは、Difyで作ったAIアプリの機能を、外部のシステムやサービスから呼び出すための仕組みです。Dify APIは「RESTful API(Web通信の標準的なルール)」という標準的な方式で提供されています。
Dify APIの特徴は、GUIで構築したAIアプリをそのままAPIとして外部に公開できる点です。
たとえば、Difyの画面上でチャットボットを作り終えたら、そのアプリをAPIとして呼び出すだけで自社の問い合わせフォームやSlackにAI機能を組み込めます。
専用のAI基盤を一から構築する必要がなく、既存システムへのAI機能追加や、独自サービスの開発をすぐに始められます。
Difyが提供するAPIは、主に2種類に分かれています。
| アプリケーションAPI | ナレッジベースAPI | |
| 役割 | 作成済みのAIアプリを外部から呼び出す | ドキュメントを追加・更新・削除する |
| 主な用途 | チャットボット・テキスト生成・ワークフローの実行 | 社内文書やFAQなどの知識情報の管理 |
| 種類 | チャットAPI/テキスト生成API/ワークフローAPI | ナレッジベースAPI |
| 操作対象 | AIアプリの機能 | AIが参照するドキュメント |
DifyのAPIは、大きく「アプリケーションAPI」と「ナレッジベースAPI」の2種類に分かれます。役割がまったく異なるため、目的に合わせて使い分けることが重要です。
アプリケーションAPIは、Dify上で作成済みのAIアプリを外部から呼び出すためのAPIです。チャットでの質問受け付けやテキストの自動生成、ワークフロー実行などの場面で活躍します。
一方のナレッジベースAPIは、AIが参照するドキュメント(社内ルールや製品マニュアルなど)を追加・更新・削除するためのAPIです。AIに新しい情報を覚えさせたい、古い資料を差し替えたい、といった場面で活用します。
アプリケーションAPIの中には、さらにチャット・テキスト生成・ワークフローの3タイプがあり、それぞれ呼び出すURLが異なります。何を実行したいかに応じて、適切なエンドポイントを選んでください。
Dify APIにリクエストを送るとき、「どのようにレスポンスを受け取るか」を指定できます。この設定が「response_mode」パラメータで、ストリーミングとブロッキングの2種類から選べます。
ストリーミング(streaming)は SSE(Server-Sent Events)でAIの回答を少しずつ受け取る方式です。
ChatGPTなどで文字が少しずつ表示されていく画面を見たことがあると思いますが、あの動きがストリーミングです。ユーザーが待ち時間を感じにくいため、チャットボットのように人が直接操作するシステムに向いています。
ブロッキング(blocking)は、処理が完全に終わってから結果をまとめて受け取る方式です。「全部まとめてデータを受け取ってから次の処理に進みたい」バックエンドの自動処理や、バッチ処理に向いています。
どちらを使うかは、作るシステムの用途に合わせて選んでください。
Dify APIを使うには、まずAPIキーを取得する必要があります。
DifyのAPIはBearerトークン認証(パスワードのような暗号キーを通信に含める方式)という方式を採用しています。リクエストを送るたびに、HTTPヘッダーの「Authorization」という項目にAPIキーを含める必要があります。
記述形式は以下のとおりです。
Authorization: Bearer {your-api-key}
この一行を毎回のリクエストに付与することで、Difyのサーバーが「正規のリクエストである」と判断して処理を進めます。逆にこのヘッダーがない、またはキーが誤っている場合は、401エラー(認証失敗)が返されます。
APIキーの取得手順は次のとおりです。
APIキーは作成時に一度しか表示されません。画面を閉じると二度と確認できないため、コピーしたらすぐにパスワード管理ツールや安全な場所に保存してください。
1つのアプリに対して、APIキーは複数作成できます。たとえば、開発・テスト用と本番運用用でキーを分けると、仮にキーが流出した際の影響範囲を最小限に抑えられます。
APIキーを管理する上での主なポイントをまとめます。
・環境変数や秘密管理ツールで保管する
APIキーは、.envファイルやGoogle Cloud Secret Managerのような秘密管理ツールに保存します。こうしておけば、コードとキーを切り離して管理でき、コードを他の人と共有する場面でも安全です。
・定期的にキーを作り直す(ローテーション)
同じキーを長期間使い続けると、万一漏えいしていた場合に気づかないまま不正利用される期間が伸びます。定期的に新しいキーを発行し直すことで、リスクを抑えられます。
・ソースコードへの直接記載を禁止する
キーをプログラムのファイルに直接書くのは厳禁です。GitHubなどでコードを公開した瞬間に、キーも世界中に公開されます。チームで開発する場合は、この点をルールとして明文化しておくと安全です。
・不要になったキーはすぐに削除する
使わなくなったキーをそのまま放置しておくと、外部からの不正利用に気づきにくくなります。用途が終わったキーや担当者が変わったキーは速やかに削除し、必要最低限の数だけ維持してください。
APIキーが第三者に知られると、自社のAIアプリを無断で使われるリスクがあります。悪意のある人物がキーを使い続けた場合、利用料金が跳ね上がったり、社内の情報資産が悪用されたりする恐れがあります。
キーが漏えいしやすい場面として、特に注意が必要なのが、GitHubなどの公開リポジトリにソースコードをアップロードするケースです。「プログラムを公開したつもりだったが、キーも一緒に見えていた」という事故は珍しくありません。
防止策として、「.envファイル」にキーを書き、そのファイルを公開対象から除外する設定を徹底することが重要です。漏えいが疑われる場合は、該当のAPIキーを即座に削除し、新しいキーを発行してください。

エンドポイントとは、APIにリクエストを送る宛先URLのことです。リクエストを送るときは、URLに加えてパラメータも合わせて指定します。
主なパラメータは以下のとおりです。
| パラメータ | 型 | 説明 |
| inputs | object | アプリで定義した変数に値を渡す |
| query | string | ユーザーの入力メッセージ(チャットAPIで使用) |
| response_mode | string | “streaming” または “blocking” |
| conversation_id | string | 会話を継続する場合に前回の会話IDを指定 |
| user | string | ユーザー識別子 |
これらのパラメータは、呼び出すAPIによって使うものが変わります。代表的な2つのエンドポイントと、それぞれに合った使い方を確認しておきましょう。
チャットAPIは、ユーザーとAIが会話形式でやり取りするアプリを呼び出すときに使います。conversation_idで会話の文脈を引き継げるため、チャットボットや問い合わせ対応など、人が直接操作する場面に向いています。
ワークフローAPIは、Dify上で組んだ自動化フローを外部から一括実行するときに使います。inputsパラメータで変数を渡すと定義済みの処理が順に動くため、バッチ処理や他システムからの自動起動に向いています。
レスポンスはJSON形式で、どのフィールドが返ってくるかはエンドポイントによって異なるため、詳細は公式APIリファレンス(api.dify.ai)で確認してください。
DifyにはSaaS型のクラウド版と、自社サーバーに構築するセルフホスト版があり、APIを使う際のベースURLが異なります。
クラウド版のベースURLは「https://api.dify.ai/v1」で固定されています。一方、セルフホスト版では自社サーバーのアドレスがベースURLになるため、たとえばローカル環境で起動している場合は「http://localhost/v1」に変わります。
初心者がセルフホスト版を利用する際にやりがちなのが、公式ドキュメントに記載されているURLをそのまま使ってしまうミスです。公式ドキュメントはクラウド版を前提に書かれているため、セルフホスト環境でも「https://api.dify.ai/v1」をコピーして使ってしまうケースが多くあります。
この状態でリクエストを送ると、自社サーバーではなくDifyのクラウドサーバーに接続しようとするため、接続拒否やタイムアウトといったエラーが返ってきます。
セルフホスト版を使っている場合は、自分のアプリのコードや環境変数に書くベースURLを自社サーバーのアドレスに必ず書き換えてください。
| クラウド版 | セルフホスト版(ローカル) | |
| ベースURL | https://api.dify.ai/v1 | http://{自社サーバーのIPまたはドメイン}/v1 |
| ローカル起動時の例 | — | http://localhost/v1 |
| 設定箇所 | 自分のアプリのコードまたは環境変数 | 自分のアプリのコードまたは環境変数を設定 |
| よくあるミス | ― | 公式ドキュメントのURLをそのまま流用してしまう |
チャットAPIを使うとき、1回のやり取りで終わるのではなく、前の会話を踏まえて返答してほしい場面があるでしょう。
そのために使うのが「conversation_id」です。
最初のリクエストで会話を始めると、DifyがこのIDを発行します。次のリクエストでこのIDを指定すると、「この会話の続き」として認識され、前の文脈を引き継いだ返答が得られます。
Dify APIにはリクエスト数の上限が2種類あります。
アプリ全体の呼び出し回数に関する「APIレート制限」と、ナレッジベース操作に特化した「ナレッジリクエスト頻度制限」です。
| プラン | APIレート上限 | ナレッジリクエスト頻度制限 |
| Sandbox(無料) | 5,000件/月 | 10回/分 |
| Professional | 無制限 | 100回/分 |
| Team | 無制限 | 1,000回/分 |
| Enterprise | カスタム | カスタム |
参考:Knowledge Request Rate Limit|Dify
上限を超えるとHTTP 429エラーが返されます。429はサーバーから「リクエストが多すぎる」と断られるエラーコードです。
対処法としては、リトライ処理の実装か、上位プランへの移行です。
なお、自分でOpenAIなどのAPIキーを登録して利用する場合は、Difyのメッセージクレジットは消費されません。
Dify APIへのリクエストは、Python・JavaScript・GASなど、さまざまなプログラミング言語から送れます。どの言語を使う場合も、基本的な流れは共通です。
Bearerトークン認証でAPIキーをヘッダーに付け、JSON形式でパラメータを送り、JSON形式でレスポンスを受け取ります。
各言語のコードはDify公式APIリファレンスに掲載されています。初めて実装する場合は、まず公式ドキュメントのサンプルをそのままコピーして動作を確認し、そこから自分のシステムに合わせて変更していくのがスムーズです。
PythonからDify APIを呼び出す場合、requestsライブラリを使用するのが一般的です。
まずPOSTメソッドでエンドポイントのURLにリクエストを送ります。このとき、ヘッダーにAPIキーを含め、本文にはqueryやresponse_modeなどのパラメータをJSON形式で指定します。
レスポンスはresponse.json()で取得でき、その中の「answer」フィールドにAIからの返答テキストが入っています。
APIキーはプログラムのファイルに直接書かず、「.envファイル」に保存して「python-dotenv(ドットエンブイ)」というツールで読み込む方法を推奨します。これにより、コードを公開してもキーが漏れません。
JavaScriptからは、ブラウザとNode.jsの両方に標準で使える「fetch API」を使ってリクエストを送れます。
基本的な実装は、fetchの第2引数にmethod・headers・bodyを指定するだけです。headersにAPIキーを含め、bodyにJSON文字列を渡します。レスポンスはresponse.json()で取得し、data.answerから返答を取り出せます。
ストリーミングモードで受信したい場合は、SSE(Server-Sent Events・サーバーからデータを少しずつ押し出す技術)を使います。DifyのAPIはPOSTリクエストでSSEを返す仕様のため、fetch と ReadableStream(response.body.getReader())を組み合わせてデータを逐次読み取るのが正しい実装方法です。
チャット画面のように「文字が少しずつ流れて表示される」UIを作りたい場合に活用してください。

Dify APIの強みのひとつは、既存の業務ツールとつなぎやすい点です。
Google WorkspaceやSlackといった日常的に使うツールとも連携でき、社内フローをほとんど変えることなくAI機能を追加できます。
以下では、外部連携の具体例を紹介します。
GASとDify APIを組み合わせると、スプレッドシートに入力されたデータをDifyに送り、AIが処理した結果を自動で書き戻す仕組みを構築できます。
たとえば、「A列の問い合わせ文をDifyに送ってB列に回答を入れる」「C列の商品データをAIに渡して説明文を自動生成しD列に書き込む」といった活用が可能です。
このとき、APIシークレットキーはGASのスクリプトプロパティに保存し、コード内に直接記述しないようにしましょう。万が一、第三者にコードを見られても、キーの漏えいを防げます。
SlackやChatworkなどの社内チャットツールにDify APIを組み込むことで、AIが自動回答する社内ヘルプデスクを構築できます。
たとえば、Slackの特定チャンネルに投稿されたメッセージをDifyに転送し、AIからの回答を自動で返信する仕組みです。
活用場面として想定されるのは、有給申請の方法・福利厚生の内容・社内規定など、同じ質問が繰り返し寄せられる定型業務です。AIが24時間いつでも回答するため、総務や人事担当者への問い合わせ件数を減らせるでしょう。
既存のDifyアプリをAPIで呼び出すだけでよいため、Slackのワークフロー機能やBotアプリと組み合わせれば、プログラミングの知見を持たない担当者でも導入を検討できます。
ワークフローAPIを使うと、DifyのワークフローアプリをAPIで一括実行できます。
たとえば、請求書作成ツールにDify APIを連携させると、担当者が取引先情報を入力するだけでAIが書類を自動生成する流れを実現できます。
また、社内ドキュメントをナレッジベースとして登録し、ワークフローAPIで検索処理を呼び出すことで、質問に対して関連文書を自動で引き出すシステムも構築可能です。
こうした複数ステップの処理を、1回のAPIリクエストで外部から起動できる点がワークフローAPIのメリットです。
APIを本番運用していると、必ずエラーが発生する場面があります。エラーが起きたとき慌てず対処できるよう、よくあるエラーコードの意味と対応方法を事前に理解しておきましょう。
| エラーコード | 内容 | 主な対処法 |
| 400 | リクエスト形式エラー | パラメータの形式・必須項目を確認 |
| 401 | 認証エラー | APIキーの有効性・ヘッダー設定を確認 |
| 429 | レート制限超過 | リトライ処理の実装またはプランのアップグレード |
| 500 | サーバーエラー | 時間をおいて再試行 |
セルフホスト版(自社サーバーにDifyをインストールして使う方式)でも、同じエンドポイント構造でAPIを利用できます。ベースURLを自社サーバーのURLに変更するだけで、クラウド版と同様に動作するので、データを社外に出せない業種や、セキュリティ要件の厳しい環境でも安心して導入できます。
運用全般に共通するポイントとして、エラーが発生したときに自動でリトライする処理をあらかじめ実装しておきましょう。また、API呼び出しのログを残しておくと、問題が起きたときの原因調査がスムーズになります。
Dify APIの概要からAPIキーの取得・認証設定、エンドポイントの使い方、Python・JavaScriptでの実装例、GASやSlackとの外部連携、エラー対処まで解説しました。
Dify APIを活用すれば、自社のシステムにAI機能を柔軟に組み込めます。
まずはAPIキーを取得して、サンプルコードで動作を確認するところから始めてみてください。実践を重ねることで、業務自動化が加速するでしょう。
アイスマイリーでは、生成AIのサービス比較と企業一覧を無料配布しています。課題や目的に応じたサービスを比較検討できますので、ぜひこの機会にお問い合わせください。
業務の課題解決に繋がる最新DX・情報をお届けいたします。
メールマガジンの配信をご希望の方は、下記フォームよりご登録ください。登録無料です。
AI製品・ソリューションの掲載を
希望される企業様はこちら