> ## Documentation Index
> Fetch the complete documentation index at: https://docs.devinenterprise.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 使用例

> Devin API のコード例と代表的なユースケース

このページでは、代表的な API ユースケース向けのコード例を紹介します。すべての例で認証情報には環境変数を使用しており、一度設定すれば、あとはコピー＆ペーストでそのまま実行できます。リクエスト／レスポンスの完全なスキーマについては、各エンドポイントの API リファレンスページを参照してください。

## セットアップ

使用例を実行する前に、これらの環境変数を設定してください。

```bash theme={null}
# Required: your service user API key or personal access token (starts with cog_)
export DEVIN_API_KEY="cog_your_key_here"

# Required: your organization ID (shown at the top of Settings → Devin API)
export DEVIN_ORG_ID="your_org_id"
```

> [!TIP]
>
> **Settings → Devin API** ページの上部で組織 ID を確認できます。

## curl の使用例

これらの例は、上記の環境変数を設定した後、そのままターミナルで実行できます。

> **セッションを作成する**
>
> ```bash theme={null}
> curl -X POST "https://api.devin.ai/v3/organizations/$DEVIN_ORG_ID/sessions" \
>   -H "Authorization: Bearer $DEVIN_API_KEY" \
>   -H "Content-Type: application/json" \
>   -d '{"prompt": "CSV データを解析する Python スクリプトを作成してください"}'
> ```

> **セッションを一覧表示する**
>
> ```bash theme={null}
> curl "https://api.devin.ai/v3/organizations/$DEVIN_ORG_ID/sessions" \
>   -H "Authorization: Bearer $DEVIN_API_KEY"
> ```

> **セッションにメッセージを送信する**
>
> ```bash theme={null}
> export SESSION_ID="your_session_id"
>
> curl -X POST "https://api.devin.ai/v3/organizations/$DEVIN_ORG_ID/sessions/$SESSION_ID/messages" \
>   -H "Authorization: Bearer $DEVIN_API_KEY" \
>   -H "Content-Type: application/json" \
>   -d '{"message": "単体テストも追加してください"}'
> ```

> **Knowledge ノートを作成する**
>
> ```bash theme={null}
> curl -X POST "https://api.devin.ai/v3/organizations/$DEVIN_ORG_ID/knowledge/notes" \
>   -H "Authorization: Bearer $DEVIN_API_KEY" \
>   -H "Content-Type: application/json" \
>   -d '{
>     "name": "コーディング規約",
>     "trigger": "このリポジトリでコードを書くとき",
>     "body": "TypeScript の strict モードを使用してください。既存のコードスタイルに従ってください。"
>   }'
> ```

> **Enterprise 組織を一覧表示する**
>
> ```bash theme={null}
> curl "https://api.devin.ai/v3/enterprise/organizations" \
>   -H "Authorization: Bearer $DEVIN_API_KEY"
> ```

> **利用状況データを取得する**
>
> ```bash theme={null}
> # Unix タイムスタンプを使用 — 例: 2025 年 1 月 1 日から 1 月 31 日まで
> curl "https://api.devin.ai/v3/enterprise/consumption/daily?time_after=1735689600&time_before=1738368000" \
>   -H "Authorization: Bearer $DEVIN_API_KEY"
> ```

## Python の使用例

> **セッションを作成**
>
> ```python theme={null}
> import os
> import requests
>
> API_KEY = os.environ["DEVIN_API_KEY"]
> ORG_ID = os.environ["DEVIN_ORG_ID"]
> BASE_URL = "https://api.devin.ai/v3"
>
> response = requests.post(
>     f"{BASE_URL}/organizations/{ORG_ID}/sessions",
>     headers={
>         "Authorization": f"Bearer {API_KEY}",
>         "Content-Type": "application/json"
>     },
>     json={
>         "prompt": "Create a Python script that analyzes CSV data"
>     }
> )
> response.raise_for_status()
>
> session = response.json()
> print(f"Session created: {session['session_id']}")
> print(f"URL: {session['url']}")
> ```

