Update a session
Update a session: archive or restore it, set priority, rename it, change agent/model, switch between Build (normal) and Plan (planning) modes, configure its workspace and branches, or change visibility between private and visible to workspace (public). Archiving uses level=0; restoring archived sessions uses level=1 and does not restart work. Use pins to pin or unpin sessions.
import Tembo from '@tembo-io/sdk';
const client = new Tembo();
const session = await client.sessions.update('7c9e6679-7425-40de-944b-e07fc1f90ae7', {});
use tembo_rs::*;
let client = Tembo::from_env()?;
let response = client
.sessions()
.update(
"7c9e6679-7425-40de-944b-e07fc1f90ae7",
SessionsUpdateBody {
agent: None,
agent_options: None,
base_branch: None,
branch_name: None,
description: None,
rich_content: None,
level: None,
mcp_servers: None,
mode: None,
project_id: None,
sandbox_size: None,
target_branch: None,
title: None,
visibility: None,
},
)
.send()
.await?;
curl --request PATCH \
--url https://api.tembo.io/v1/sessions/{sessionId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"agent": "<string>",
"agentOptions": {
"reasoningLevel": "<string>",
"goal": {
"enabled": true,
"objective": "<string>"
},
"ultracode": true
},
"baseBranch": "<string>",
"branchName": "<string>",
"description": "<string>",
"richContent": {
"type": "doc",
"content": [
{
"type": "paragraph",
"content": [
{
"type": "text",
"text": "Hello"
}
]
}
]
},
"level": 50,
"mcpServers": [
"<string>"
],
"projectId": "<string>",
"targetBranch": "<string>",
"title": "<string>"
}
'import requests
url = "https://api.tembo.io/v1/sessions/{sessionId}"
payload = {
"agent": "<string>",
"agentOptions": {
"reasoningLevel": "<string>",
"goal": {
"enabled": True,
"objective": "<string>"
},
"ultracode": True
},
"baseBranch": "<string>",
"branchName": "<string>",
"description": "<string>",
"richContent": {
"type": "doc",
"content": [
{
"type": "paragraph",
"content": [
{
"type": "text",
"text": "Hello"
}
]
}
]
},
"level": 50,
"mcpServers": ["<string>"],
"projectId": "<string>",
"targetBranch": "<string>",
"title": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
agent: '<string>',
agentOptions: {
reasoningLevel: '<string>',
goal: {enabled: true, objective: '<string>'},
ultracode: true
},
baseBranch: '<string>',
branchName: '<string>',
description: '<string>',
richContent: {
type: 'doc',
content: [{type: 'paragraph', content: [{type: 'text', text: 'Hello'}]}]
},
level: 50,
mcpServers: ['<string>'],
projectId: '<string>',
targetBranch: '<string>',
title: '<string>'
})
};
fetch('https://api.tembo.io/v1/sessions/{sessionId}', 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.tembo.io/v1/sessions/{sessionId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'agent' => '<string>',
'agentOptions' => [
'reasoningLevel' => '<string>',
'goal' => [
'enabled' => true,
'objective' => '<string>'
],
'ultracode' => true
],
'baseBranch' => '<string>',
'branchName' => '<string>',
'description' => '<string>',
'richContent' => [
'type' => 'doc',
'content' => [
[
'type' => 'paragraph',
'content' => [
[
'type' => 'text',
'text' => 'Hello'
]
]
]
]
],
'level' => 50,
'mcpServers' => [
'<string>'
],
'projectId' => '<string>',
'targetBranch' => '<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.tembo.io/v1/sessions/{sessionId}"
payload := strings.NewReader("{\n \"agent\": \"<string>\",\n \"agentOptions\": {\n \"reasoningLevel\": \"<string>\",\n \"goal\": {\n \"enabled\": true,\n \"objective\": \"<string>\"\n },\n \"ultracode\": true\n },\n \"baseBranch\": \"<string>\",\n \"branchName\": \"<string>\",\n \"description\": \"<string>\",\n \"richContent\": {\n \"type\": \"doc\",\n \"content\": [\n {\n \"type\": \"paragraph\",\n \"content\": [\n {\n \"type\": \"text\",\n \"text\": \"Hello\"\n }\n ]\n }\n ]\n },\n \"level\": 50,\n \"mcpServers\": [\n \"<string>\"\n ],\n \"projectId\": \"<string>\",\n \"targetBranch\": \"<string>\",\n \"title\": \"<string>\"\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://api.tembo.io/v1/sessions/{sessionId}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"agent\": \"<string>\",\n \"agentOptions\": {\n \"reasoningLevel\": \"<string>\",\n \"goal\": {\n \"enabled\": true,\n \"objective\": \"<string>\"\n },\n \"ultracode\": true\n },\n \"baseBranch\": \"<string>\",\n \"branchName\": \"<string>\",\n \"description\": \"<string>\",\n \"richContent\": {\n \"type\": \"doc\",\n \"content\": [\n {\n \"type\": \"paragraph\",\n \"content\": [\n {\n \"type\": \"text\",\n \"text\": \"Hello\"\n }\n ]\n }\n ]\n },\n \"level\": 50,\n \"mcpServers\": [\n \"<string>\"\n ],\n \"projectId\": \"<string>\",\n \"targetBranch\": \"<string>\",\n \"title\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.tembo.io/v1/sessions/{sessionId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"agent\": \"<string>\",\n \"agentOptions\": {\n \"reasoningLevel\": \"<string>\",\n \"goal\": {\n \"enabled\": true,\n \"objective\": \"<string>\"\n },\n \"ultracode\": true\n },\n \"baseBranch\": \"<string>\",\n \"branchName\": \"<string>\",\n \"description\": \"<string>\",\n \"richContent\": {\n \"type\": \"doc\",\n \"content\": [\n {\n \"type\": \"paragraph\",\n \"content\": [\n {\n \"type\": \"text\",\n \"text\": \"Hello\"\n }\n ]\n }\n ]\n },\n \"level\": 50,\n \"mcpServers\": [\n \"<string>\"\n ],\n \"projectId\": \"<string>\",\n \"targetBranch\": \"<string>\",\n \"title\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"agent": "<string>",
"agentId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"artifactType": "PullRequest",
"baseBranch": "<string>",
"branchName": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"externalId": "<string>",
"externalUrl": "<string>",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"kind": "<string>",
"lastQueuedAt": "2023-11-07T05:31:56Z",
"lastSeenAt": "2023-11-07T05:31:56Z",
"level": 123,
"mode": "normal",
"projectId": "<string>",
"sandboxSize": "nano",
"sessionType": "Chat",
"targetBranch": "<string>",
"title": "<string>",
"updatedAt": "2023-11-07T05:31:56Z",
"visibility": "public",
"artifacts": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "PullRequest",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"pullRequests": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"url": "<string>",
"title": "<string>",
"status": "open",
"isDraft": true,
"sourceBranch": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"agent": "<string>",
"diff": {
"additions": 1,
"deletions": 1,
"data": "<string>"
},
"updatedAt": "2023-11-07T05:31:56Z",
"baseBranch": "<string>",
"headSha": "<string>",
"author": {
"avatarUrl": "<string>",
"login": "<string>"
},
"codeRepository": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"owner": "<string>",
"baseBranch": "<string>",
"provider": "<string>"
}
}
]
}
],
"description": "<string>",
"diffSummary": {
"additions": 123,
"deletions": 123
},
"htmlUrl": "<string>",
"isPinned": true,
"project": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"icon": "folder",
"color": "neutral"
},
"sessionSource": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"type": "<string>",
"repositories": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"provider": "<string>"
}
]
},
"sourcePullRequest": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"url": "<string>",
"title": "<string>",
"status": "open",
"isDraft": true
},
"state": {
"isQueued": true,
"isCancelled": true,
"isCompleted": true,
"isFailed": true,
"inProgress": true,
"current": "inProgress"
}
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Body
Change the agent and model key. Null clears the session override.
1 - 500Change agent-specific runtime options, such as reasoning effort.
Show child attributes
Show child attributes
Change the starting Git branch. Null clears the session override.
1 - 500Change the session Git branch name. Null clears the stored name.
1 - 500Replace the initial task prompt; only the session creator can change it. Use createMessage to send a follow-up task.
1 - 1000000Replace the initial prompt rich-text document, or null to clear it. Only the session creator can change it.
- Option 1
- Option 2
- Option 3
- Option 4
- Option 5
- Option 6
- Option 7
- Option 8
Show child attributes
Show child attributes
{ "type": "doc", "content": [ { "type": "paragraph", "content": [{ "type": "text", "text": "Hello" }] } ] }
Archive or restore the session and set its priority: 0 archives and stops its VM; 1 restores without restarting work; 2–100 also keep it unarchived and set its priority level. Omit to preserve the current level.
0 <= x <= 100Replace the enabled MCP server or connection IDs. An empty array clears the selection.
1001 - 500Switch between Build (normal) and Plan (planning) modes.
normal, planning Change the project environment used for the workspace. Null clears the session override.
Change the workspace VM size. Null clears the session override.
nano, micro, small, medium, large, xl, xxl, ultra, null Change the default pull request target branch. Null clears the session override.
1 - 500Rename the session.
1 - 1000Change session visibility: private or visible to workspace (public). Only the session creator can change it.
private, public Response
Update a session
PullRequest, ToolCall, Plan, Response, File, Service, Source, null normal, planning nano, micro, small, medium, large, xl, xxl, ultra, null Chat, Terminal public, private Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Was this page helpful?
import Tembo from '@tembo-io/sdk';
const client = new Tembo();
const session = await client.sessions.update('7c9e6679-7425-40de-944b-e07fc1f90ae7', {});
use tembo_rs::*;
let client = Tembo::from_env()?;
let response = client
.sessions()
.update(
"7c9e6679-7425-40de-944b-e07fc1f90ae7",
SessionsUpdateBody {
agent: None,
agent_options: None,
base_branch: None,
branch_name: None,
description: None,
rich_content: None,
level: None,
mcp_servers: None,
mode: None,
project_id: None,
sandbox_size: None,
target_branch: None,
title: None,
visibility: None,
},
)
.send()
.await?;
curl --request PATCH \
--url https://api.tembo.io/v1/sessions/{sessionId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"agent": "<string>",
"agentOptions": {
"reasoningLevel": "<string>",
"goal": {
"enabled": true,
"objective": "<string>"
},
"ultracode": true
},
"baseBranch": "<string>",
"branchName": "<string>",
"description": "<string>",
"richContent": {
"type": "doc",
"content": [
{
"type": "paragraph",
"content": [
{
"type": "text",
"text": "Hello"
}
]
}
]
},
"level": 50,
"mcpServers": [
"<string>"
],
"projectId": "<string>",
"targetBranch": "<string>",
"title": "<string>"
}
'import requests
url = "https://api.tembo.io/v1/sessions/{sessionId}"
payload = {
"agent": "<string>",
"agentOptions": {
"reasoningLevel": "<string>",
"goal": {
"enabled": True,
"objective": "<string>"
},
"ultracode": True
},
"baseBranch": "<string>",
"branchName": "<string>",
"description": "<string>",
"richContent": {
"type": "doc",
"content": [
{
"type": "paragraph",
"content": [
{
"type": "text",
"text": "Hello"
}
]
}
]
},
"level": 50,
"mcpServers": ["<string>"],
"projectId": "<string>",
"targetBranch": "<string>",
"title": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
agent: '<string>',
agentOptions: {
reasoningLevel: '<string>',
goal: {enabled: true, objective: '<string>'},
ultracode: true
},
baseBranch: '<string>',
branchName: '<string>',
description: '<string>',
richContent: {
type: 'doc',
content: [{type: 'paragraph', content: [{type: 'text', text: 'Hello'}]}]
},
level: 50,
mcpServers: ['<string>'],
projectId: '<string>',
targetBranch: '<string>',
title: '<string>'
})
};
fetch('https://api.tembo.io/v1/sessions/{sessionId}', 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.tembo.io/v1/sessions/{sessionId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'agent' => '<string>',
'agentOptions' => [
'reasoningLevel' => '<string>',
'goal' => [
'enabled' => true,
'objective' => '<string>'
],
'ultracode' => true
],
'baseBranch' => '<string>',
'branchName' => '<string>',
'description' => '<string>',
'richContent' => [
'type' => 'doc',
'content' => [
[
'type' => 'paragraph',
'content' => [
[
'type' => 'text',
'text' => 'Hello'
]
]
]
]
],
'level' => 50,
'mcpServers' => [
'<string>'
],
'projectId' => '<string>',
'targetBranch' => '<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.tembo.io/v1/sessions/{sessionId}"
payload := strings.NewReader("{\n \"agent\": \"<string>\",\n \"agentOptions\": {\n \"reasoningLevel\": \"<string>\",\n \"goal\": {\n \"enabled\": true,\n \"objective\": \"<string>\"\n },\n \"ultracode\": true\n },\n \"baseBranch\": \"<string>\",\n \"branchName\": \"<string>\",\n \"description\": \"<string>\",\n \"richContent\": {\n \"type\": \"doc\",\n \"content\": [\n {\n \"type\": \"paragraph\",\n \"content\": [\n {\n \"type\": \"text\",\n \"text\": \"Hello\"\n }\n ]\n }\n ]\n },\n \"level\": 50,\n \"mcpServers\": [\n \"<string>\"\n ],\n \"projectId\": \"<string>\",\n \"targetBranch\": \"<string>\",\n \"title\": \"<string>\"\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://api.tembo.io/v1/sessions/{sessionId}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"agent\": \"<string>\",\n \"agentOptions\": {\n \"reasoningLevel\": \"<string>\",\n \"goal\": {\n \"enabled\": true,\n \"objective\": \"<string>\"\n },\n \"ultracode\": true\n },\n \"baseBranch\": \"<string>\",\n \"branchName\": \"<string>\",\n \"description\": \"<string>\",\n \"richContent\": {\n \"type\": \"doc\",\n \"content\": [\n {\n \"type\": \"paragraph\",\n \"content\": [\n {\n \"type\": \"text\",\n \"text\": \"Hello\"\n }\n ]\n }\n ]\n },\n \"level\": 50,\n \"mcpServers\": [\n \"<string>\"\n ],\n \"projectId\": \"<string>\",\n \"targetBranch\": \"<string>\",\n \"title\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.tembo.io/v1/sessions/{sessionId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"agent\": \"<string>\",\n \"agentOptions\": {\n \"reasoningLevel\": \"<string>\",\n \"goal\": {\n \"enabled\": true,\n \"objective\": \"<string>\"\n },\n \"ultracode\": true\n },\n \"baseBranch\": \"<string>\",\n \"branchName\": \"<string>\",\n \"description\": \"<string>\",\n \"richContent\": {\n \"type\": \"doc\",\n \"content\": [\n {\n \"type\": \"paragraph\",\n \"content\": [\n {\n \"type\": \"text\",\n \"text\": \"Hello\"\n }\n ]\n }\n ]\n },\n \"level\": 50,\n \"mcpServers\": [\n \"<string>\"\n ],\n \"projectId\": \"<string>\",\n \"targetBranch\": \"<string>\",\n \"title\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"agent": "<string>",
"agentId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"artifactType": "PullRequest",
"baseBranch": "<string>",
"branchName": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"externalId": "<string>",
"externalUrl": "<string>",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"kind": "<string>",
"lastQueuedAt": "2023-11-07T05:31:56Z",
"lastSeenAt": "2023-11-07T05:31:56Z",
"level": 123,
"mode": "normal",
"projectId": "<string>",
"sandboxSize": "nano",
"sessionType": "Chat",
"targetBranch": "<string>",
"title": "<string>",
"updatedAt": "2023-11-07T05:31:56Z",
"visibility": "public",
"artifacts": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "PullRequest",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"pullRequests": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"url": "<string>",
"title": "<string>",
"status": "open",
"isDraft": true,
"sourceBranch": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"agent": "<string>",
"diff": {
"additions": 1,
"deletions": 1,
"data": "<string>"
},
"updatedAt": "2023-11-07T05:31:56Z",
"baseBranch": "<string>",
"headSha": "<string>",
"author": {
"avatarUrl": "<string>",
"login": "<string>"
},
"codeRepository": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"owner": "<string>",
"baseBranch": "<string>",
"provider": "<string>"
}
}
]
}
],
"description": "<string>",
"diffSummary": {
"additions": 123,
"deletions": 123
},
"htmlUrl": "<string>",
"isPinned": true,
"project": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"icon": "folder",
"color": "neutral"
},
"sessionSource": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"type": "<string>",
"repositories": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"provider": "<string>"
}
]
},
"sourcePullRequest": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"url": "<string>",
"title": "<string>",
"status": "open",
"isDraft": true
},
"state": {
"isQueued": true,
"isCancelled": true,
"isCompleted": true,
"isFailed": true,
"inProgress": true,
"current": "inProgress"
}
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}