curl --request POST \
--url https://api.ngrok.ai/access-key-configurations \
--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"
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.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
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', 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",
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([
'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"
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("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.ngrok.ai/access-key-configurations")
.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")
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 \"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>"
}Create an AI Gateway access key configuration
Create a reusable access key configuration with provider/model scope
curl --request POST \
--url https://api.ngrok.ai/access-key-configurations \
--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"
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.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
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', 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",
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([
'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"
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("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.ngrok.ai/access-key-configurations")
.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")
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 \"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.
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 created 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?