curl --request PATCH \
--url https://api.ngrok.ai/access-key-configurations/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"description": "<string>",
"metadata": "<string>",
"access": {
"providers": {
"allow": [
"<string>"
]
},
"models": {
"allow": [
"<string>"
]
}
},
"router": {
"rules": [
{
"steps": [
{
"keys": [
{
"id": "<string>",
"name": "<string>",
"value": "<string>"
}
],
"keySelectionStrategy": "ordered"
}
],
"provider": "<string>",
"model": "<string>"
}
]
}
}
'import requests
url = "https://api.ngrok.ai/access-key-configurations/{id}"
payload = {
"name": "<string>",
"description": "<string>",
"metadata": "<string>",
"access": {
"providers": { "allow": ["<string>"] },
"models": { "allow": ["<string>"] }
},
"router": { "rules": [
{
"steps": [
{
"keys": [
{
"id": "<string>",
"name": "<string>",
"value": "<string>"
}
],
"keySelectionStrategy": "ordered"
}
],
"provider": "<string>",
"model": "<string>"
}
] }
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
description: '<string>',
metadata: '<string>',
access: {providers: {allow: ['<string>']}, models: {allow: ['<string>']}},
router: {
rules: [
{
steps: [
{
keys: [{id: '<string>', name: '<string>', value: '<string>'}],
keySelectionStrategy: 'ordered'
}
],
provider: '<string>',
model: '<string>'
}
]
}
})
};
fetch('https://api.ngrok.ai/access-key-configurations/{id}', 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.ngrok.ai/access-key-configurations/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'description' => '<string>',
'metadata' => '<string>',
'access' => [
'providers' => [
'allow' => [
'<string>'
]
],
'models' => [
'allow' => [
'<string>'
]
]
],
'router' => [
'rules' => [
[
'steps' => [
[
'keys' => [
[
'id' => '<string>',
'name' => '<string>',
'value' => '<string>'
]
],
'keySelectionStrategy' => 'ordered'
]
],
'provider' => '<string>',
'model' => '<string>'
]
]
]
]),
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.ngrok.ai/access-key-configurations/{id}"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"metadata\": \"<string>\",\n \"access\": {\n \"providers\": {\n \"allow\": [\n \"<string>\"\n ]\n },\n \"models\": {\n \"allow\": [\n \"<string>\"\n ]\n }\n },\n \"router\": {\n \"rules\": [\n {\n \"steps\": [\n {\n \"keys\": [\n {\n \"id\": \"<string>\",\n \"name\": \"<string>\",\n \"value\": \"<string>\"\n }\n ],\n \"keySelectionStrategy\": \"ordered\"\n }\n ],\n \"provider\": \"<string>\",\n \"model\": \"<string>\"\n }\n ]\n }\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://api.ngrok.ai/access-key-configurations/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"metadata\": \"<string>\",\n \"access\": {\n \"providers\": {\n \"allow\": [\n \"<string>\"\n ]\n },\n \"models\": {\n \"allow\": [\n \"<string>\"\n ]\n }\n },\n \"router\": {\n \"rules\": [\n {\n \"steps\": [\n {\n \"keys\": [\n {\n \"id\": \"<string>\",\n \"name\": \"<string>\",\n \"value\": \"<string>\"\n }\n ],\n \"keySelectionStrategy\": \"ordered\"\n }\n ],\n \"provider\": \"<string>\",\n \"model\": \"<string>\"\n }\n ]\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.ngrok.ai/access-key-configurations/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"metadata\": \"<string>\",\n \"access\": {\n \"providers\": {\n \"allow\": [\n \"<string>\"\n ]\n },\n \"models\": {\n \"allow\": [\n \"<string>\"\n ]\n }\n },\n \"router\": {\n \"rules\": [\n {\n \"steps\": [\n {\n \"keys\": [\n {\n \"id\": \"<string>\",\n \"name\": \"<string>\",\n \"value\": \"<string>\"\n }\n ],\n \"keySelectionStrategy\": \"ordered\"\n }\n ],\n \"provider\": \"<string>\",\n \"model\": \"<string>\"\n }\n ]\n }\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"uri": "<string>",
"name": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"createdBy": {
"id": "<string>",
"uri": "<string>"
},
"lastUpdatedBy": {
"id": "<string>",
"uri": "<string>"
},
"description": "<string>",
"metadata": "<string>",
"access": {
"providers": {
"allow": [
"<string>"
]
},
"models": {
"allow": [
"<string>"
]
}
},
"router": {
"rules": [
{
"steps": [
{
"keys": [
{
"id": "<string>",
"name": "<string>",
"keyRedacted": "<string>"
}
],
"keySelectionStrategy": "ordered"
}
],
"provider": "<string>",
"model": "<string>"
}
]
}
}{
"statusCode": 123,
"msg": "<string>",
"details": {},
"errorCode": "<string>"
}Update an AI Gateway access key configuration
Apply a partial update to an AI Gateway access key configuration.
curl --request PATCH \
--url https://api.ngrok.ai/access-key-configurations/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"description": "<string>",
"metadata": "<string>",
"access": {
"providers": {
"allow": [
"<string>"
]
},
"models": {
"allow": [
"<string>"
]
}
},
"router": {
"rules": [
{
"steps": [
{
"keys": [
{
"id": "<string>",
"name": "<string>",
"value": "<string>"
}
],
"keySelectionStrategy": "ordered"
}
],
"provider": "<string>",
"model": "<string>"
}
]
}
}
'import requests
url = "https://api.ngrok.ai/access-key-configurations/{id}"
payload = {
"name": "<string>",
"description": "<string>",
"metadata": "<string>",
"access": {
"providers": { "allow": ["<string>"] },
"models": { "allow": ["<string>"] }
},
"router": { "rules": [
{
"steps": [
{
"keys": [
{
"id": "<string>",
"name": "<string>",
"value": "<string>"
}
],
"keySelectionStrategy": "ordered"
}
],
"provider": "<string>",
"model": "<string>"
}
] }
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
description: '<string>',
metadata: '<string>',
access: {providers: {allow: ['<string>']}, models: {allow: ['<string>']}},
router: {
rules: [
{
steps: [
{
keys: [{id: '<string>', name: '<string>', value: '<string>'}],
keySelectionStrategy: 'ordered'
}
],
provider: '<string>',
model: '<string>'
}
]
}
})
};
fetch('https://api.ngrok.ai/access-key-configurations/{id}', 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.ngrok.ai/access-key-configurations/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'description' => '<string>',
'metadata' => '<string>',
'access' => [
'providers' => [
'allow' => [
'<string>'
]
],
'models' => [
'allow' => [
'<string>'
]
]
],
'router' => [
'rules' => [
[
'steps' => [
[
'keys' => [
[
'id' => '<string>',
'name' => '<string>',
'value' => '<string>'
]
],
'keySelectionStrategy' => 'ordered'
]
],
'provider' => '<string>',
'model' => '<string>'
]
]
]
]),
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.ngrok.ai/access-key-configurations/{id}"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"metadata\": \"<string>\",\n \"access\": {\n \"providers\": {\n \"allow\": [\n \"<string>\"\n ]\n },\n \"models\": {\n \"allow\": [\n \"<string>\"\n ]\n }\n },\n \"router\": {\n \"rules\": [\n {\n \"steps\": [\n {\n \"keys\": [\n {\n \"id\": \"<string>\",\n \"name\": \"<string>\",\n \"value\": \"<string>\"\n }\n ],\n \"keySelectionStrategy\": \"ordered\"\n }\n ],\n \"provider\": \"<string>\",\n \"model\": \"<string>\"\n }\n ]\n }\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://api.ngrok.ai/access-key-configurations/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"metadata\": \"<string>\",\n \"access\": {\n \"providers\": {\n \"allow\": [\n \"<string>\"\n ]\n },\n \"models\": {\n \"allow\": [\n \"<string>\"\n ]\n }\n },\n \"router\": {\n \"rules\": [\n {\n \"steps\": [\n {\n \"keys\": [\n {\n \"id\": \"<string>\",\n \"name\": \"<string>\",\n \"value\": \"<string>\"\n }\n ],\n \"keySelectionStrategy\": \"ordered\"\n }\n ],\n \"provider\": \"<string>\",\n \"model\": \"<string>\"\n }\n ]\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.ngrok.ai/access-key-configurations/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"metadata\": \"<string>\",\n \"access\": {\n \"providers\": {\n \"allow\": [\n \"<string>\"\n ]\n },\n \"models\": {\n \"allow\": [\n \"<string>\"\n ]\n }\n },\n \"router\": {\n \"rules\": [\n {\n \"steps\": [\n {\n \"keys\": [\n {\n \"id\": \"<string>\",\n \"name\": \"<string>\",\n \"value\": \"<string>\"\n }\n ],\n \"keySelectionStrategy\": \"ordered\"\n }\n ],\n \"provider\": \"<string>\",\n \"model\": \"<string>\"\n }\n ]\n }\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"uri": "<string>",
"name": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"createdBy": {
"id": "<string>",
"uri": "<string>"
},
"lastUpdatedBy": {
"id": "<string>",
"uri": "<string>"
},
"description": "<string>",
"metadata": "<string>",
"access": {
"providers": {
"allow": [
"<string>"
]
},
"models": {
"allow": [
"<string>"
]
}
},
"router": {
"rules": [
{
"steps": [
{
"keys": [
{
"id": "<string>",
"name": "<string>",
"keyRedacted": "<string>"
}
],
"keySelectionStrategy": "ordered"
}
],
"provider": "<string>",
"model": "<string>"
}
]
}
}{
"statusCode": 123,
"msg": "<string>",
"details": {},
"errorCode": "<string>"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Unique identifier for an AI Gateway access key configuration.
Body
User-defined label for this configuration.
255Human-readable description.
255Arbitrary user-defined metadata.
4096Scope controlling which providers and models are reachable. Omit the entire object for allow-all. Each dimension is independently optional.
Show child attributes
Show child attributes
Routing configuration. Omit to use defaults: built-in providers get an implicit ngrok step; user-defined providers fail until a rule with user keys exists.
Show child attributes
Show child attributes
Response
The updated AI Gateway access key configuration.
Unique identifier for this configuration.
URI of this AI Gateway Access Key Configuration API resource.
User-defined label for this configuration.
Timestamp when the configuration was created.
Timestamp when the configuration was last updated.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Human-readable description.
Arbitrary user-defined metadata.
Scope controlling which providers and models are reachable. Omit the entire object for allow-all. Each dimension is independently optional.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Was this page helpful?