curl --request POST \
--url https://api.onkernel.com/auth/connections/{id}/login \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"browser": {
"proxy": {
"id": "<string>",
"name": "<string>"
},
"stealth": false,
"telemetry": {
"browser": {
"captcha": {
"enabled": true
},
"connection": {
"enabled": true
},
"console": {
"enabled": true
},
"control": {
"enabled": true
},
"interaction": {
"enabled": true
},
"network": {
"enabled": true
},
"page": {
"enabled": true
},
"screenshot": {
"enabled": true
},
"system": {
"enabled": true
}
},
"enabled": true,
"export": {
"otlp": {
"destination": {
"id": "<string>",
"name": "<string>"
},
"enabled": true
}
}
}
},
"browser_telemetry": {
"browser": {
"captcha": {
"enabled": true
},
"connection": {
"enabled": true
},
"console": {
"enabled": true
},
"control": {
"enabled": true
},
"interaction": {
"enabled": true
},
"network": {
"enabled": true
},
"page": {
"enabled": true
},
"screenshot": {
"enabled": true
},
"system": {
"enabled": true
}
},
"enabled": true,
"export": {
"otlp": {
"destination": {
"id": "<string>",
"name": "<string>"
},
"enabled": true
}
}
},
"proxy": {
"id": "<string>",
"name": "<string>"
},
"record_session": true
}
'import requests
url = "https://api.onkernel.com/auth/connections/{id}/login"
payload = {
"browser": {
"proxy": {
"id": "<string>",
"name": "<string>"
},
"stealth": False,
"telemetry": {
"browser": {
"captcha": { "enabled": True },
"connection": { "enabled": True },
"console": { "enabled": True },
"control": { "enabled": True },
"interaction": { "enabled": True },
"network": { "enabled": True },
"page": { "enabled": True },
"screenshot": { "enabled": True },
"system": { "enabled": True }
},
"enabled": True,
"export": { "otlp": {
"destination": {
"id": "<string>",
"name": "<string>"
},
"enabled": True
} }
}
},
"browser_telemetry": {
"browser": {
"captcha": { "enabled": True },
"connection": { "enabled": True },
"console": { "enabled": True },
"control": { "enabled": True },
"interaction": { "enabled": True },
"network": { "enabled": True },
"page": { "enabled": True },
"screenshot": { "enabled": True },
"system": { "enabled": True }
},
"enabled": True,
"export": { "otlp": {
"destination": {
"id": "<string>",
"name": "<string>"
},
"enabled": True
} }
},
"proxy": {
"id": "<string>",
"name": "<string>"
},
"record_session": True
}
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({
browser: {
proxy: {id: '<string>', name: '<string>'},
stealth: false,
telemetry: {
browser: {
captcha: {enabled: true},
connection: {enabled: true},
console: {enabled: true},
control: {enabled: true},
interaction: {enabled: true},
network: {enabled: true},
page: {enabled: true},
screenshot: {enabled: true},
system: {enabled: true}
},
enabled: true,
export: {otlp: {destination: {id: '<string>', name: '<string>'}, enabled: true}}
}
},
browser_telemetry: {
browser: {
captcha: {enabled: true},
connection: {enabled: true},
console: {enabled: true},
control: {enabled: true},
interaction: {enabled: true},
network: {enabled: true},
page: {enabled: true},
screenshot: {enabled: true},
system: {enabled: true}
},
enabled: true,
export: {otlp: {destination: {id: '<string>', name: '<string>'}, enabled: true}}
},
proxy: {id: '<string>', name: '<string>'},
record_session: true
})
};
fetch('https://api.onkernel.com/auth/connections/{id}/login', 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.onkernel.com/auth/connections/{id}/login",
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([
'browser' => [
'proxy' => [
'id' => '<string>',
'name' => '<string>'
],
'stealth' => false,
'telemetry' => [
'browser' => [
'captcha' => [
'enabled' => true
],
'connection' => [
'enabled' => true
],
'console' => [
'enabled' => true
],
'control' => [
'enabled' => true
],
'interaction' => [
'enabled' => true
],
'network' => [
'enabled' => true
],
'page' => [
'enabled' => true
],
'screenshot' => [
'enabled' => true
],
'system' => [
'enabled' => true
]
],
'enabled' => true,
'export' => [
'otlp' => [
'destination' => [
'id' => '<string>',
'name' => '<string>'
],
'enabled' => true
]
]
]
],
'browser_telemetry' => [
'browser' => [
'captcha' => [
'enabled' => true
],
'connection' => [
'enabled' => true
],
'console' => [
'enabled' => true
],
'control' => [
'enabled' => true
],
'interaction' => [
'enabled' => true
],
'network' => [
'enabled' => true
],
'page' => [
'enabled' => true
],
'screenshot' => [
'enabled' => true
],
'system' => [
'enabled' => true
]
],
'enabled' => true,
'export' => [
'otlp' => [
'destination' => [
'id' => '<string>',
'name' => '<string>'
],
'enabled' => true
]
]
],
'proxy' => [
'id' => '<string>',
'name' => '<string>'
],
'record_session' => true
]),
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.onkernel.com/auth/connections/{id}/login"
payload := strings.NewReader("{\n \"browser\": {\n \"proxy\": {\n \"id\": \"<string>\",\n \"name\": \"<string>\"\n },\n \"stealth\": false,\n \"telemetry\": {\n \"browser\": {\n \"captcha\": {\n \"enabled\": true\n },\n \"connection\": {\n \"enabled\": true\n },\n \"console\": {\n \"enabled\": true\n },\n \"control\": {\n \"enabled\": true\n },\n \"interaction\": {\n \"enabled\": true\n },\n \"network\": {\n \"enabled\": true\n },\n \"page\": {\n \"enabled\": true\n },\n \"screenshot\": {\n \"enabled\": true\n },\n \"system\": {\n \"enabled\": true\n }\n },\n \"enabled\": true,\n \"export\": {\n \"otlp\": {\n \"destination\": {\n \"id\": \"<string>\",\n \"name\": \"<string>\"\n },\n \"enabled\": true\n }\n }\n }\n },\n \"browser_telemetry\": {\n \"browser\": {\n \"captcha\": {\n \"enabled\": true\n },\n \"connection\": {\n \"enabled\": true\n },\n \"console\": {\n \"enabled\": true\n },\n \"control\": {\n \"enabled\": true\n },\n \"interaction\": {\n \"enabled\": true\n },\n \"network\": {\n \"enabled\": true\n },\n \"page\": {\n \"enabled\": true\n },\n \"screenshot\": {\n \"enabled\": true\n },\n \"system\": {\n \"enabled\": true\n }\n },\n \"enabled\": true,\n \"export\": {\n \"otlp\": {\n \"destination\": {\n \"id\": \"<string>\",\n \"name\": \"<string>\"\n },\n \"enabled\": true\n }\n }\n },\n \"proxy\": {\n \"id\": \"<string>\",\n \"name\": \"<string>\"\n },\n \"record_session\": true\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.onkernel.com/auth/connections/{id}/login")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"browser\": {\n \"proxy\": {\n \"id\": \"<string>\",\n \"name\": \"<string>\"\n },\n \"stealth\": false,\n \"telemetry\": {\n \"browser\": {\n \"captcha\": {\n \"enabled\": true\n },\n \"connection\": {\n \"enabled\": true\n },\n \"console\": {\n \"enabled\": true\n },\n \"control\": {\n \"enabled\": true\n },\n \"interaction\": {\n \"enabled\": true\n },\n \"network\": {\n \"enabled\": true\n },\n \"page\": {\n \"enabled\": true\n },\n \"screenshot\": {\n \"enabled\": true\n },\n \"system\": {\n \"enabled\": true\n }\n },\n \"enabled\": true,\n \"export\": {\n \"otlp\": {\n \"destination\": {\n \"id\": \"<string>\",\n \"name\": \"<string>\"\n },\n \"enabled\": true\n }\n }\n }\n },\n \"browser_telemetry\": {\n \"browser\": {\n \"captcha\": {\n \"enabled\": true\n },\n \"connection\": {\n \"enabled\": true\n },\n \"console\": {\n \"enabled\": true\n },\n \"control\": {\n \"enabled\": true\n },\n \"interaction\": {\n \"enabled\": true\n },\n \"network\": {\n \"enabled\": true\n },\n \"page\": {\n \"enabled\": true\n },\n \"screenshot\": {\n \"enabled\": true\n },\n \"system\": {\n \"enabled\": true\n }\n },\n \"enabled\": true,\n \"export\": {\n \"otlp\": {\n \"destination\": {\n \"id\": \"<string>\",\n \"name\": \"<string>\"\n },\n \"enabled\": true\n }\n }\n },\n \"proxy\": {\n \"id\": \"<string>\",\n \"name\": \"<string>\"\n },\n \"record_session\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.onkernel.com/auth/connections/{id}/login")
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 \"browser\": {\n \"proxy\": {\n \"id\": \"<string>\",\n \"name\": \"<string>\"\n },\n \"stealth\": false,\n \"telemetry\": {\n \"browser\": {\n \"captcha\": {\n \"enabled\": true\n },\n \"connection\": {\n \"enabled\": true\n },\n \"console\": {\n \"enabled\": true\n },\n \"control\": {\n \"enabled\": true\n },\n \"interaction\": {\n \"enabled\": true\n },\n \"network\": {\n \"enabled\": true\n },\n \"page\": {\n \"enabled\": true\n },\n \"screenshot\": {\n \"enabled\": true\n },\n \"system\": {\n \"enabled\": true\n }\n },\n \"enabled\": true,\n \"export\": {\n \"otlp\": {\n \"destination\": {\n \"id\": \"<string>\",\n \"name\": \"<string>\"\n },\n \"enabled\": true\n }\n }\n }\n },\n \"browser_telemetry\": {\n \"browser\": {\n \"captcha\": {\n \"enabled\": true\n },\n \"connection\": {\n \"enabled\": true\n },\n \"console\": {\n \"enabled\": true\n },\n \"control\": {\n \"enabled\": true\n },\n \"interaction\": {\n \"enabled\": true\n },\n \"network\": {\n \"enabled\": true\n },\n \"page\": {\n \"enabled\": true\n },\n \"screenshot\": {\n \"enabled\": true\n },\n \"system\": {\n \"enabled\": true\n }\n },\n \"enabled\": true,\n \"export\": {\n \"otlp\": {\n \"destination\": {\n \"id\": \"<string>\",\n \"name\": \"<string>\"\n },\n \"enabled\": true\n }\n }\n },\n \"proxy\": {\n \"id\": \"<string>\",\n \"name\": \"<string>\"\n },\n \"record_session\": true\n}"
response = http.request(request)
puts response.read_body{
"flow_expires_at": "2025-11-05T20:00:00Z",
"flow_type": "LOGIN",
"hosted_url": "https://auth.kernel.com/login/abc123xyz",
"id": "ma_abc123xyz",
"handoff_code": "aBcD123EfGh456IjKl789MnOp012QrStUvWxYzAbCdEf",
"live_view_url": "https://live.onkernel.com/abc123xyz"
}{
"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"
}
}{
"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"
}
}Start login flow
Starts a login flow for the auth connection. Returns immediately with a hosted URL for the user to complete authentication, or triggers automatic re-auth if credentials are stored.
curl --request POST \
--url https://api.onkernel.com/auth/connections/{id}/login \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"browser": {
"proxy": {
"id": "<string>",
"name": "<string>"
},
"stealth": false,
"telemetry": {
"browser": {
"captcha": {
"enabled": true
},
"connection": {
"enabled": true
},
"console": {
"enabled": true
},
"control": {
"enabled": true
},
"interaction": {
"enabled": true
},
"network": {
"enabled": true
},
"page": {
"enabled": true
},
"screenshot": {
"enabled": true
},
"system": {
"enabled": true
}
},
"enabled": true,
"export": {
"otlp": {
"destination": {
"id": "<string>",
"name": "<string>"
},
"enabled": true
}
}
}
},
"browser_telemetry": {
"browser": {
"captcha": {
"enabled": true
},
"connection": {
"enabled": true
},
"console": {
"enabled": true
},
"control": {
"enabled": true
},
"interaction": {
"enabled": true
},
"network": {
"enabled": true
},
"page": {
"enabled": true
},
"screenshot": {
"enabled": true
},
"system": {
"enabled": true
}
},
"enabled": true,
"export": {
"otlp": {
"destination": {
"id": "<string>",
"name": "<string>"
},
"enabled": true
}
}
},
"proxy": {
"id": "<string>",
"name": "<string>"
},
"record_session": true
}
'import requests
url = "https://api.onkernel.com/auth/connections/{id}/login"
payload = {
"browser": {
"proxy": {
"id": "<string>",
"name": "<string>"
},
"stealth": False,
"telemetry": {
"browser": {
"captcha": { "enabled": True },
"connection": { "enabled": True },
"console": { "enabled": True },
"control": { "enabled": True },
"interaction": { "enabled": True },
"network": { "enabled": True },
"page": { "enabled": True },
"screenshot": { "enabled": True },
"system": { "enabled": True }
},
"enabled": True,
"export": { "otlp": {
"destination": {
"id": "<string>",
"name": "<string>"
},
"enabled": True
} }
}
},
"browser_telemetry": {
"browser": {
"captcha": { "enabled": True },
"connection": { "enabled": True },
"console": { "enabled": True },
"control": { "enabled": True },
"interaction": { "enabled": True },
"network": { "enabled": True },
"page": { "enabled": True },
"screenshot": { "enabled": True },
"system": { "enabled": True }
},
"enabled": True,
"export": { "otlp": {
"destination": {
"id": "<string>",
"name": "<string>"
},
"enabled": True
} }
},
"proxy": {
"id": "<string>",
"name": "<string>"
},
"record_session": True
}
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({
browser: {
proxy: {id: '<string>', name: '<string>'},
stealth: false,
telemetry: {
browser: {
captcha: {enabled: true},
connection: {enabled: true},
console: {enabled: true},
control: {enabled: true},
interaction: {enabled: true},
network: {enabled: true},
page: {enabled: true},
screenshot: {enabled: true},
system: {enabled: true}
},
enabled: true,
export: {otlp: {destination: {id: '<string>', name: '<string>'}, enabled: true}}
}
},
browser_telemetry: {
browser: {
captcha: {enabled: true},
connection: {enabled: true},
console: {enabled: true},
control: {enabled: true},
interaction: {enabled: true},
network: {enabled: true},
page: {enabled: true},
screenshot: {enabled: true},
system: {enabled: true}
},
enabled: true,
export: {otlp: {destination: {id: '<string>', name: '<string>'}, enabled: true}}
},
proxy: {id: '<string>', name: '<string>'},
record_session: true
})
};
fetch('https://api.onkernel.com/auth/connections/{id}/login', 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.onkernel.com/auth/connections/{id}/login",
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([
'browser' => [
'proxy' => [
'id' => '<string>',
'name' => '<string>'
],
'stealth' => false,
'telemetry' => [
'browser' => [
'captcha' => [
'enabled' => true
],
'connection' => [
'enabled' => true
],
'console' => [
'enabled' => true
],
'control' => [
'enabled' => true
],
'interaction' => [
'enabled' => true
],
'network' => [
'enabled' => true
],
'page' => [
'enabled' => true
],
'screenshot' => [
'enabled' => true
],
'system' => [
'enabled' => true
]
],
'enabled' => true,
'export' => [
'otlp' => [
'destination' => [
'id' => '<string>',
'name' => '<string>'
],
'enabled' => true
]
]
]
],
'browser_telemetry' => [
'browser' => [
'captcha' => [
'enabled' => true
],
'connection' => [
'enabled' => true
],
'console' => [
'enabled' => true
],
'control' => [
'enabled' => true
],
'interaction' => [
'enabled' => true
],
'network' => [
'enabled' => true
],
'page' => [
'enabled' => true
],
'screenshot' => [
'enabled' => true
],
'system' => [
'enabled' => true
]
],
'enabled' => true,
'export' => [
'otlp' => [
'destination' => [
'id' => '<string>',
'name' => '<string>'
],
'enabled' => true
]
]
],
'proxy' => [
'id' => '<string>',
'name' => '<string>'
],
'record_session' => true
]),
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.onkernel.com/auth/connections/{id}/login"
payload := strings.NewReader("{\n \"browser\": {\n \"proxy\": {\n \"id\": \"<string>\",\n \"name\": \"<string>\"\n },\n \"stealth\": false,\n \"telemetry\": {\n \"browser\": {\n \"captcha\": {\n \"enabled\": true\n },\n \"connection\": {\n \"enabled\": true\n },\n \"console\": {\n \"enabled\": true\n },\n \"control\": {\n \"enabled\": true\n },\n \"interaction\": {\n \"enabled\": true\n },\n \"network\": {\n \"enabled\": true\n },\n \"page\": {\n \"enabled\": true\n },\n \"screenshot\": {\n \"enabled\": true\n },\n \"system\": {\n \"enabled\": true\n }\n },\n \"enabled\": true,\n \"export\": {\n \"otlp\": {\n \"destination\": {\n \"id\": \"<string>\",\n \"name\": \"<string>\"\n },\n \"enabled\": true\n }\n }\n }\n },\n \"browser_telemetry\": {\n \"browser\": {\n \"captcha\": {\n \"enabled\": true\n },\n \"connection\": {\n \"enabled\": true\n },\n \"console\": {\n \"enabled\": true\n },\n \"control\": {\n \"enabled\": true\n },\n \"interaction\": {\n \"enabled\": true\n },\n \"network\": {\n \"enabled\": true\n },\n \"page\": {\n \"enabled\": true\n },\n \"screenshot\": {\n \"enabled\": true\n },\n \"system\": {\n \"enabled\": true\n }\n },\n \"enabled\": true,\n \"export\": {\n \"otlp\": {\n \"destination\": {\n \"id\": \"<string>\",\n \"name\": \"<string>\"\n },\n \"enabled\": true\n }\n }\n },\n \"proxy\": {\n \"id\": \"<string>\",\n \"name\": \"<string>\"\n },\n \"record_session\": true\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.onkernel.com/auth/connections/{id}/login")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"browser\": {\n \"proxy\": {\n \"id\": \"<string>\",\n \"name\": \"<string>\"\n },\n \"stealth\": false,\n \"telemetry\": {\n \"browser\": {\n \"captcha\": {\n \"enabled\": true\n },\n \"connection\": {\n \"enabled\": true\n },\n \"console\": {\n \"enabled\": true\n },\n \"control\": {\n \"enabled\": true\n },\n \"interaction\": {\n \"enabled\": true\n },\n \"network\": {\n \"enabled\": true\n },\n \"page\": {\n \"enabled\": true\n },\n \"screenshot\": {\n \"enabled\": true\n },\n \"system\": {\n \"enabled\": true\n }\n },\n \"enabled\": true,\n \"export\": {\n \"otlp\": {\n \"destination\": {\n \"id\": \"<string>\",\n \"name\": \"<string>\"\n },\n \"enabled\": true\n }\n }\n }\n },\n \"browser_telemetry\": {\n \"browser\": {\n \"captcha\": {\n \"enabled\": true\n },\n \"connection\": {\n \"enabled\": true\n },\n \"console\": {\n \"enabled\": true\n },\n \"control\": {\n \"enabled\": true\n },\n \"interaction\": {\n \"enabled\": true\n },\n \"network\": {\n \"enabled\": true\n },\n \"page\": {\n \"enabled\": true\n },\n \"screenshot\": {\n \"enabled\": true\n },\n \"system\": {\n \"enabled\": true\n }\n },\n \"enabled\": true,\n \"export\": {\n \"otlp\": {\n \"destination\": {\n \"id\": \"<string>\",\n \"name\": \"<string>\"\n },\n \"enabled\": true\n }\n }\n },\n \"proxy\": {\n \"id\": \"<string>\",\n \"name\": \"<string>\"\n },\n \"record_session\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.onkernel.com/auth/connections/{id}/login")
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 \"browser\": {\n \"proxy\": {\n \"id\": \"<string>\",\n \"name\": \"<string>\"\n },\n \"stealth\": false,\n \"telemetry\": {\n \"browser\": {\n \"captcha\": {\n \"enabled\": true\n },\n \"connection\": {\n \"enabled\": true\n },\n \"console\": {\n \"enabled\": true\n },\n \"control\": {\n \"enabled\": true\n },\n \"interaction\": {\n \"enabled\": true\n },\n \"network\": {\n \"enabled\": true\n },\n \"page\": {\n \"enabled\": true\n },\n \"screenshot\": {\n \"enabled\": true\n },\n \"system\": {\n \"enabled\": true\n }\n },\n \"enabled\": true,\n \"export\": {\n \"otlp\": {\n \"destination\": {\n \"id\": \"<string>\",\n \"name\": \"<string>\"\n },\n \"enabled\": true\n }\n }\n }\n },\n \"browser_telemetry\": {\n \"browser\": {\n \"captcha\": {\n \"enabled\": true\n },\n \"connection\": {\n \"enabled\": true\n },\n \"console\": {\n \"enabled\": true\n },\n \"control\": {\n \"enabled\": true\n },\n \"interaction\": {\n \"enabled\": true\n },\n \"network\": {\n \"enabled\": true\n },\n \"page\": {\n \"enabled\": true\n },\n \"screenshot\": {\n \"enabled\": true\n },\n \"system\": {\n \"enabled\": true\n }\n },\n \"enabled\": true,\n \"export\": {\n \"otlp\": {\n \"destination\": {\n \"id\": \"<string>\",\n \"name\": \"<string>\"\n },\n \"enabled\": true\n }\n }\n },\n \"proxy\": {\n \"id\": \"<string>\",\n \"name\": \"<string>\"\n },\n \"record_session\": true\n}"
response = http.request(request)
puts response.read_body{
"flow_expires_at": "2025-11-05T20:00:00Z",
"flow_type": "LOGIN",
"hosted_url": "https://auth.kernel.com/login/abc123xyz",
"id": "ma_abc123xyz",
"handoff_code": "aBcD123EfGh456IjKl789MnOp012QrStUvWxYzAbCdEf",
"live_view_url": "https://live.onkernel.com/abc123xyz"
}{
"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"
}
}{
"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
Auth connection ID
Body
Request to start a login flow
Browser configuration override for this login. Omitted properties inherit the connection defaults.
Show child attributes
Show child attributes
Deprecated. Use browser.telemetry. Retained during migration for existing clients.
Show child attributes
Show child attributes
Deprecated. Use browser.proxy. Retained during migration for existing clients.
- Option 1
- Option 2
Show child attributes
Show child attributes
Override the connection's default for recording this login's browser session. When omitted, the connection's record_session default is used.
true
Response
Login flow started
Response from starting a login flow
When the login flow expires
"2025-11-05T20:00:00Z"
Type of login flow started
LOGIN, REAUTH "LOGIN"
URL to redirect user to for login
"https://auth.kernel.com/login/abc123xyz"
Auth connection ID
"ma_abc123xyz"
One-time code for handoff (internal use)
"aBcD123EfGh456IjKl789MnOp012QrStUvWxYzAbCdEf"
Browser live view URL for watching the login flow
"https://live.onkernel.com/abc123xyz"