curl --request POST \
--url https://api.ngrok.ai/providers \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"providerId": "<string>",
"name": "<string>",
"baseUrl": "<string>",
"metadata": "<string>",
"supportedApiSurfaces": [
{
"format": "<string>",
"surface": "<string>",
"supportedParams": [
{
"name": "<string>"
}
]
}
],
"models": [
{
"modelId": "<string>"
}
]
}
'import requests
url = "https://api.ngrok.ai/providers"
payload = {
"providerId": "<string>",
"name": "<string>",
"baseUrl": "<string>",
"metadata": "<string>",
"supportedApiSurfaces": [
{
"format": "<string>",
"surface": "<string>",
"supportedParams": [{ "name": "<string>" }]
}
],
"models": [{ "modelId": "<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({
providerId: '<string>',
name: '<string>',
baseUrl: '<string>',
metadata: '<string>',
supportedApiSurfaces: [
{format: '<string>', surface: '<string>', supportedParams: [{name: '<string>'}]}
],
models: [{modelId: '<string>'}]
})
};
fetch('https://api.ngrok.ai/providers', 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/providers",
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([
'providerId' => '<string>',
'name' => '<string>',
'baseUrl' => '<string>',
'metadata' => '<string>',
'supportedApiSurfaces' => [
[
'format' => '<string>',
'surface' => '<string>',
'supportedParams' => [
[
'name' => '<string>'
]
]
]
],
'models' => [
[
'modelId' => '<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/providers"
payload := strings.NewReader("{\n \"providerId\": \"<string>\",\n \"name\": \"<string>\",\n \"baseUrl\": \"<string>\",\n \"metadata\": \"<string>\",\n \"supportedApiSurfaces\": [\n {\n \"format\": \"<string>\",\n \"surface\": \"<string>\",\n \"supportedParams\": [\n {\n \"name\": \"<string>\"\n }\n ]\n }\n ],\n \"models\": [\n {\n \"modelId\": \"<string>\"\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/providers")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"providerId\": \"<string>\",\n \"name\": \"<string>\",\n \"baseUrl\": \"<string>\",\n \"metadata\": \"<string>\",\n \"supportedApiSurfaces\": [\n {\n \"format\": \"<string>\",\n \"surface\": \"<string>\",\n \"supportedParams\": [\n {\n \"name\": \"<string>\"\n }\n ]\n }\n ],\n \"models\": [\n {\n \"modelId\": \"<string>\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.ngrok.ai/providers")
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 \"providerId\": \"<string>\",\n \"name\": \"<string>\",\n \"baseUrl\": \"<string>\",\n \"metadata\": \"<string>\",\n \"supportedApiSurfaces\": [\n {\n \"format\": \"<string>\",\n \"surface\": \"<string>\",\n \"supportedParams\": [\n {\n \"name\": \"<string>\"\n }\n ]\n }\n ],\n \"models\": [\n {\n \"modelId\": \"<string>\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"uri": "<string>",
"providerId": "<string>",
"name": "<string>",
"baseUrl": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"createdBy": {
"id": "<string>",
"uri": "<string>"
},
"lastUpdatedBy": {
"id": "<string>",
"uri": "<string>"
},
"metadata": "<string>",
"supportedApiSurfaces": [
{
"format": "<string>",
"surface": "<string>",
"supportedParams": [
{
"name": "<string>"
}
]
}
],
"models": [
{
"id": "<string>",
"modelId": "<string>"
}
]
}{
"statusCode": 123,
"msg": "<string>",
"details": {},
"errorCode": "<string>"
}Create an AI Gateway provider
Create a new user-defined AI Gateway provider for routing requests to a self-hosted
curl --request POST \
--url https://api.ngrok.ai/providers \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"providerId": "<string>",
"name": "<string>",
"baseUrl": "<string>",
"metadata": "<string>",
"supportedApiSurfaces": [
{
"format": "<string>",
"surface": "<string>",
"supportedParams": [
{
"name": "<string>"
}
]
}
],
"models": [
{
"modelId": "<string>"
}
]
}
'import requests
url = "https://api.ngrok.ai/providers"
payload = {
"providerId": "<string>",
"name": "<string>",
"baseUrl": "<string>",
"metadata": "<string>",
"supportedApiSurfaces": [
{
"format": "<string>",
"surface": "<string>",
"supportedParams": [{ "name": "<string>" }]
}
],
"models": [{ "modelId": "<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({
providerId: '<string>',
name: '<string>',
baseUrl: '<string>',
metadata: '<string>',
supportedApiSurfaces: [
{format: '<string>', surface: '<string>', supportedParams: [{name: '<string>'}]}
],
models: [{modelId: '<string>'}]
})
};
fetch('https://api.ngrok.ai/providers', 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/providers",
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([
'providerId' => '<string>',
'name' => '<string>',
'baseUrl' => '<string>',
'metadata' => '<string>',
'supportedApiSurfaces' => [
[
'format' => '<string>',
'surface' => '<string>',
'supportedParams' => [
[
'name' => '<string>'
]
]
]
],
'models' => [
[
'modelId' => '<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/providers"
payload := strings.NewReader("{\n \"providerId\": \"<string>\",\n \"name\": \"<string>\",\n \"baseUrl\": \"<string>\",\n \"metadata\": \"<string>\",\n \"supportedApiSurfaces\": [\n {\n \"format\": \"<string>\",\n \"surface\": \"<string>\",\n \"supportedParams\": [\n {\n \"name\": \"<string>\"\n }\n ]\n }\n ],\n \"models\": [\n {\n \"modelId\": \"<string>\"\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/providers")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"providerId\": \"<string>\",\n \"name\": \"<string>\",\n \"baseUrl\": \"<string>\",\n \"metadata\": \"<string>\",\n \"supportedApiSurfaces\": [\n {\n \"format\": \"<string>\",\n \"surface\": \"<string>\",\n \"supportedParams\": [\n {\n \"name\": \"<string>\"\n }\n ]\n }\n ],\n \"models\": [\n {\n \"modelId\": \"<string>\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.ngrok.ai/providers")
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 \"providerId\": \"<string>\",\n \"name\": \"<string>\",\n \"baseUrl\": \"<string>\",\n \"metadata\": \"<string>\",\n \"supportedApiSurfaces\": [\n {\n \"format\": \"<string>\",\n \"surface\": \"<string>\",\n \"supportedParams\": [\n {\n \"name\": \"<string>\"\n }\n ]\n }\n ],\n \"models\": [\n {\n \"modelId\": \"<string>\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"uri": "<string>",
"providerId": "<string>",
"name": "<string>",
"baseUrl": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"createdBy": {
"id": "<string>",
"uri": "<string>"
},
"lastUpdatedBy": {
"id": "<string>",
"uri": "<string>"
},
"metadata": "<string>",
"supportedApiSurfaces": [
{
"format": "<string>",
"surface": "<string>",
"supportedParams": [
{
"name": "<string>"
}
]
}
],
"models": [
{
"id": "<string>",
"modelId": "<string>"
}
]
}{
"statusCode": 123,
"msg": "<string>",
"details": {},
"errorCode": "<string>"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
Provider identifier used as the address segment in model strings (for example "internal-vllm"). Unique within the account; must not collide with a built-in catalog providerId.
1 - 255User-friendly label for this provider.
1 - 255Base URL of the provider's API endpoint. Required — every provider has one.
1 - 2048Arbitrary user-defined metadata for this provider.
4096API surfaces supported by this provider.
Show child attributes
Show child attributes
Initial set of models exposed by this provider.
Show child attributes
Show child attributes
Response
The created AI Gateway provider.
Unique identifier for this provider.
URI of this AI Gateway Provider API resource.
Provider identifier used as the address segment in model strings (for example "internal-vllm").
User-friendly label for this provider.
Base URL of the provider's API endpoint.
Timestamp when the provider was created.
Timestamp when the provider was last updated.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Arbitrary user-defined metadata for this provider.
API surfaces supported by this provider.
Show child attributes
Show child attributes
Models exposed by this provider.
Show child attributes
Show child attributes
Was this page helpful?