curl --request POST \
--url https://api.devin.ai/v3/organizations/{org_id}/sessions \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"prompt": "<string>",
"attachment_urls": [
"<string>"
],
"bypass_approval": true,
"child_playbook_id": "<string>",
"create_as_user_id": "<string>",
"knowledge_ids": [
"<string>"
],
"max_acu_limit": 123,
"platform": "<string>",
"playbook_id": "<string>",
"repos": [
"<string>"
],
"resumable": true,
"secret_ids": [
"<string>"
],
"session_links": [
"<string>"
],
"session_secrets": [
{
"key": "<string>",
"value": "<string>",
"sensitive": true
}
],
"structured_output_required": true,
"structured_output_schema": {},
"tags": [
"<string>"
],
"title": "<string>"
}
'import requests
url = "https://api.devin.ai/v3/organizations/{org_id}/sessions"
payload = {
"prompt": "<string>",
"attachment_urls": ["<string>"],
"bypass_approval": True,
"child_playbook_id": "<string>",
"create_as_user_id": "<string>",
"knowledge_ids": ["<string>"],
"max_acu_limit": 123,
"platform": "<string>",
"playbook_id": "<string>",
"repos": ["<string>"],
"resumable": True,
"secret_ids": ["<string>"],
"session_links": ["<string>"],
"session_secrets": [
{
"key": "<string>",
"value": "<string>",
"sensitive": True
}
],
"structured_output_required": True,
"structured_output_schema": {},
"tags": ["<string>"],
"title": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
prompt: '<string>',
attachment_urls: ['<string>'],
bypass_approval: true,
child_playbook_id: '<string>',
create_as_user_id: '<string>',
knowledge_ids: ['<string>'],
max_acu_limit: 123,
platform: '<string>',
playbook_id: '<string>',
repos: ['<string>'],
resumable: true,
secret_ids: ['<string>'],
session_links: ['<string>'],
session_secrets: [{key: '<string>', value: '<string>', sensitive: true}],
structured_output_required: true,
structured_output_schema: {},
tags: ['<string>'],
title: '<string>'
})
};
fetch('https://api.devin.ai/v3/organizations/{org_id}/sessions', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.devin.ai/v3/organizations/{org_id}/sessions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'prompt' => '<string>',
'attachment_urls' => [
'<string>'
],
'bypass_approval' => true,
'child_playbook_id' => '<string>',
'create_as_user_id' => '<string>',
'knowledge_ids' => [
'<string>'
],
'max_acu_limit' => 123,
'platform' => '<string>',
'playbook_id' => '<string>',
'repos' => [
'<string>'
],
'resumable' => true,
'secret_ids' => [
'<string>'
],
'session_links' => [
'<string>'
],
'session_secrets' => [
[
'key' => '<string>',
'value' => '<string>',
'sensitive' => true
]
],
'structured_output_required' => true,
'structured_output_schema' => [
],
'tags' => [
'<string>'
],
'title' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.devin.ai/v3/organizations/{org_id}/sessions"
payload := strings.NewReader("{\n \"prompt\": \"<string>\",\n \"attachment_urls\": [\n \"<string>\"\n ],\n \"bypass_approval\": true,\n \"child_playbook_id\": \"<string>\",\n \"create_as_user_id\": \"<string>\",\n \"knowledge_ids\": [\n \"<string>\"\n ],\n \"max_acu_limit\": 123,\n \"platform\": \"<string>\",\n \"playbook_id\": \"<string>\",\n \"repos\": [\n \"<string>\"\n ],\n \"resumable\": true,\n \"secret_ids\": [\n \"<string>\"\n ],\n \"session_links\": [\n \"<string>\"\n ],\n \"session_secrets\": [\n {\n \"key\": \"<string>\",\n \"value\": \"<string>\",\n \"sensitive\": true\n }\n ],\n \"structured_output_required\": true,\n \"structured_output_schema\": {},\n \"tags\": [\n \"<string>\"\n ],\n \"title\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.devin.ai/v3/organizations/{org_id}/sessions")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"prompt\": \"<string>\",\n \"attachment_urls\": [\n \"<string>\"\n ],\n \"bypass_approval\": true,\n \"child_playbook_id\": \"<string>\",\n \"create_as_user_id\": \"<string>\",\n \"knowledge_ids\": [\n \"<string>\"\n ],\n \"max_acu_limit\": 123,\n \"platform\": \"<string>\",\n \"playbook_id\": \"<string>\",\n \"repos\": [\n \"<string>\"\n ],\n \"resumable\": true,\n \"secret_ids\": [\n \"<string>\"\n ],\n \"session_links\": [\n \"<string>\"\n ],\n \"session_secrets\": [\n {\n \"key\": \"<string>\",\n \"value\": \"<string>\",\n \"sensitive\": true\n }\n ],\n \"structured_output_required\": true,\n \"structured_output_schema\": {},\n \"tags\": [\n \"<string>\"\n ],\n \"title\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.devin.ai/v3/organizations/{org_id}/sessions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"prompt\": \"<string>\",\n \"attachment_urls\": [\n \"<string>\"\n ],\n \"bypass_approval\": true,\n \"child_playbook_id\": \"<string>\",\n \"create_as_user_id\": \"<string>\",\n \"knowledge_ids\": [\n \"<string>\"\n ],\n \"max_acu_limit\": 123,\n \"platform\": \"<string>\",\n \"playbook_id\": \"<string>\",\n \"repos\": [\n \"<string>\"\n ],\n \"resumable\": true,\n \"secret_ids\": [\n \"<string>\"\n ],\n \"session_links\": [\n \"<string>\"\n ],\n \"session_secrets\": [\n {\n \"key\": \"<string>\",\n \"value\": \"<string>\",\n \"sensitive\": true\n }\n ],\n \"structured_output_required\": true,\n \"structured_output_schema\": {},\n \"tags\": [\n \"<string>\"\n ],\n \"title\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"acus_consumed": 123,
"created_at": 123,
"org_id": "<string>",
"pull_requests": [
{
"pr_state": "<string>",
"pr_url": "<string>"
}
],
"session_id": "<string>",
"status": "new",
"tags": [
"<string>"
],
"updated_at": 123,
"url": "<string>",
"automation_id": "<string>",
"category": "bug_fixing",
"child_session_ids": [
"<string>"
],
"devin_mode": "normal",
"is_archived": false,
"origin": "webapp",
"parent_session_id": "<string>",
"playbook_id": "<string>",
"service_user_id": "<string>",
"status_detail": "working",
"structured_output": {},
"subcategory": "<string>",
"title": "<string>",
"user_id": "<string>"
}{
"status": 123,
"title": "<string>",
"detail": "<string>",
"errors": [
{}
],
"instance": "<string>",
"type": "about:blank"
}{
"status": 123,
"title": "<string>",
"detail": "<string>",
"errors": [
{}
],
"instance": "<string>",
"type": "about:blank"
}{
"status": 123,
"title": "<string>",
"detail": "<string>",
"errors": [
{}
],
"instance": "<string>",
"type": "about:blank"
}{
"status": 123,
"title": "<string>",
"detail": "<string>",
"errors": [
{}
],
"instance": "<string>",
"type": "about:blank"
}{
"status": 123,
"title": "<string>",
"detail": "<string>",
"errors": [
{}
],
"instance": "<string>",
"type": "about:blank"
}{
"status": 123,
"title": "<string>",
"detail": "<string>",
"errors": [
{}
],
"instance": "<string>",
"type": "about:blank"
}セッションを作成
新しいセッションを作成します。
curl --request POST \
--url https://api.devin.ai/v3/organizations/{org_id}/sessions \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"prompt": "<string>",
"attachment_urls": [
"<string>"
],
"bypass_approval": true,
"child_playbook_id": "<string>",
"create_as_user_id": "<string>",
"knowledge_ids": [
"<string>"
],
"max_acu_limit": 123,
"platform": "<string>",
"playbook_id": "<string>",
"repos": [
"<string>"
],
"resumable": true,
"secret_ids": [
"<string>"
],
"session_links": [
"<string>"
],
"session_secrets": [
{
"key": "<string>",
"value": "<string>",
"sensitive": true
}
],
"structured_output_required": true,
"structured_output_schema": {},
"tags": [
"<string>"
],
"title": "<string>"
}
'import requests
url = "https://api.devin.ai/v3/organizations/{org_id}/sessions"
payload = {
"prompt": "<string>",
"attachment_urls": ["<string>"],
"bypass_approval": True,
"child_playbook_id": "<string>",
"create_as_user_id": "<string>",
"knowledge_ids": ["<string>"],
"max_acu_limit": 123,
"platform": "<string>",
"playbook_id": "<string>",
"repos": ["<string>"],
"resumable": True,
"secret_ids": ["<string>"],
"session_links": ["<string>"],
"session_secrets": [
{
"key": "<string>",
"value": "<string>",
"sensitive": True
}
],
"structured_output_required": True,
"structured_output_schema": {},
"tags": ["<string>"],
"title": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
prompt: '<string>',
attachment_urls: ['<string>'],
bypass_approval: true,
child_playbook_id: '<string>',
create_as_user_id: '<string>',
knowledge_ids: ['<string>'],
max_acu_limit: 123,
platform: '<string>',
playbook_id: '<string>',
repos: ['<string>'],
resumable: true,
secret_ids: ['<string>'],
session_links: ['<string>'],
session_secrets: [{key: '<string>', value: '<string>', sensitive: true}],
structured_output_required: true,
structured_output_schema: {},
tags: ['<string>'],
title: '<string>'
})
};
fetch('https://api.devin.ai/v3/organizations/{org_id}/sessions', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.devin.ai/v3/organizations/{org_id}/sessions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'prompt' => '<string>',
'attachment_urls' => [
'<string>'
],
'bypass_approval' => true,
'child_playbook_id' => '<string>',
'create_as_user_id' => '<string>',
'knowledge_ids' => [
'<string>'
],
'max_acu_limit' => 123,
'platform' => '<string>',
'playbook_id' => '<string>',
'repos' => [
'<string>'
],
'resumable' => true,
'secret_ids' => [
'<string>'
],
'session_links' => [
'<string>'
],
'session_secrets' => [
[
'key' => '<string>',
'value' => '<string>',
'sensitive' => true
]
],
'structured_output_required' => true,
'structured_output_schema' => [
],
'tags' => [
'<string>'
],
'title' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.devin.ai/v3/organizations/{org_id}/sessions"
payload := strings.NewReader("{\n \"prompt\": \"<string>\",\n \"attachment_urls\": [\n \"<string>\"\n ],\n \"bypass_approval\": true,\n \"child_playbook_id\": \"<string>\",\n \"create_as_user_id\": \"<string>\",\n \"knowledge_ids\": [\n \"<string>\"\n ],\n \"max_acu_limit\": 123,\n \"platform\": \"<string>\",\n \"playbook_id\": \"<string>\",\n \"repos\": [\n \"<string>\"\n ],\n \"resumable\": true,\n \"secret_ids\": [\n \"<string>\"\n ],\n \"session_links\": [\n \"<string>\"\n ],\n \"session_secrets\": [\n {\n \"key\": \"<string>\",\n \"value\": \"<string>\",\n \"sensitive\": true\n }\n ],\n \"structured_output_required\": true,\n \"structured_output_schema\": {},\n \"tags\": [\n \"<string>\"\n ],\n \"title\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.devin.ai/v3/organizations/{org_id}/sessions")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"prompt\": \"<string>\",\n \"attachment_urls\": [\n \"<string>\"\n ],\n \"bypass_approval\": true,\n \"child_playbook_id\": \"<string>\",\n \"create_as_user_id\": \"<string>\",\n \"knowledge_ids\": [\n \"<string>\"\n ],\n \"max_acu_limit\": 123,\n \"platform\": \"<string>\",\n \"playbook_id\": \"<string>\",\n \"repos\": [\n \"<string>\"\n ],\n \"resumable\": true,\n \"secret_ids\": [\n \"<string>\"\n ],\n \"session_links\": [\n \"<string>\"\n ],\n \"session_secrets\": [\n {\n \"key\": \"<string>\",\n \"value\": \"<string>\",\n \"sensitive\": true\n }\n ],\n \"structured_output_required\": true,\n \"structured_output_schema\": {},\n \"tags\": [\n \"<string>\"\n ],\n \"title\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.devin.ai/v3/organizations/{org_id}/sessions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"prompt\": \"<string>\",\n \"attachment_urls\": [\n \"<string>\"\n ],\n \"bypass_approval\": true,\n \"child_playbook_id\": \"<string>\",\n \"create_as_user_id\": \"<string>\",\n \"knowledge_ids\": [\n \"<string>\"\n ],\n \"max_acu_limit\": 123,\n \"platform\": \"<string>\",\n \"playbook_id\": \"<string>\",\n \"repos\": [\n \"<string>\"\n ],\n \"resumable\": true,\n \"secret_ids\": [\n \"<string>\"\n ],\n \"session_links\": [\n \"<string>\"\n ],\n \"session_secrets\": [\n {\n \"key\": \"<string>\",\n \"value\": \"<string>\",\n \"sensitive\": true\n }\n ],\n \"structured_output_required\": true,\n \"structured_output_schema\": {},\n \"tags\": [\n \"<string>\"\n ],\n \"title\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"acus_consumed": 123,
"created_at": 123,
"org_id": "<string>",
"pull_requests": [
{
"pr_state": "<string>",
"pr_url": "<string>"
}
],
"session_id": "<string>",
"status": "new",
"tags": [
"<string>"
],
"updated_at": 123,
"url": "<string>",
"automation_id": "<string>",
"category": "bug_fixing",
"child_session_ids": [
"<string>"
],
"devin_mode": "normal",
"is_archived": false,
"origin": "webapp",
"parent_session_id": "<string>",
"playbook_id": "<string>",
"service_user_id": "<string>",
"status_detail": "working",
"structured_output": {},
"subcategory": "<string>",
"title": "<string>",
"user_id": "<string>"
}{
"status": 123,
"title": "<string>",
"detail": "<string>",
"errors": [
{}
],
"instance": "<string>",
"type": "about:blank"
}{
"status": 123,
"title": "<string>",
"detail": "<string>",
"errors": [
{}
],
"instance": "<string>",
"type": "about:blank"
}{
"status": 123,
"title": "<string>",
"detail": "<string>",
"errors": [
{}
],
"instance": "<string>",
"type": "about:blank"
}{
"status": 123,
"title": "<string>",
"detail": "<string>",
"errors": [
{}
],
"instance": "<string>",
"type": "about:blank"
}{
"status": 123,
"title": "<string>",
"detail": "<string>",
"errors": [
{}
],
"instance": "<string>",
"type": "about:blank"
}{
"status": 123,
"title": "<string>",
"detail": "<string>",
"errors": [
{}
],
"instance": "<string>",
"type": "about:blank"
}権限
UseDevinSessions (org.devins.use) 権限が付与されたサービスユーザーが必要です。
高度な機能用の追加権限
| 機能 | 必要な権限 |
|---|---|
create_as_user_id | ImpersonateOrgSessions |
Devin モード
devin_mode パラメータは、このセッションで使用する Devin のエージェントモードを制御します。
| Mode | Description |
|---|---|
normal | デフォルトのエージェントモードです。高速で、長期的な計画立案に優れています。 |
fast | 約 2 倍高速で、コストは 4 倍、知能は同じです。 |
ユーザーのなりすまし
create_as_user_id パラメータを使用すると、別のユーザーに代わってセッションを作成できます。これには以下が必要です:
- サービスユーザーが
ImpersonateOrgSessions権限を持っていること - 対象ユーザーが組織のメンバーであること
- 対象ユーザーが
UseDevinSessions権限を持っていること
承認
サービスユーザーの認証情報(接頭辞: cog_)
パスパラメータ
組織 ID(接頭辞: org-)
"org-abc123def456"
クエリパラメータ
ボディ
1 - 2083セッションの Devin のエージェントモードを上書きします。'normal' はデフォルトの Agent mode、'fast' は Fast mode、'lite' は Devin Lite、'ultra' は Devin Ultra、'fusion' は Fusion を使用します。プレビュー用のモードには、web app と同じ feature flag および Enterprise agent preview の制限が適用されます。
normal, fast, lite, ultra, fusion セッションの VM プラットフォーム(例: 'windows')を上書きするか、セッションを自前のマシンのいずれかで実行するためのアウトポスト(BYOB)プール名を指定します。省略した場合(または 'inherit' に設定した場合)、親の Devin によって作成されたセッションは親の配置(プラットフォームとその outpost プールの両方)を継承します。つまり、アウトポストに配置された親は同じプール上に子を spawn します。それ以外の場合は、組織のデフォルトが使用されます。指定する値は、組織に設定されたプラットフォーム、または outpost プール名のいずれかと一致している必要があります(大文字と小文字は区別されません)。名前が両方に一致する場合は、built-in プラットフォームが優先されます。認識されない値は 400 エラーで拒否され、エラーボディにはその組織で利用可能なプラットフォームラベルと outpost プール名が一覧表示されます。
停止後にセッションを再開できるよう、セッションの VM 状態を保持するかどうか。使い捨てセッションの場合は false に設定します。
Show child attributes
Show child attributes
true の場合(デフォルト)、agent は自分のターンが終了する前に is_final=true を指定して provide_structured_output を必ず呼び出す必要があります。false の場合、このツールは利用可能ですが必須ではなく、特定のターンで呼び出される保証はありません。
構造化出力を検証するための JSON Schema(Draft 7)。最大 64KB。自己完結している必要があり(外部 $ref や外部参照は使用できません)。
レスポンス
成功レスポンス
Show child attributes
Show child attributes
new, claimed, running, exit, error, suspended, resuming このセッションを作成した自動化の ID(該当する場合)。
分類が実行されている場合の、セッションに割り当てられたユースケースカテゴリです。get/list エンドポイントでのみ設定されます。
bug_fixing, ci_cd_and_devops, code_quality_and_security, code_review, code_review_and_analysis, data_and_automation, documentation_and_content, feature_development, migrations_and_upgrades, other, production_investigation, refactoring_and_optimization, research_and_exploration, security, unit_test_generation 組織/ユーザーのデフォルト設定と親セッションからの継承を解決した後、セッションの作成時に使用された Devin エージェントモード。モードに相当するものがないエージェントプレビューをセッションで実行する場合は None。
normal, fast, lite, ultra, fusion セッションの作成元です。
webapp, slack, teams, api, linear, jira, automation, cli, desktop, code_scan, other セッションの現在のステータスに関する追加情報です。status が 'running' の場合は、'working'(作業中)、'waiting_for_user'(ユーザー入力が必要)、'waiting_for_approval'(セーフモードでアクションの承認待ち)、または 'finished'(タスク完了)です。status が 'suspended' の場合は、'inactivity'、'user_request'、'usage_limit_exceeded'、'out_of_credits'、'out_of_quota'、'no_quota_allocation'、'payment_declined'、'org_usage_limit_exceeded'、'user_usage_limit_exceeded'、'total_session_limit_exceeded'、'error' などの一時停止理由です。get/list エンドポイントでのみ設定されます。
working, waiting_for_user, waiting_for_approval, finished, inactivity, user_request, usage_limit_exceeded, out_of_credits, out_of_quota, no_quota_allocation, payment_declined, org_usage_limit_exceeded, user_usage_limit_exceeded, total_session_limit_exceeded, error セッションからの検証済み構造化出力。GET/list エンドポイントでのみ設定されます。
セッションに割り当てられたサブカテゴリの表示名です。カテゴリが設定されていても、サブカテゴリが割り当てられていない、または特定されなかった場合は 'Other' になります。get/list エンドポイントでのみ設定されます。

