curl -X POST "https://app.runtm.com/api/cloud/sessions/ses_abc123/start" \
-H "Authorization: Bearer runtm_xxx"
import requests
response = requests.post(
"https://app.runtm.com/api/cloud/sessions/ses_abc123/start",
headers={"Authorization": "Bearer runtm_xxx"},
)
session = response.json()
print(f"Started: {session['sandbox_url']}")
const response = await fetch(
"https://app.runtm.com/api/cloud/sessions/ses_abc123/start",
{
method: "POST",
headers: { "Authorization": "Bearer runtm_xxx" },
}
);
const session = await response.json();
console.log(`Started: ${session.sandbox_url}`);
{
"id": "ses_abc123",
"name": "API refactor",
"state": "active",
"agent": "claude-code",
"sandbox_url": "https://ses-abc123.runtm.dev",
"updated_at": "2026-05-09T21:35:00Z"
}
Lifecycle
Start Session (legacy)
Legacy cold-start endpoint - prefer the v2 sandbox lifecycle endpoint
POST
/
api
/
sessions
/
{session_id}
/
start
curl -X POST "https://app.runtm.com/api/cloud/sessions/ses_abc123/start" \
-H "Authorization: Bearer runtm_xxx"
import requests
response = requests.post(
"https://app.runtm.com/api/cloud/sessions/ses_abc123/start",
headers={"Authorization": "Bearer runtm_xxx"},
)
session = response.json()
print(f"Started: {session['sandbox_url']}")
const response = await fetch(
"https://app.runtm.com/api/cloud/sessions/ses_abc123/start",
{
method: "POST",
headers: { "Authorization": "Bearer runtm_xxx" },
}
);
const session = await response.json();
console.log(`Started: ${session.sandbox_url}`);
{
"id": "ses_abc123",
"name": "API refactor",
"state": "active",
"agent": "claude-code",
"sandbox_url": "https://ses-abc123.runtm.dev",
"updated_at": "2026-05-09T21:35:00Z"
}
Deprecated. This endpoint conflates sandbox lifecycle with dev-server orchestration. New integrations should use
POST /api/v2/sessions/{id}/start, which only handles sandbox lifecycle, plus POST /api/v2/sessions/{id}/connect when you need a preview URL for a specific port.active.
Required scope: sessions:write
Path Parameters
string
required
The session ID (e.g.
ses_abc123).Headers
string
required
Bearer token. Example:
Bearer runtm_xxxstring
Scope to an organization.
Response
Returns the updated session object withstate: "active".
string
Session ID.
string
Updated state (
active).string
URL of the provisioned sandbox.
curl -X POST "https://app.runtm.com/api/cloud/sessions/ses_abc123/start" \
-H "Authorization: Bearer runtm_xxx"
import requests
response = requests.post(
"https://app.runtm.com/api/cloud/sessions/ses_abc123/start",
headers={"Authorization": "Bearer runtm_xxx"},
)
session = response.json()
print(f"Started: {session['sandbox_url']}")
const response = await fetch(
"https://app.runtm.com/api/cloud/sessions/ses_abc123/start",
{
method: "POST",
headers: { "Authorization": "Bearer runtm_xxx" },
}
);
const session = await response.json();
console.log(`Started: ${session.sandbox_url}`);
{
"id": "ses_abc123",
"name": "API refactor",
"state": "active",
"agent": "claude-code",
"sandbox_url": "https://ses-abc123.runtm.dev",
"updated_at": "2026-05-09T21:35:00Z"
}