curl --request GET \
--url https://api.devin.ai/v3/enterprise/sessions/{devin_id}/insights \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.devin.ai/v3/enterprise/sessions/{devin_id}/insights"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.devin.ai/v3/enterprise/sessions/{devin_id}/insights', 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/enterprise/sessions/{devin_id}/insights",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.devin.ai/v3/enterprise/sessions/{devin_id}/insights"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.devin.ai/v3/enterprise/sessions/{devin_id}/insights")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.devin.ai/v3/enterprise/sessions/{devin_id}/insights")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"acus_consumed": 123,
"created_at": 123,
"num_devin_messages": 123,
"num_user_messages": 123,
"org_id": "<string>",
"pull_requests": [
{
"pr_state": "<string>",
"pr_url": "<string>"
}
],
"session_id": "<string>",
"session_size": "xs",
"status": "new",
"tags": [
"<string>"
],
"updated_at": 123,
"url": "<string>",
"analysis": {
"action_items": [],
"classification": {
"category": "<string>",
"confidence": 123,
"programming_languages": [],
"tools_and_frameworks": []
},
"issues": [],
"note_usage": {
"bad_usages": [],
"good_usages": []
},
"skill_usage": {
"bad_usages": [],
"good_usages": []
},
"suggested_prompt": {
"original_prompt": "<string>",
"suggested_prompt": "<string>",
"feedback_items": []
},
"timeline": []
},
"analysis_status": "started",
"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>",
"security_profile": {
"selection": "inherit",
"profile_id": "<string>"
},
"service_user_id": "<string>",
"status_detail": "working",
"structured_output": {},
"subcategory": "<string>",
"title": "<string>",
"user_id": "<string>"
}{
"status": 123,
"title": "<string>",
"detail": "<string>",
"error_code": "<string>",
"errors": [
{}
],
"instance": "<string>",
"type": "about:blank"
}{
"status": 123,
"title": "<string>",
"detail": "<string>",
"error_code": "<string>",
"errors": [
{}
],
"instance": "<string>",
"type": "about:blank"
}{
"status": 123,
"title": "<string>",
"detail": "<string>",
"error_code": "<string>",
"errors": [
{}
],
"instance": "<string>",
"type": "about:blank"
}{
"status": 123,
"title": "<string>",
"detail": "<string>",
"error_code": "<string>",
"errors": [
{}
],
"instance": "<string>",
"type": "about:blank"
}{
"status": 123,
"title": "<string>",
"detail": "<string>",
"error_code": "<string>",
"errors": [
{}
],
"instance": "<string>",
"type": "about:blank"
}{
"status": 123,
"title": "<string>",
"detail": "<string>",
"error_code": "<string>",
"errors": [
{}
],
"instance": "<string>",
"type": "about:blank"
}获取会话洞察信息
获取指定会话的详细洞察,包括消息数量、会话大小分级以及 AI 生成的分析。
curl --request GET \
--url https://api.devin.ai/v3/enterprise/sessions/{devin_id}/insights \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.devin.ai/v3/enterprise/sessions/{devin_id}/insights"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.devin.ai/v3/enterprise/sessions/{devin_id}/insights', 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/enterprise/sessions/{devin_id}/insights",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.devin.ai/v3/enterprise/sessions/{devin_id}/insights"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.devin.ai/v3/enterprise/sessions/{devin_id}/insights")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.devin.ai/v3/enterprise/sessions/{devin_id}/insights")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"acus_consumed": 123,
"created_at": 123,
"num_devin_messages": 123,
"num_user_messages": 123,
"org_id": "<string>",
"pull_requests": [
{
"pr_state": "<string>",
"pr_url": "<string>"
}
],
"session_id": "<string>",
"session_size": "xs",
"status": "new",
"tags": [
"<string>"
],
"updated_at": 123,
"url": "<string>",
"analysis": {
"action_items": [],
"classification": {
"category": "<string>",
"confidence": 123,
"programming_languages": [],
"tools_and_frameworks": []
},
"issues": [],
"note_usage": {
"bad_usages": [],
"good_usages": []
},
"skill_usage": {
"bad_usages": [],
"good_usages": []
},
"suggested_prompt": {
"original_prompt": "<string>",
"suggested_prompt": "<string>",
"feedback_items": []
},
"timeline": []
},
"analysis_status": "started",
"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>",
"security_profile": {
"selection": "inherit",
"profile_id": "<string>"
},
"service_user_id": "<string>",
"status_detail": "working",
"structured_output": {},
"subcategory": "<string>",
"title": "<string>",
"user_id": "<string>"
}{
"status": 123,
"title": "<string>",
"detail": "<string>",
"error_code": "<string>",
"errors": [
{}
],
"instance": "<string>",
"type": "about:blank"
}{
"status": 123,
"title": "<string>",
"detail": "<string>",
"error_code": "<string>",
"errors": [
{}
],
"instance": "<string>",
"type": "about:blank"
}{
"status": 123,
"title": "<string>",
"detail": "<string>",
"error_code": "<string>",
"errors": [
{}
],
"instance": "<string>",
"type": "about:blank"
}{
"status": 123,
"title": "<string>",
"detail": "<string>",
"error_code": "<string>",
"errors": [
{}
],
"instance": "<string>",
"type": "about:blank"
}{
"status": 123,
"title": "<string>",
"detail": "<string>",
"error_code": "<string>",
"errors": [
{}
],
"instance": "<string>",
"type": "about:blank"
}{
"status": 123,
"title": "<string>",
"detail": "<string>",
"error_code": "<string>",
"errors": [
{}
],
"instance": "<string>",
"type": "about:blank"
}devin_id 是在会话 ID 前加上前缀 devin- 后形成的 (例如:devin-abc123) 。权限
需要一个在企业级别拥有ViewAccountSessions 权限的服务用户或个人访问令牌。授权
服务用户凭据(前缀:cog_)
路径参数
Devin 会话 ID(前缀:devin-)
"devin-abc123def456"
查询参数
响应
成功响应
包含量化指标和 AI 分析的会话详细信息。
在 SessionResponse 的基础上,补充了原本需要通过额外查询才能获取的字段。
会话期间发送的 Devin 消息总数。
会话期间发送的用户消息总数。
Show child attributes
Show child attributes
基于 ACU 使用量和消息数量对会话规模进行的分类。
xs, s, m, l, xl new, claimed, running, exit, error, suspended, resuming AI 生成的会话分析。如果分析尚未完成,则为 None。
Show child attributes
Show child attributes
最近一次会话分析运行的状态:'completed'、'started'(进行中)或 'failed'。如果从未运行过分析,则为 None。'failed' 用于区分运行出错与从未运行的情况;analysis 可能仍保留此前已完成的分析结果。
started, completed, failed 创建此会话的自动化 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 Agent 模式,已解析 org/user 默认设置和父会话继承。若会话运行的是没有对应模式的 Agent 预览,则为 None。
normal, fast, fusion, lite, ultra, swe-2-medium, swe-2-high, swe-2-max 该会话的创建来源。
webapp, slack, teams, api, linear, jira, automation, cli, desktop, code_scan, other 会话自身的安全 Profile 绑定。仅在 get/list 端点的响应中填充。
Show child attributes
Show child attributes
会话当前状态的附加信息。当 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”“contract_expired”或“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, contract_expired, error 会话中已验证的结构化输出。仅在 GET/列表类端点中返回。
为会话分配的子类别显示名称。若已设置类别但未分配或未解析出子类别,则为“Other”。仅在 get/list 端点中返回。