> **セッション状態をポーリングする**
>
> ```python theme={null}
> import os
> import time
> import requests
>
> API_KEY = os.environ["DEVIN_API_KEY"]
> ORG_ID = os.environ["DEVIN_ORG_ID"]
> BASE_URL = "https://api.devin.ai/v3"
> SESSION_ID = os.environ.get("SESSION_ID", "your_session_id")
>
> while True:
>     response = requests.get(
>         f"{BASE_URL}/organizations/{ORG_ID}/sessions/{SESSION_ID}",
>         headers={"Authorization": f"Bearer {API_KEY}"}
>     )
>     response.raise_for_status()
>     session = response.json()
>
>     status = session["status"]
>     print(f"Status: {status}")
>
>     # 終端ステータス: "exit"（完了）、"error"、"suspended"
>     if status in ("exit", "error", "suspended"):
>         break
>
>     time.sleep(10)
> ```

> **複数組織ワークフロー（Enterprise）**
>
> 複数の組織をまたいで自動化する：
>
> ```python theme={null}
> import os
> import requests
>
> API_KEY = os.environ["DEVIN_API_KEY"]
> BASE_URL = "https://api.devin.ai/v3"
>
> # すべての組織を取得する
> orgs_response = requests.get(
>     f"{BASE_URL}/enterprise/organizations",
>     headers={"Authorization": f"Bearer {API_KEY}"}
> )
> orgs_response.raise_for_status()
> organizations = orgs_response.json()["items"]
>
> # 各組織にセッションを作成する
> for org in organizations:
>     session_response = requests.post(
>         f"{BASE_URL}/organizations/{org['org_id']}/sessions",
>         headers={
>             "Authorization": f"Bearer {API_KEY}",
>             "Content-Type": "application/json"
>         },
>         json={
>             "prompt": f"Run daily health check for {org['name']}"
>         }
>     )
>
>     if session_response.ok:
>         session = session_response.json()
>         print(f"Created session for {org['name']}: {session['session_id']}")
>     else:
>         print(f"Failed for {org['name']}: {session_response.status_code}")
> ```

> **ページネーション対応監査ログの取得（Enterprise）**
>
> ```python theme={null}
> import os
> import requests
> from datetime import datetime, timedelta, timezone
>
> API_KEY = os.environ["DEVIN_API_KEY"]
> BASE_URL = "https://api.devin.ai/v3"
>
> # 過去7日間をUnixタイムスタンプで指定
> now = datetime.now(timezone.utc)
> seven_days_ago = now - timedelta(days=7)
>
> params = {
>     "time_after": int(seven_days_ago.timestamp()),
>     "time_before": int(now.timestamp()),
>     "first": 100,
> }
>
> all_logs = []
> while True:
>     response = requests.get(
>         f"{BASE_URL}/enterprise/audit-logs",
>         headers={"Authorization": f"Bearer {API_KEY}"},
>         params=params,
>     )
>     response.raise_for_status()
>     data = response.json()
>
>     all_logs.extend(data["items"])
>     print(f"Fetched {len(data['items'])} logs (total: {len(all_logs)})")
>
>     if not data.get("has_next_page"):
>         break
>     params["after"] = data["end_cursor"]
>
> for log in all_logs:
>     ts = datetime.fromtimestamp(log["created_at"], tz=timezone.utc).isoformat()
>     actor = log.get("service_user_id") or log.get("user_id") or "system"
>     print(f"{ts} - {log['action']} (actor={actor})")
> ```

> **エラー処理**
>
> ```python theme={null}
> import os
> import requests
>
> API_KEY = os.environ["DEVIN_API_KEY"]
> ORG_ID = os.environ["DEVIN_ORG_ID"]
> BASE_URL = "https://api.devin.ai/v3"
>
> try:
>     response = requests.get(
>         f"{BASE_URL}/organizations/{ORG_ID}/sessions",
>         headers={"Authorization": f"Bearer {API_KEY}"}
>     )
>     response.raise_for_status()
>     data = response.json()
> except requests.exceptions.HTTPError as e:
>     if e.response.status_code == 401:
>         print("API key rejected — it may be expired or revoked")
>     elif e.response.status_code == 403:
>         # 403 は、認識されない API キーの場合と、有効なキーに必要な権限がない場合の
>         # 両方で返されるため、両方を確認してください。
>         print("Forbidden — verify DEVIN_API_KEY is correct and that "
>               "the caller has the required permission")
>     elif e.response.status_code == 429:
>         print("Rate limit exceeded — wait and retry")
>     else:
>         print(f"API error: {e.response.status_code} {e.response.text}")
> ```

## サポート

> **お困りですか？**
>
> API に関するご質問や不具合のご報告は、[support@cognition.ai](mailto:support@cognition.ai) までメールでご連絡ください。


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.