Save the Auto Router
curl --request PUT \
--url https://api.openworklabs.com/v1/org/auto-router \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"enabled": true,
"routes": [
{
"providerId": "<string>",
"modelId": "<string>",
"prompt": "<string>",
"thinkingLevels": []
}
]
}
'import requests
url = "https://api.openworklabs.com/v1/org/auto-router"
payload = {
"enabled": True,
"routes": [
{
"providerId": "<string>",
"modelId": "<string>",
"prompt": "<string>",
"thinkingLevels": []
}
]
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
enabled: true,
routes: [
{
providerId: '<string>',
modelId: '<string>',
prompt: '<string>',
thinkingLevels: []
}
]
})
};
fetch('https://api.openworklabs.com/v1/org/auto-router', 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.openworklabs.com/v1/org/auto-router",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'enabled' => true,
'routes' => [
[
'providerId' => '<string>',
'modelId' => '<string>',
'prompt' => '<string>',
'thinkingLevels' => [
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$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.openworklabs.com/v1/org/auto-router"
payload := strings.NewReader("{\n \"enabled\": true,\n \"routes\": [\n {\n \"providerId\": \"<string>\",\n \"modelId\": \"<string>\",\n \"prompt\": \"<string>\",\n \"thinkingLevels\": []\n }\n ]\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("x-api-key", "<api-key>")
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.put("https://api.openworklabs.com/v1/org/auto-router")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"enabled\": true,\n \"routes\": [\n {\n \"providerId\": \"<string>\",\n \"modelId\": \"<string>\",\n \"prompt\": \"<string>\",\n \"thinkingLevels\": []\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.openworklabs.com/v1/org/auto-router")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"enabled\": true,\n \"routes\": [\n {\n \"providerId\": \"<string>\",\n \"modelId\": \"<string>\",\n \"prompt\": \"<string>\",\n \"thinkingLevels\": []\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"enabled": true,
"routes": [
{
"id": "<string>",
"providerId": "<string>",
"modelId": "<string>",
"prompt": "<string>",
"thinkingLevels": [
"default"
]
}
],
"canEdit": true
}{
"error": "unknown_model",
"route": 0,
"message": "<string>"
}{
"error": "unauthorized"
}{
"error": "forbidden",
"reason": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}Inference Providers
Save the Auto Router
Replaces the organization’s Auto Router: whether it is enabled and its routes in order. Each route names an AI Gateway model from the options list, a description of when to use it, and thinking levels the model allows. When the router cannot decide, the first route allowing High thinking is used. Requires the Manage Gateway providers permission, a recent sign-in and the Auto Router feature.
PUT
/
v1
/
org
/
auto-router
Save the Auto Router
curl --request PUT \
--url https://api.openworklabs.com/v1/org/auto-router \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"enabled": true,
"routes": [
{
"providerId": "<string>",
"modelId": "<string>",
"prompt": "<string>",
"thinkingLevels": []
}
]
}
'import requests
url = "https://api.openworklabs.com/v1/org/auto-router"
payload = {
"enabled": True,
"routes": [
{
"providerId": "<string>",
"modelId": "<string>",
"prompt": "<string>",
"thinkingLevels": []
}
]
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
enabled: true,
routes: [
{
providerId: '<string>',
modelId: '<string>',
prompt: '<string>',
thinkingLevels: []
}
]
})
};
fetch('https://api.openworklabs.com/v1/org/auto-router', 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.openworklabs.com/v1/org/auto-router",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'enabled' => true,
'routes' => [
[
'providerId' => '<string>',
'modelId' => '<string>',
'prompt' => '<string>',
'thinkingLevels' => [
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$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.openworklabs.com/v1/org/auto-router"
payload := strings.NewReader("{\n \"enabled\": true,\n \"routes\": [\n {\n \"providerId\": \"<string>\",\n \"modelId\": \"<string>\",\n \"prompt\": \"<string>\",\n \"thinkingLevels\": []\n }\n ]\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("x-api-key", "<api-key>")
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.put("https://api.openworklabs.com/v1/org/auto-router")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"enabled\": true,\n \"routes\": [\n {\n \"providerId\": \"<string>\",\n \"modelId\": \"<string>\",\n \"prompt\": \"<string>\",\n \"thinkingLevels\": []\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.openworklabs.com/v1/org/auto-router")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"enabled\": true,\n \"routes\": [\n {\n \"providerId\": \"<string>\",\n \"modelId\": \"<string>\",\n \"prompt\": \"<string>\",\n \"thinkingLevels\": []\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"enabled": true,
"routes": [
{
"id": "<string>",
"providerId": "<string>",
"modelId": "<string>",
"prompt": "<string>",
"thinkingLevels": [
"default"
]
}
],
"canEdit": true
}{
"error": "unknown_model",
"route": 0,
"message": "<string>"
}{
"error": "unauthorized"
}{
"error": "forbidden",
"reason": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}Authorizations
denApiKeybearerAuth
Organization API key passed as the x-api-key header. The raw key is the header value; do not prefix it with Bearer.
Body
application/json
Was this page helpful?