curl --request POST \
--url https://api.devin.ai/v3/organizations/{org_id}/automations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"actions": [
{
"prompt": "<string>",
"session": {
"bypass_approval": false,
"notifications": {
"slack": {
"channel_id": "<string>"
},
"teams": {
"channel_id": "<string>",
"team_id": "<string>"
}
},
"platform": "<string>",
"playbook_id": "<string>",
"repos": [],
"tags": []
},
"type": "start_session"
}
],
"name": "<string>",
"run_as": {
"type": "organization"
},
"triggers": [
{
"conditions": {
"any": [
{
"all": [
{
"field": "<string>",
"value": "<string>"
}
]
}
]
},
"replies": []
}
],
"concurrency": {
"max_concurrent_runs": 2,
"max_queue_depth": 1
},
"enabled": true,
"limits": {
"invocations": {
"max_per_window": 2,
"window_seconds": 61
},
"max_acu_limit": 500
},
"metadata": {},
"notifications": {
"email": {
"recipients": [
"<string>"
]
},
"slack": {
"channel_id": "<string>"
}
},
"security_profile": {
"profile_id": "<string>"
},
"session_settings": {
"net_policy": {
"allow": [
{
"hostname": "<string>"
}
]
}
},
"slack_reply_access": "slack_users",
"teams_reply_access": "teams_users",
"template_id": "<string>",
"tools": {
"jira_projects": [
"<string>"
],
"linear_enabled": true,
"mcp_servers": [],
"slack_channels": [],
"teams_channels": []
}
}
'import requests
url = "https://api.devin.ai/v3/organizations/{org_id}/automations"
payload = {
"actions": [
{
"prompt": "<string>",
"session": {
"bypass_approval": False,
"notifications": {
"slack": { "channel_id": "<string>" },
"teams": {
"channel_id": "<string>",
"team_id": "<string>"
}
},
"platform": "<string>",
"playbook_id": "<string>",
"repos": [],
"tags": []
},
"type": "start_session"
}
],
"name": "<string>",
"run_as": { "type": "organization" },
"triggers": [
{
"conditions": { "any": [{ "all": [
{
"field": "<string>",
"value": "<string>"
}
] }] },
"replies": []
}
],
"concurrency": {
"max_concurrent_runs": 2,
"max_queue_depth": 1
},
"enabled": True,
"limits": {
"invocations": {
"max_per_window": 2,
"window_seconds": 61
},
"max_acu_limit": 500
},
"metadata": {},
"notifications": {
"email": { "recipients": ["<string>"] },
"slack": { "channel_id": "<string>" }
},
"security_profile": { "profile_id": "<string>" },
"session_settings": { "net_policy": { "allow": [{ "hostname": "<string>" }] } },
"slack_reply_access": "slack_users",
"teams_reply_access": "teams_users",
"template_id": "<string>",
"tools": {
"jira_projects": ["<string>"],
"linear_enabled": True,
"mcp_servers": [],
"slack_channels": [],
"teams_channels": []
}
}
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({
actions: [
{
prompt: '<string>',
session: {
bypass_approval: false,
notifications: {
slack: {channel_id: '<string>'},
teams: {channel_id: '<string>', team_id: '<string>'}
},
platform: '<string>',
playbook_id: '<string>',
repos: [],
tags: []
},
type: 'start_session'
}
],
name: '<string>',
run_as: {type: 'organization'},
triggers: [
{
conditions: {any: [{all: [{field: '<string>', value: '<string>'}]}]},
replies: []
}
],
concurrency: {max_concurrent_runs: 2, max_queue_depth: 1},
enabled: true,
limits: {invocations: {max_per_window: 2, window_seconds: 61}, max_acu_limit: 500},
metadata: {},
notifications: {email: {recipients: ['<string>']}, slack: {channel_id: '<string>'}},
security_profile: {profile_id: '<string>'},
session_settings: {net_policy: {allow: [{hostname: '<string>'}]}},
slack_reply_access: 'slack_users',
teams_reply_access: 'teams_users',
template_id: '<string>',
tools: {
jira_projects: ['<string>'],
linear_enabled: true,
mcp_servers: [],
slack_channels: [],
teams_channels: []
}
})
};
fetch('https://api.devin.ai/v3/organizations/{org_id}/automations', 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}/automations",
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([
'actions' => [
[
'prompt' => '<string>',
'session' => [
'bypass_approval' => false,
'notifications' => [
'slack' => [
'channel_id' => '<string>'
],
'teams' => [
'channel_id' => '<string>',
'team_id' => '<string>'
]
],
'platform' => '<string>',
'playbook_id' => '<string>',
'repos' => [
],
'tags' => [
]
],
'type' => 'start_session'
]
],
'name' => '<string>',
'run_as' => [
'type' => 'organization'
],
'triggers' => [
[
'conditions' => [
'any' => [
[
'all' => [
[
'field' => '<string>',
'value' => '<string>'
]
]
]
]
],
'replies' => [
]
]
],
'concurrency' => [
'max_concurrent_runs' => 2,
'max_queue_depth' => 1
],
'enabled' => true,
'limits' => [
'invocations' => [
'max_per_window' => 2,
'window_seconds' => 61
],
'max_acu_limit' => 500
],
'metadata' => [
],
'notifications' => [
'email' => [
'recipients' => [
'<string>'
]
],
'slack' => [
'channel_id' => '<string>'
]
],
'security_profile' => [
'profile_id' => '<string>'
],
'session_settings' => [
'net_policy' => [
'allow' => [
[
'hostname' => '<string>'
]
]
]
],
'slack_reply_access' => 'slack_users',
'teams_reply_access' => 'teams_users',
'template_id' => '<string>',
'tools' => [
'jira_projects' => [
'<string>'
],
'linear_enabled' => true,
'mcp_servers' => [
],
'slack_channels' => [
],
'teams_channels' => [
]
]
]),
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}/automations"
payload := strings.NewReader("{\n \"actions\": [\n {\n \"prompt\": \"<string>\",\n \"session\": {\n \"bypass_approval\": false,\n \"notifications\": {\n \"slack\": {\n \"channel_id\": \"<string>\"\n },\n \"teams\": {\n \"channel_id\": \"<string>\",\n \"team_id\": \"<string>\"\n }\n },\n \"platform\": \"<string>\",\n \"playbook_id\": \"<string>\",\n \"repos\": [],\n \"tags\": []\n },\n \"type\": \"start_session\"\n }\n ],\n \"name\": \"<string>\",\n \"run_as\": {\n \"type\": \"organization\"\n },\n \"triggers\": [\n {\n \"conditions\": {\n \"any\": [\n {\n \"all\": [\n {\n \"field\": \"<string>\",\n \"value\": \"<string>\"\n }\n ]\n }\n ]\n },\n \"replies\": []\n }\n ],\n \"concurrency\": {\n \"max_concurrent_runs\": 2,\n \"max_queue_depth\": 1\n },\n \"enabled\": true,\n \"limits\": {\n \"invocations\": {\n \"max_per_window\": 2,\n \"window_seconds\": 61\n },\n \"max_acu_limit\": 500\n },\n \"metadata\": {},\n \"notifications\": {\n \"email\": {\n \"recipients\": [\n \"<string>\"\n ]\n },\n \"slack\": {\n \"channel_id\": \"<string>\"\n }\n },\n \"security_profile\": {\n \"profile_id\": \"<string>\"\n },\n \"session_settings\": {\n \"net_policy\": {\n \"allow\": [\n {\n \"hostname\": \"<string>\"\n }\n ]\n }\n },\n \"slack_reply_access\": \"slack_users\",\n \"teams_reply_access\": \"teams_users\",\n \"template_id\": \"<string>\",\n \"tools\": {\n \"jira_projects\": [\n \"<string>\"\n ],\n \"linear_enabled\": true,\n \"mcp_servers\": [],\n \"slack_channels\": [],\n \"teams_channels\": []\n }\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}/automations")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"actions\": [\n {\n \"prompt\": \"<string>\",\n \"session\": {\n \"bypass_approval\": false,\n \"notifications\": {\n \"slack\": {\n \"channel_id\": \"<string>\"\n },\n \"teams\": {\n \"channel_id\": \"<string>\",\n \"team_id\": \"<string>\"\n }\n },\n \"platform\": \"<string>\",\n \"playbook_id\": \"<string>\",\n \"repos\": [],\n \"tags\": []\n },\n \"type\": \"start_session\"\n }\n ],\n \"name\": \"<string>\",\n \"run_as\": {\n \"type\": \"organization\"\n },\n \"triggers\": [\n {\n \"conditions\": {\n \"any\": [\n {\n \"all\": [\n {\n \"field\": \"<string>\",\n \"value\": \"<string>\"\n }\n ]\n }\n ]\n },\n \"replies\": []\n }\n ],\n \"concurrency\": {\n \"max_concurrent_runs\": 2,\n \"max_queue_depth\": 1\n },\n \"enabled\": true,\n \"limits\": {\n \"invocations\": {\n \"max_per_window\": 2,\n \"window_seconds\": 61\n },\n \"max_acu_limit\": 500\n },\n \"metadata\": {},\n \"notifications\": {\n \"email\": {\n \"recipients\": [\n \"<string>\"\n ]\n },\n \"slack\": {\n \"channel_id\": \"<string>\"\n }\n },\n \"security_profile\": {\n \"profile_id\": \"<string>\"\n },\n \"session_settings\": {\n \"net_policy\": {\n \"allow\": [\n {\n \"hostname\": \"<string>\"\n }\n ]\n }\n },\n \"slack_reply_access\": \"slack_users\",\n \"teams_reply_access\": \"teams_users\",\n \"template_id\": \"<string>\",\n \"tools\": {\n \"jira_projects\": [\n \"<string>\"\n ],\n \"linear_enabled\": true,\n \"mcp_servers\": [],\n \"slack_channels\": [],\n \"teams_channels\": []\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.devin.ai/v3/organizations/{org_id}/automations")
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 \"actions\": [\n {\n \"prompt\": \"<string>\",\n \"session\": {\n \"bypass_approval\": false,\n \"notifications\": {\n \"slack\": {\n \"channel_id\": \"<string>\"\n },\n \"teams\": {\n \"channel_id\": \"<string>\",\n \"team_id\": \"<string>\"\n }\n },\n \"platform\": \"<string>\",\n \"playbook_id\": \"<string>\",\n \"repos\": [],\n \"tags\": []\n },\n \"type\": \"start_session\"\n }\n ],\n \"name\": \"<string>\",\n \"run_as\": {\n \"type\": \"organization\"\n },\n \"triggers\": [\n {\n \"conditions\": {\n \"any\": [\n {\n \"all\": [\n {\n \"field\": \"<string>\",\n \"value\": \"<string>\"\n }\n ]\n }\n ]\n },\n \"replies\": []\n }\n ],\n \"concurrency\": {\n \"max_concurrent_runs\": 2,\n \"max_queue_depth\": 1\n },\n \"enabled\": true,\n \"limits\": {\n \"invocations\": {\n \"max_per_window\": 2,\n \"window_seconds\": 61\n },\n \"max_acu_limit\": 500\n },\n \"metadata\": {},\n \"notifications\": {\n \"email\": {\n \"recipients\": [\n \"<string>\"\n ]\n },\n \"slack\": {\n \"channel_id\": \"<string>\"\n }\n },\n \"security_profile\": {\n \"profile_id\": \"<string>\"\n },\n \"session_settings\": {\n \"net_policy\": {\n \"allow\": [\n {\n \"hostname\": \"<string>\"\n }\n ]\n }\n },\n \"slack_reply_access\": \"slack_users\",\n \"teams_reply_access\": \"teams_users\",\n \"template_id\": \"<string>\",\n \"tools\": {\n \"jira_projects\": [\n \"<string>\"\n ],\n \"linear_enabled\": true,\n \"mcp_servers\": [],\n \"slack_channels\": [],\n \"teams_channels\": []\n }\n}"
response = http.request(request)
puts response.read_body{
"actions": [
{
"prompt": "<string>",
"session": {
"bypass_approval": false,
"notifications": {
"slack": {
"channel_id": "<string>",
"mode": "post_updates"
},
"teams": {
"channel_id": "<string>",
"team_id": "<string>"
}
},
"platform": "<string>",
"playbook_id": "<string>",
"repos": [],
"tags": []
},
"type": "start_session"
}
],
"automation_id": "<string>",
"created_at": 123,
"created_by": {
"id": "<string>",
"type": "user",
"name": "<string>"
},
"enabled": true,
"name": "<string>",
"triggers": [
{
"event_type": "<string>",
"trigger_id": "<string>",
"conditions": {
"any": [
{
"all": [
{
"field": "<string>",
"operator": "eq",
"value": "<string>"
}
]
}
]
},
"replies": [],
"webhook": {
"url": "<string>",
"secret": "<string>"
}
}
],
"updated_at": 123,
"concurrency": {
"max_concurrent_runs": 2,
"max_queue_depth": 1
},
"last_edited_by": {
"id": "<string>",
"type": "user",
"name": "<string>"
},
"last_invocation": {
"fired_at": 123,
"status": "<string>"
},
"limits": {
"invocations": {
"max_per_window": 2,
"window_seconds": 61
},
"max_acu_limit": 500
},
"metadata": {},
"next_run_at": 123,
"notifications": {
"email": {
"when": "always",
"recipients": [
"<string>"
]
},
"slack": {
"channel_id": "<string>",
"when": "always"
}
},
"run_as": {
"type": "organization"
},
"security_profile": {
"selection": "inherit",
"profile_id": "<string>",
"warnings": []
},
"session_settings": {
"devin_mode": "normal",
"net_policy": {
"allow": [
{
"hostname": "<string>"
}
]
}
},
"slack_reply_access": "slack_users",
"teams_reply_access": "teams_users",
"template_id": "<string>",
"tools": {
"jira_projects": [
"<string>"
],
"linear_enabled": true,
"mcp_servers": [],
"slack_channels": [],
"slack_dm_scope": "org_members",
"teams_channels": []
}
}{
"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"
}Criar automação
Crie uma nova automação com gatilhos e ações.
curl --request POST \
--url https://api.devin.ai/v3/organizations/{org_id}/automations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"actions": [
{
"prompt": "<string>",
"session": {
"bypass_approval": false,
"notifications": {
"slack": {
"channel_id": "<string>"
},
"teams": {
"channel_id": "<string>",
"team_id": "<string>"
}
},
"platform": "<string>",
"playbook_id": "<string>",
"repos": [],
"tags": []
},
"type": "start_session"
}
],
"name": "<string>",
"run_as": {
"type": "organization"
},
"triggers": [
{
"conditions": {
"any": [
{
"all": [
{
"field": "<string>",
"value": "<string>"
}
]
}
]
},
"replies": []
}
],
"concurrency": {
"max_concurrent_runs": 2,
"max_queue_depth": 1
},
"enabled": true,
"limits": {
"invocations": {
"max_per_window": 2,
"window_seconds": 61
},
"max_acu_limit": 500
},
"metadata": {},
"notifications": {
"email": {
"recipients": [
"<string>"
]
},
"slack": {
"channel_id": "<string>"
}
},
"security_profile": {
"profile_id": "<string>"
},
"session_settings": {
"net_policy": {
"allow": [
{
"hostname": "<string>"
}
]
}
},
"slack_reply_access": "slack_users",
"teams_reply_access": "teams_users",
"template_id": "<string>",
"tools": {
"jira_projects": [
"<string>"
],
"linear_enabled": true,
"mcp_servers": [],
"slack_channels": [],
"teams_channels": []
}
}
'import requests
url = "https://api.devin.ai/v3/organizations/{org_id}/automations"
payload = {
"actions": [
{
"prompt": "<string>",
"session": {
"bypass_approval": False,
"notifications": {
"slack": { "channel_id": "<string>" },
"teams": {
"channel_id": "<string>",
"team_id": "<string>"
}
},
"platform": "<string>",
"playbook_id": "<string>",
"repos": [],
"tags": []
},
"type": "start_session"
}
],
"name": "<string>",
"run_as": { "type": "organization" },
"triggers": [
{
"conditions": { "any": [{ "all": [
{
"field": "<string>",
"value": "<string>"
}
] }] },
"replies": []
}
],
"concurrency": {
"max_concurrent_runs": 2,
"max_queue_depth": 1
},
"enabled": True,
"limits": {
"invocations": {
"max_per_window": 2,
"window_seconds": 61
},
"max_acu_limit": 500
},
"metadata": {},
"notifications": {
"email": { "recipients": ["<string>"] },
"slack": { "channel_id": "<string>" }
},
"security_profile": { "profile_id": "<string>" },
"session_settings": { "net_policy": { "allow": [{ "hostname": "<string>" }] } },
"slack_reply_access": "slack_users",
"teams_reply_access": "teams_users",
"template_id": "<string>",
"tools": {
"jira_projects": ["<string>"],
"linear_enabled": True,
"mcp_servers": [],
"slack_channels": [],
"teams_channels": []
}
}
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({
actions: [
{
prompt: '<string>',
session: {
bypass_approval: false,
notifications: {
slack: {channel_id: '<string>'},
teams: {channel_id: '<string>', team_id: '<string>'}
},
platform: '<string>',
playbook_id: '<string>',
repos: [],
tags: []
},
type: 'start_session'
}
],
name: '<string>',
run_as: {type: 'organization'},
triggers: [
{
conditions: {any: [{all: [{field: '<string>', value: '<string>'}]}]},
replies: []
}
],
concurrency: {max_concurrent_runs: 2, max_queue_depth: 1},
enabled: true,
limits: {invocations: {max_per_window: 2, window_seconds: 61}, max_acu_limit: 500},
metadata: {},
notifications: {email: {recipients: ['<string>']}, slack: {channel_id: '<string>'}},
security_profile: {profile_id: '<string>'},
session_settings: {net_policy: {allow: [{hostname: '<string>'}]}},
slack_reply_access: 'slack_users',
teams_reply_access: 'teams_users',
template_id: '<string>',
tools: {
jira_projects: ['<string>'],
linear_enabled: true,
mcp_servers: [],
slack_channels: [],
teams_channels: []
}
})
};
fetch('https://api.devin.ai/v3/organizations/{org_id}/automations', 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}/automations",
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([
'actions' => [
[
'prompt' => '<string>',
'session' => [
'bypass_approval' => false,
'notifications' => [
'slack' => [
'channel_id' => '<string>'
],
'teams' => [
'channel_id' => '<string>',
'team_id' => '<string>'
]
],
'platform' => '<string>',
'playbook_id' => '<string>',
'repos' => [
],
'tags' => [
]
],
'type' => 'start_session'
]
],
'name' => '<string>',
'run_as' => [
'type' => 'organization'
],
'triggers' => [
[
'conditions' => [
'any' => [
[
'all' => [
[
'field' => '<string>',
'value' => '<string>'
]
]
]
]
],
'replies' => [
]
]
],
'concurrency' => [
'max_concurrent_runs' => 2,
'max_queue_depth' => 1
],
'enabled' => true,
'limits' => [
'invocations' => [
'max_per_window' => 2,
'window_seconds' => 61
],
'max_acu_limit' => 500
],
'metadata' => [
],
'notifications' => [
'email' => [
'recipients' => [
'<string>'
]
],
'slack' => [
'channel_id' => '<string>'
]
],
'security_profile' => [
'profile_id' => '<string>'
],
'session_settings' => [
'net_policy' => [
'allow' => [
[
'hostname' => '<string>'
]
]
]
],
'slack_reply_access' => 'slack_users',
'teams_reply_access' => 'teams_users',
'template_id' => '<string>',
'tools' => [
'jira_projects' => [
'<string>'
],
'linear_enabled' => true,
'mcp_servers' => [
],
'slack_channels' => [
],
'teams_channels' => [
]
]
]),
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}/automations"
payload := strings.NewReader("{\n \"actions\": [\n {\n \"prompt\": \"<string>\",\n \"session\": {\n \"bypass_approval\": false,\n \"notifications\": {\n \"slack\": {\n \"channel_id\": \"<string>\"\n },\n \"teams\": {\n \"channel_id\": \"<string>\",\n \"team_id\": \"<string>\"\n }\n },\n \"platform\": \"<string>\",\n \"playbook_id\": \"<string>\",\n \"repos\": [],\n \"tags\": []\n },\n \"type\": \"start_session\"\n }\n ],\n \"name\": \"<string>\",\n \"run_as\": {\n \"type\": \"organization\"\n },\n \"triggers\": [\n {\n \"conditions\": {\n \"any\": [\n {\n \"all\": [\n {\n \"field\": \"<string>\",\n \"value\": \"<string>\"\n }\n ]\n }\n ]\n },\n \"replies\": []\n }\n ],\n \"concurrency\": {\n \"max_concurrent_runs\": 2,\n \"max_queue_depth\": 1\n },\n \"enabled\": true,\n \"limits\": {\n \"invocations\": {\n \"max_per_window\": 2,\n \"window_seconds\": 61\n },\n \"max_acu_limit\": 500\n },\n \"metadata\": {},\n \"notifications\": {\n \"email\": {\n \"recipients\": [\n \"<string>\"\n ]\n },\n \"slack\": {\n \"channel_id\": \"<string>\"\n }\n },\n \"security_profile\": {\n \"profile_id\": \"<string>\"\n },\n \"session_settings\": {\n \"net_policy\": {\n \"allow\": [\n {\n \"hostname\": \"<string>\"\n }\n ]\n }\n },\n \"slack_reply_access\": \"slack_users\",\n \"teams_reply_access\": \"teams_users\",\n \"template_id\": \"<string>\",\n \"tools\": {\n \"jira_projects\": [\n \"<string>\"\n ],\n \"linear_enabled\": true,\n \"mcp_servers\": [],\n \"slack_channels\": [],\n \"teams_channels\": []\n }\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}/automations")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"actions\": [\n {\n \"prompt\": \"<string>\",\n \"session\": {\n \"bypass_approval\": false,\n \"notifications\": {\n \"slack\": {\n \"channel_id\": \"<string>\"\n },\n \"teams\": {\n \"channel_id\": \"<string>\",\n \"team_id\": \"<string>\"\n }\n },\n \"platform\": \"<string>\",\n \"playbook_id\": \"<string>\",\n \"repos\": [],\n \"tags\": []\n },\n \"type\": \"start_session\"\n }\n ],\n \"name\": \"<string>\",\n \"run_as\": {\n \"type\": \"organization\"\n },\n \"triggers\": [\n {\n \"conditions\": {\n \"any\": [\n {\n \"all\": [\n {\n \"field\": \"<string>\",\n \"value\": \"<string>\"\n }\n ]\n }\n ]\n },\n \"replies\": []\n }\n ],\n \"concurrency\": {\n \"max_concurrent_runs\": 2,\n \"max_queue_depth\": 1\n },\n \"enabled\": true,\n \"limits\": {\n \"invocations\": {\n \"max_per_window\": 2,\n \"window_seconds\": 61\n },\n \"max_acu_limit\": 500\n },\n \"metadata\": {},\n \"notifications\": {\n \"email\": {\n \"recipients\": [\n \"<string>\"\n ]\n },\n \"slack\": {\n \"channel_id\": \"<string>\"\n }\n },\n \"security_profile\": {\n \"profile_id\": \"<string>\"\n },\n \"session_settings\": {\n \"net_policy\": {\n \"allow\": [\n {\n \"hostname\": \"<string>\"\n }\n ]\n }\n },\n \"slack_reply_access\": \"slack_users\",\n \"teams_reply_access\": \"teams_users\",\n \"template_id\": \"<string>\",\n \"tools\": {\n \"jira_projects\": [\n \"<string>\"\n ],\n \"linear_enabled\": true,\n \"mcp_servers\": [],\n \"slack_channels\": [],\n \"teams_channels\": []\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.devin.ai/v3/organizations/{org_id}/automations")
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 \"actions\": [\n {\n \"prompt\": \"<string>\",\n \"session\": {\n \"bypass_approval\": false,\n \"notifications\": {\n \"slack\": {\n \"channel_id\": \"<string>\"\n },\n \"teams\": {\n \"channel_id\": \"<string>\",\n \"team_id\": \"<string>\"\n }\n },\n \"platform\": \"<string>\",\n \"playbook_id\": \"<string>\",\n \"repos\": [],\n \"tags\": []\n },\n \"type\": \"start_session\"\n }\n ],\n \"name\": \"<string>\",\n \"run_as\": {\n \"type\": \"organization\"\n },\n \"triggers\": [\n {\n \"conditions\": {\n \"any\": [\n {\n \"all\": [\n {\n \"field\": \"<string>\",\n \"value\": \"<string>\"\n }\n ]\n }\n ]\n },\n \"replies\": []\n }\n ],\n \"concurrency\": {\n \"max_concurrent_runs\": 2,\n \"max_queue_depth\": 1\n },\n \"enabled\": true,\n \"limits\": {\n \"invocations\": {\n \"max_per_window\": 2,\n \"window_seconds\": 61\n },\n \"max_acu_limit\": 500\n },\n \"metadata\": {},\n \"notifications\": {\n \"email\": {\n \"recipients\": [\n \"<string>\"\n ]\n },\n \"slack\": {\n \"channel_id\": \"<string>\"\n }\n },\n \"security_profile\": {\n \"profile_id\": \"<string>\"\n },\n \"session_settings\": {\n \"net_policy\": {\n \"allow\": [\n {\n \"hostname\": \"<string>\"\n }\n ]\n }\n },\n \"slack_reply_access\": \"slack_users\",\n \"teams_reply_access\": \"teams_users\",\n \"template_id\": \"<string>\",\n \"tools\": {\n \"jira_projects\": [\n \"<string>\"\n ],\n \"linear_enabled\": true,\n \"mcp_servers\": [],\n \"slack_channels\": [],\n \"teams_channels\": []\n }\n}"
response = http.request(request)
puts response.read_body{
"actions": [
{
"prompt": "<string>",
"session": {
"bypass_approval": false,
"notifications": {
"slack": {
"channel_id": "<string>",
"mode": "post_updates"
},
"teams": {
"channel_id": "<string>",
"team_id": "<string>"
}
},
"platform": "<string>",
"playbook_id": "<string>",
"repos": [],
"tags": []
},
"type": "start_session"
}
],
"automation_id": "<string>",
"created_at": 123,
"created_by": {
"id": "<string>",
"type": "user",
"name": "<string>"
},
"enabled": true,
"name": "<string>",
"triggers": [
{
"event_type": "<string>",
"trigger_id": "<string>",
"conditions": {
"any": [
{
"all": [
{
"field": "<string>",
"operator": "eq",
"value": "<string>"
}
]
}
]
},
"replies": [],
"webhook": {
"url": "<string>",
"secret": "<string>"
}
}
],
"updated_at": 123,
"concurrency": {
"max_concurrent_runs": 2,
"max_queue_depth": 1
},
"last_edited_by": {
"id": "<string>",
"type": "user",
"name": "<string>"
},
"last_invocation": {
"fired_at": 123,
"status": "<string>"
},
"limits": {
"invocations": {
"max_per_window": 2,
"window_seconds": 61
},
"max_acu_limit": 500
},
"metadata": {},
"next_run_at": 123,
"notifications": {
"email": {
"when": "always",
"recipients": [
"<string>"
]
},
"slack": {
"channel_id": "<string>",
"when": "always"
}
},
"run_as": {
"type": "organization"
},
"security_profile": {
"selection": "inherit",
"profile_id": "<string>",
"warnings": []
},
"session_settings": {
"devin_mode": "normal",
"net_policy": {
"allow": [
{
"hostname": "<string>"
}
]
}
},
"slack_reply_access": "slack_users",
"teams_reply_access": "teams_users",
"template_id": "<string>",
"tools": {
"jira_projects": [
"<string>"
],
"linear_enabled": true,
"mcp_servers": [],
"slack_channels": [],
"slack_dm_scope": "org_members",
"teams_channels": []
}
}{
"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"
}Permissões
Requer um usuário de serviço ou token de acesso pessoal com a permissãoManageOrgAutomations no nível da organização.
Identidade de execução
O camporun_as é obrigatório. As automações criadas por usuários de serviço devem usar
organization; usuários humanos que fazem chamadas à API e têm a
permissão UsePersonalAutomations podem usar creator para executar sessões com as permissões do criador.
Gatilhos e ações
Uma automação é acionada quando qualquer um dos seustriggers corresponde a um evento e, em seguida, executa suas actions (por exemplo, iniciando uma sessão do Devin com um prompt). Use o endpoint de esquemas de eventos para identificar os tipos de eventos de gatilho compatíveis, seus campos e operadores de condição e os verbos de resposta aceitos por cada tipo de evento.
As conditions de gatilho usam uma estrutura de dois níveis — {"any": [{"all": [...]}]} — com condições no formato {field, operator, value}; um objeto de condições null corresponde a todos os eventos.
Gatilhos de webhook
Uma automação com um gatilhowebhook:incoming (no máximo um) recebe uma URL de entrada e um segredo no momento da criação. O segredo é gerado novamente e retornado quando um gatilho de webhook é readicionado durante uma atualização; ele não pode ser recuperado novamente, portanto, guarde-o ao recebê-lo. Sistemas externos o enviam no cabeçalho X-Webhook-Secret.Autorizações
Credencial de usuário de serviço (prefixo: cog_)
Parâmetros de caminho
ID da organização (prefixo: org-)
"org-abc123def456"
Corpo
Não vazio. Limites: no máximo um start_session; monitor_session deve ser a única ação.
- AutomationStartSessionAction
- AutomationMessageSessionAction
- AutomationMonitorSessionAction
Show child attributes
Show child attributes
1 - 500Obrigatório: escolha explicitamente a identidade sob a qual as sessões geradas são executadas (organization, creator ou service_user).
- AutomationRunAsOrganization
- AutomationRunAsCreator
- AutomationRunAsServiceUser
Show child attributes
Show child attributes
É acionada quando qualquer acionador corresponde, uma vez por evento. No máximo um acionador webhook:incoming.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Rótulos de chave-valor visíveis na organização para organizar e filtrar automações. No máximo 16 pares; chaves com no máximo 32 caracteres; valores com no máximo 128.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
A associação da automação ao perfil de segurança; se omitida, herda da organização/Enterprise. Requer a permissão de gerenciamento de perfis de segurança.
Show child attributes
Show child attributes
Aplicado às sessões geradas por esta automação.
Show child attributes
Show child attributes
Quem pode responder em sessões existentes a partir de threads do Slack: devin_users (somente contas do Devin vinculadas), slack_users (qualquer pessoa nos workspaces do Slack conectados à organização) ou external_slack_users (inclui também usuários do Slack Connect). Não afeta quem pode acionar a automação.
devin_users, slack_users, external_slack_users Quem pode responder em sessões existentes a partir de threads do Microsoft Teams: devin_users (somente contas do Devin vinculadas) ou teams_users (qualquer pessoa no tenant da Microsoft conectado à organização; opção padrão). Não afeta quem pode acionar a automação.
devin_users, teams_users Marcador de procedência exclusivo da criação; resolva IDs por meio do endpoint de templates. Quando definido e tools.mcp_servers é omitido, os required_mcps do template são aplicados.
Show child attributes
Show child attributes
Resposta
Resposta bem-sucedida
- AutomationStartSessionAction
- AutomationMessageSessionAction
- AutomationMonitorSessionAction
Show child attributes
Show child attributes
Um principal de usuário ou de usuário de serviço atribuído a uma ação ou recurso.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Um principal de usuário ou de usuário de serviço atribuído a uma ação ou recurso.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Quando ocorrerá o próximo acionamento dos agendamentos da automação. null quando a automação não tem acionamento por agendamento, está desativada ou todos os agendamentos já passaram da data de término.
Show child attributes
Show child attributes
Identidade sob a qual as sessões geradas são executadas. organization: a identidade de automação da organização (o Usuário do sistema no app) — as sessões usam permissões do sistema; portanto, servidores MCP instalados com uma conexão pessoal (com escopo de usuário) não podem ser selecionados, e alterar uma automação para organization os remove da seleção. creator: automação pessoal — é executada com as permissões do próprio criador e fica visível apenas para o criador e administradores da organização; rejeitada para automações criadas por usuário de serviço. service_user: é executada como o usuário de serviço indicado, com suas roles, concessões de acesso e limites de ACU; exige permissão para gerenciar esse usuário de serviço. Obrigatório na criação; null na atualização redefine para organization.
- AutomationRunAsOrganization
- AutomationRunAsCreator
- AutomationRunAsServiceUser
Show child attributes
Show child attributes
A associação da automação ao perfil de segurança e os perfis aplicáveis determinados. null quando os perfis de segurança não estão ativados para a organização.
Show child attributes
Show child attributes
Aplicado a todas as sessões geradas por esta automação (incluindo sessões de monitoramento).
Show child attributes
Show child attributes
Quem pode responder em sessões existentes a partir de threads do Slack: devin_users (apenas contas do Devin vinculadas), slack_users (qualquer pessoa nos workspaces do Slack conectados à organização) ou external_slack_users (inclui também usuários do Slack Connect). Não afeta quem pode acionar a automação.
devin_users, slack_users, external_slack_users Quem pode responder em sessões existentes a partir de threads do Microsoft Teams: devin_users (apenas contas do Devin vinculadas) ou teams_users (qualquer pessoa no tenant da Microsoft conectado à organização; opção padrão). Não afeta quem pode acionar a automação.
devin_users, teams_users Show child attributes
Show child attributes

