JavaScript
import Kernel from '@onkernel/sdk';
const client = new Kernel({
apiKey: process.env['KERNEL_API_KEY'], // This is the default and can be omitted
});
const response = await client.browsers.process.spawn('id', { command: 'command' });
console.log(response.pid);import os
from kernel import Kernel
client = Kernel(
api_key=os.environ.get("KERNEL_API_KEY"), # This is the default and can be omitted
)
response = client.browsers.process.spawn(
id="id",
command="command",
)
print(response.pid)package main
import (
"context"
"fmt"
"github.com/kernel/kernel-go-sdk"
"github.com/kernel/kernel-go-sdk/option"
)
func main() {
client := kernel.NewClient(
option.WithAPIKey("My API Key"),
)
response, err := client.Browsers.Process.Spawn(
context.TODO(),
"id",
kernel.BrowserProcessSpawnParams{
Command: "command",
},
)
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", response.Pid)
}curl --request POST \
--url https://api.onkernel.com/browsers/{id}/process/spawn \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"command": "<string>",
"args": [],
"cwd": "<string>",
"env": {},
"as_user": "<string>",
"as_root": false,
"timeout_sec": 123,
"allocate_tty": false,
"rows": 32768,
"cols": 32768
}
'<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.onkernel.com/browsers/{id}/process/spawn",
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' => [
],
'cwd' => '<string>',
'env' => [
],
'as_user' => '<string>',
'as_root' => false,
'timeout_sec' => 123,
'allocate_tty' => false,
'rows' => 32768,
'cols' => 32768
]),
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;
}HttpResponse<String> response = Unirest.post("https://api.onkernel.com/browsers/{id}/process/spawn")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"command\": \"<string>\",\n \"args\": [],\n \"cwd\": \"<string>\",\n \"env\": {},\n \"as_user\": \"<string>\",\n \"as_root\": false,\n \"timeout_sec\": 123,\n \"allocate_tty\": false,\n \"rows\": 32768,\n \"cols\": 32768\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.onkernel.com/browsers/{id}/process/spawn")
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 \"cwd\": \"<string>\",\n \"env\": {},\n \"as_user\": \"<string>\",\n \"as_root\": false,\n \"timeout_sec\": 123,\n \"allocate_tty\": false,\n \"rows\": 32768,\n \"cols\": 32768\n}"
response = http.request(request)
puts response.read_body{
"process_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"pid": 123,
"started_at": "2023-11-07T05:31:56Z"
}{
"code": "bad_request",
"message": "Missing required field: app_name",
"details": [
{
"code": "invalid_input",
"message": "Provided version string is not semver compliant"
}
],
"inner_error": {
"code": "invalid_input",
"message": "Provided version string is not semver compliant"
}
}{
"code": "bad_request",
"message": "Missing required field: app_name",
"details": [
{
"code": "invalid_input",
"message": "Provided version string is not semver compliant"
}
],
"inner_error": {
"code": "invalid_input",
"message": "Provided version string is not semver compliant"
}
}{
"code": "bad_request",
"message": "Missing required field: app_name",
"details": [
{
"code": "invalid_input",
"message": "Provided version string is not semver compliant"
}
],
"inner_error": {
"code": "invalid_input",
"message": "Provided version string is not semver compliant"
}
}Browser Processes
Execute a command asynchronously
POST
/
browsers
/
{id}
/
process
/
spawn
JavaScript
import Kernel from '@onkernel/sdk';
const client = new Kernel({
apiKey: process.env['KERNEL_API_KEY'], // This is the default and can be omitted
});
const response = await client.browsers.process.spawn('id', { command: 'command' });
console.log(response.pid);import os
from kernel import Kernel
client = Kernel(
api_key=os.environ.get("KERNEL_API_KEY"), # This is the default and can be omitted
)
response = client.browsers.process.spawn(
id="id",
command="command",
)
print(response.pid)package main
import (
"context"
"fmt"
"github.com/kernel/kernel-go-sdk"
"github.com/kernel/kernel-go-sdk/option"
)
func main() {
client := kernel.NewClient(
option.WithAPIKey("My API Key"),
)
response, err := client.Browsers.Process.Spawn(
context.TODO(),
"id",
kernel.BrowserProcessSpawnParams{
Command: "command",
},
)
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", response.Pid)
}curl --request POST \
--url https://api.onkernel.com/browsers/{id}/process/spawn \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"command": "<string>",
"args": [],
"cwd": "<string>",
"env": {},
"as_user": "<string>",
"as_root": false,
"timeout_sec": 123,
"allocate_tty": false,
"rows": 32768,
"cols": 32768
}
'<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.onkernel.com/browsers/{id}/process/spawn",
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' => [
],
'cwd' => '<string>',
'env' => [
],
'as_user' => '<string>',
'as_root' => false,
'timeout_sec' => 123,
'allocate_tty' => false,
'rows' => 32768,
'cols' => 32768
]),
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;
}HttpResponse<String> response = Unirest.post("https://api.onkernel.com/browsers/{id}/process/spawn")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"command\": \"<string>\",\n \"args\": [],\n \"cwd\": \"<string>\",\n \"env\": {},\n \"as_user\": \"<string>\",\n \"as_root\": false,\n \"timeout_sec\": 123,\n \"allocate_tty\": false,\n \"rows\": 32768,\n \"cols\": 32768\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.onkernel.com/browsers/{id}/process/spawn")
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 \"cwd\": \"<string>\",\n \"env\": {},\n \"as_user\": \"<string>\",\n \"as_root\": false,\n \"timeout_sec\": 123,\n \"allocate_tty\": false,\n \"rows\": 32768,\n \"cols\": 32768\n}"
response = http.request(request)
puts response.read_body{
"process_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"pid": 123,
"started_at": "2023-11-07T05:31:56Z"
}{
"code": "bad_request",
"message": "Missing required field: app_name",
"details": [
{
"code": "invalid_input",
"message": "Provided version string is not semver compliant"
}
],
"inner_error": {
"code": "invalid_input",
"message": "Provided version string is not semver compliant"
}
}{
"code": "bad_request",
"message": "Missing required field: app_name",
"details": [
{
"code": "invalid_input",
"message": "Provided version string is not semver compliant"
}
],
"inner_error": {
"code": "invalid_input",
"message": "Provided version string is not semver compliant"
}
}{
"code": "bad_request",
"message": "Missing required field: app_name",
"details": [
{
"code": "invalid_input",
"message": "Provided version string is not semver compliant"
}
],
"inner_error": {
"code": "invalid_input",
"message": "Provided version string is not semver compliant"
}
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Browser session ID
Body
application/json
Request to execute a command synchronously.
Executable or shell command to run.
Command arguments.
Working directory (absolute path) to run the command in.
Pattern:
^/.*Environment variables to set for the process.
Show child attributes
Show child attributes
Run the process as this user.
Run the process with root privileges.
Maximum execution time in seconds.
Allocate a pseudo-terminal (PTY) for interactive shells.
Initial terminal rows. Only used when allocate_tty is true.
Required range:
1 <= x <= 65535Initial terminal columns. Only used when allocate_tty is true.
Required range:
1 <= x <= 65535⌘I