> ## Documentation Index
> Fetch the complete documentation index at: https://dify-6c0370d8-add-new-agent.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# API統合

> 強力なBackend-as-a-Service APIでDify AI機能をアプリケーションに直接埋め込む

<Note> ⚠️ このドキュメントはAIによって自動翻訳されています。不正確な部分がある場合は、[英語版](/en/use-dify/publish/developing-with-apis)を参照してください。</Note>

DifyのAPIを使用すると、AI インフラストラクチャを一から構築することなく、既存のアプリケーションにAI機能を統合できます。カスタムユーザーエクスペリエンスを作成する柔軟性と、大規模言語モデルの全ての機能を利用できます。

## Dify APIを使用する理由

<CardGroup cols={2}>
  <Card title="バックエンドの複雑さをスキップ" icon="server">
    AIインフラストラクチャを管理することなく、フロントエンドアプリから直接大規模言語モデル機能にアクセス
  </Card>

  <Card title="ビジュアルアプリ管理" icon="eye">
    AIの動作を視覚的に設計・更新—変更は全てのAPIコンシューマーに即座に反映
  </Card>

  <Card title="プロバイダーの柔軟性" icon="shuffle">
    コード変更なしでAIプロバイダーを切り替え、APIキーを一元管理
  </Card>

  <Card title="組み込み監視機能" icon="chart-line">
    ログ、分析、ユーザーアクティビティ追跡を標準で提供
  </Card>
</CardGroup>

## API統合の仕組み

1. **アプリを構築** — 必要なAI機能を備えたアプリをDify Studioで作成
2. **API認証情報を生成** — アプリの機能に安全にアクセスするための認証情報を生成
3. **APIを呼び出し** — アプリケーションからAPIを呼び出してAIによる応答を取得
4. **ユーザーとの対話** — ユーザーはカスタムインターフェースと対話し、DifyがAI処理を担当

<Info>
  あなたのAPIは、Difyアプリのすべての機能（プロンプト、知識ベース、ツール、モデル設定）を自動的に継承します。
</Info>

## 開始方法

<Steps>
  <Step title="API設定にアクセス">
    アプリで、左サイドバーの**API Access**に移動します。
  </Step>

  <Step title="API認証情報を作成">
    統合用の新しい認証情報を生成します。異なる環境やユーザー向けに複数のキーを作成できます。
  </Step>

  <Step title="ドキュメントを確認">
    Difyはアプリの設定に特化した完全なAPIドキュメントを生成します。
  </Step>

  <Step title="アプリに実装">
    提供されたサンプルを使用してAPI呼び出しをアプリケーションに統合します。
  </Step>
</Steps>

<Warning>
  フロントエンドコードやクライアントサイドリクエストでAPIキーを公開しないでセキュリティを維持するため、必ずバックエンドからDify APIを呼び出してください。
</Warning>

## APIセキュリティ

**認証情報管理：**

* 開発、ステージング、本番環境で別々のAPIキーを作成
* キーを定期的にローテーションし、未使用の認証情報を取り消し
* API使用量を監視して異常なアクティビティを検出

**ベストプラクティス：**

* バックエンドでAPIキーを環境変数として保存
* 過度な使用を防ぐため、自分の側でレート制限を実装
* Dify APIに転送する前にリクエスト検証を追加
* デバッグと監視のためにAPI呼び出しをログに記録

### テキスト生成アプリケーション

これらのアプリケーションは、completion-messages APIを呼び出し、ユーザー入力を送信して生成されたテキスト結果を取得することで、記事、要約、翻訳などの高品質なテキストを生成するために使用されます。テキスト生成に使用されるモデルパラメーターとプロンプトテンプレートは、開発者がDifyプロンプト編集ページで行った設定に依存します。

このアプリケーションのAPIドキュメントとリクエストサンプルは、**アプリケーション -> APIアクセス**で確認できます。

例えば、以下はテキスト生成APIを呼び出すサンプルです：

<Tabs>
  <Tab title="cURL">
    ```
    curl --location --request POST 'https://api.dify.ai/v1/completion-messages' \
    --header 'Authorization: Bearer ENTER-YOUR-SECRET-KEY' \
    --header 'Content-Type: application/json' \
    --data-raw '{
    "inputs": {},
    "response_mode": "streaming",
    "user": "abc-123"
    }'
    ```
  </Tab>

  <Tab title="Python">
    ```python theme={null}
    import requests
    import json

    url = "https://api.dify.ai/v1/completion-messages"

    headers = {
    'Authorization': 'Bearer ENTER-YOUR-SECRET-KEY',
    'Content-Type': 'application/json',
    }

    data = {
    "inputs": {"text": 'Hello, how are you?'},
    "response_mode": "streaming",
    "user": "abc-123"
    }

    response = requests.post(url, headers=headers, data=json.dumps(data))

    print(response.text)
    ```
  </Tab>
</Tabs>

### 対話型アプリケーション

対話型アプリケーションは、質問と回答形式を通じてユーザーとの継続的な対話を促進します。対話を開始するには、`chat-messages` APIを呼び出します。各セッションに対して`conversation_id`が生成され、対話の流れを維持するために後続のAPI呼び出しに含める必要があります。

> **重要な注意事項**: サービスAPIは、WebAppで作成された対話を共有しません。APIを通じて作成された対話は、WebAppインターフェースで作成されたものから分離されています。

#### `conversation_id`の重要な考慮事項：

* **`conversation_id`の生成:** 新しい対話を開始するときは、`conversation_id`フィールドを空にしてください。システムが新しい`conversation_id`を生成して返すので、今後の対話を継続するためにこれを使用します。
* **既存セッションでの`conversation_id`の処理:** `conversation_id`が生成されたら、将来のAPI呼び出しでDifyボットとの対話の継続性を確保するためにこの`conversation_id`を含める必要があります。以`は無視されます。進行中の対話では`query\`のみが処理されます。
* **動的変数の管理:** セッション中にロジックや変数を変更する必要がある場合、会話変数（セッション固有の変数）を使用してボットの動作や応答を調整できます。

このアプリケーションのAPIドキュメントとリクエストサンプルは、**アプリケーション -> APIアクセス**でアクセスできます。

以下は`chat-messages` APIを呼び出すサンプルです：

<Tabs>
  <Tab title="cURL">
    ```
    curl --location --request POST 'https://api.dify.ai/v1/chat-messages' \
    --header 'Authorization: Bearer ENTER-YOUR-SECRET-KEY' \
    --header 'Content-Type: application/json' \
    --data-raw '{
    "inputs": {},
    "query": "eh",
    "response_mode": "streaming",
    "conversation_id": "1c7e55fb-1ba2-4e10-81b5-30addcea2276",
    "user": "abc-123"
    }'
    ```
  </Tab>

  <Tab title="Python">
    ```python theme={null}
    import requests
    import json

    url = 'https://api.dify.ai/v1/chat-messages'
    headers = {
    'Authorization': 'Bearer ENTER-YOUR-SECRET-KEY',
    'Content-Type': 'application/json',
    }
    data = {
    "inputs": {},
    "query": "eh",
    "response_mode": "streaming",
    "conversation_id": "1c7e55fb-1ba2-4e10-81b5-30addcea2276",
    "user": "abc-123"
    }

    response = requests.post(url, headers=headers, data=json.dumps(data))

    print(response.text())
    ```
  </Tab>
</Tabs>
