Create a PTY session
curl --request POST \
--url https://{identifier}.sandbox.tensorlake.ai/api/v1/pty \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"command": "<string>",
"args": [
"<string>"
],
"env": {},
"working_dir": "<string>",
"rows": 123,
"cols": 123
}
'import requests
url = "https://{identifier}.sandbox.tensorlake.ai/api/v1/pty"
payload = {
"command": "<string>",
"args": ["<string>"],
"env": {},
"working_dir": "<string>",
"rows": 123,
"cols": 123
}
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({
command: '<string>',
args: ['<string>'],
env: {},
working_dir: '<string>',
rows: 123,
cols: 123
})
};
fetch('https://{identifier}.sandbox.tensorlake.ai/api/v1/pty', 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://{identifier}.sandbox.tensorlake.ai/api/v1/pty",
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([
'command' => '<string>',
'args' => [
'<string>'
],
'env' => [
],
'working_dir' => '<string>',
'rows' => 123,
'cols' => 123
]),
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://{identifier}.sandbox.tensorlake.ai/api/v1/pty"
payload := strings.NewReader("{\n \"command\": \"<string>\",\n \"args\": [\n \"<string>\"\n ],\n \"env\": {},\n \"working_dir\": \"<string>\",\n \"rows\": 123,\n \"cols\": 123\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://{identifier}.sandbox.tensorlake.ai/api/v1/pty")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"command\": \"<string>\",\n \"args\": [\n \"<string>\"\n ],\n \"env\": {},\n \"working_dir\": \"<string>\",\n \"rows\": 123,\n \"cols\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{identifier}.sandbox.tensorlake.ai/api/v1/pty")
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 \"command\": \"<string>\",\n \"args\": [\n \"<string>\"\n ],\n \"env\": {},\n \"working_dir\": \"<string>\",\n \"rows\": 123,\n \"cols\": 123\n}"
response = http.request(request)
puts response.read_body{
"session_id": "<string>",
"token": "<string>"
}{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}PTY Sessions
Create PTY Session
Create a PTY-backed interactive terminal session through the sandbox proxy.
POST
/
api
/
v1
/
pty
Create a PTY session
curl --request POST \
--url https://{identifier}.sandbox.tensorlake.ai/api/v1/pty \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"command": "<string>",
"args": [
"<string>"
],
"env": {},
"working_dir": "<string>",
"rows": 123,
"cols": 123
}
'import requests
url = "https://{identifier}.sandbox.tensorlake.ai/api/v1/pty"
payload = {
"command": "<string>",
"args": ["<string>"],
"env": {},
"working_dir": "<string>",
"rows": 123,
"cols": 123
}
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({
command: '<string>',
args: ['<string>'],
env: {},
working_dir: '<string>',
rows: 123,
cols: 123
})
};
fetch('https://{identifier}.sandbox.tensorlake.ai/api/v1/pty', 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://{identifier}.sandbox.tensorlake.ai/api/v1/pty",
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([
'command' => '<string>',
'args' => [
'<string>'
],
'env' => [
],
'working_dir' => '<string>',
'rows' => 123,
'cols' => 123
]),
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://{identifier}.sandbox.tensorlake.ai/api/v1/pty"
payload := strings.NewReader("{\n \"command\": \"<string>\",\n \"args\": [\n \"<string>\"\n ],\n \"env\": {},\n \"working_dir\": \"<string>\",\n \"rows\": 123,\n \"cols\": 123\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://{identifier}.sandbox.tensorlake.ai/api/v1/pty")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"command\": \"<string>\",\n \"args\": [\n \"<string>\"\n ],\n \"env\": {},\n \"working_dir\": \"<string>\",\n \"rows\": 123,\n \"cols\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{identifier}.sandbox.tensorlake.ai/api/v1/pty")
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 \"command\": \"<string>\",\n \"args\": [\n \"<string>\"\n ],\n \"env\": {},\n \"working_dir\": \"<string>\",\n \"rows\": 123,\n \"cols\": 123\n}"
response = http.request(request)
puts response.read_body{
"session_id": "<string>",
"token": "<string>"
}{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}Create a PTY session for interactive terminal access.
Use this endpoint on the sandbox proxy host:
Use
Endpoint
POST /api/v1/pty
https://<sandbox-id-or-name>.sandbox.tensorlake.ai/api/v1/pty
Example Request
curl -X POST https://<sandbox-id>.sandbox.tensorlake.ai/api/v1/pty \
-H "Authorization: Bearer $TENSORLAKE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"command": "/bin/bash",
"args": ["-l"],
"env": {"TERM": "xterm-256color"},
"working_dir": "/workspace",
"rows": 24,
"cols": 80
}'
Request Body
{
"command": "/bin/bash",
"args": ["-l"],
"env": {"TERM": "xterm-256color"},
"working_dir": "/workspace",
"rows": 24,
"cols": 80
}
commandis required.argsis optional.envis optional.working_diris optional.rowsandcolsare optional and default to24and80.- Tensorlake clamps
rowsto1..500andcolsto1..1000.
Response
Tensorlake returns201 Created:
{
"session_id": "LYtJOrxE9Kz3bphPUDzuX",
"token": "<pty-session-token>"
}
session_id with the other PTY endpoints. Use token when connecting to the PTY WebSocket.
If the sandbox already has 64 PTY sessions, Tensorlake returns 429 Too Many Requests with code TOO_MANY_SESSIONS.Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
application/json
Was this page helpful?
⌘I