セットアップ
コピー
AIに質問
# 必須: サービスユーザーのAPIキー(cog_ で始まる)
export DEVIN_API_KEY="cog_your_key_here"
# 任意: 組織ID(組織スコープのサービスユーザーは省略可能)
export DEVIN_ORG_ID="your_org_id"
Organization サービスのユーザーは
DEVIN_ORG_ID を設定する必要はありません — API が認証情報から自動的に解決します。URL では {org_id} を省略できます。curl の例
セッションを作成する
セッションを作成する
コピー
AIに質問
curl -X POST "https://api.devin.ai/v3/organizations/sessions" \
-H "Authorization: Bearer $DEVIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"prompt": "CSV データを解析する Python スクリプトを作成してください"}'
セッションを一覧表示する
セッションを一覧表示する
コピー
AIに質問
curl "https://api.devin.ai/v3/organizations/sessions" \
-H "Authorization: Bearer $DEVIN_API_KEY"
セッションにメッセージを送信する
セッションにメッセージを送信する
コピー
AIに質問
export SESSION_ID="your_session_id"
curl -X POST "https://api.devin.ai/v3/organizations/sessions/$SESSION_ID/messages" \
-H "Authorization: Bearer $DEVIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"message": "単体テストも追加してください"}'
Knowledge ノートを作成する
Knowledge ノートを作成する
コピー
AIに質問
curl -X POST "https://api.devin.ai/v3/organizations/knowledge/notes" \
-H "Authorization: Bearer $DEVIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "コーディング規約",
"trigger_description": "このリポジトリでコードを書くとき",
"body": "TypeScript の strict モードを使用してください。既存のコードスタイルに従ってください。"
}'
Enterprise 組織を一覧表示する
Enterprise 組織を一覧表示する
コピー
AIに質問
curl "https://api.devin.ai/v3/enterprise/organizations" \
-H "Authorization: Bearer $DEVIN_API_KEY"
利用状況データを取得する
利用状況データを取得する
コピー
AIに質問
# 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 の使用例
セッションを作成
セッションを作成
コピー
AIに質問
import os
import requests
API_KEY = os.environ["DEVIN_API_KEY"]
BASE_URL = "https://api.devin.ai/v3"
response = requests.post(
f"{BASE_URL}/organizations/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']}")
セッション状態をポーリングする
セッション状態をポーリングする
コピー
AIに質問
import os
import time
import requests
API_KEY = os.environ["DEVIN_API_KEY"]
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/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)
複数組織ワークフロー(Enterprise)
複数の組織をまたいで自動化する:
コピー
AIに質問
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)
ページネーション対応監査ログの取得(Enterprise)
コピー
AIに質問
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})")
エラー処理
エラー処理
コピー
AIに質問
import os
import requests
API_KEY = os.environ["DEVIN_API_KEY"]
BASE_URL = "https://api.devin.ai/v3"
try:
response = requests.get(
f"{BASE_URL}/organizations/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キー")
elif e.response.status_code == 403:
print("サービスユーザーに必要な権限がありません")
elif e.response.status_code == 429:
print("レート制限を超過しました — しばらく待ってから再試行してください")
else:
print(f"APIエラー: {e.response.status_code} {e.response.text}")
サポート
お困りですか?
API に関するご質問や不具合のご報告は、support@cognition.ai までメールでご連絡ください。
