List models without a key
curl --request GET \
--url https://api.pre.dev/v1/models/publicimport requests
url = "https://api.pre.dev/v1/models/public"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.pre.dev/v1/models/public', 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.pre.dev/v1/models/public",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.pre.dev/v1/models/public"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.pre.dev/v1/models/public")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.pre.dev/v1/models/public")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"object": "list",
"updated_at": "2026-09-27T19:34:01.315Z",
"total": 2,
"counts": {
"text": 1,
"image": 0,
"video": 0,
"embeddings": 1
},
"labs": [
{
"id": "anthropic",
"name": "Anthropic",
"models": 1
},
{
"id": "openai",
"name": "OpenAI",
"models": 1
}
],
"data": [
{
"id": "anthropic/claude-sonnet-5",
"name": "Claude Sonnet 5",
"lab": "anthropic",
"type": "text",
"input": [
"text",
"image",
"file"
],
"output": [
"text"
],
"context_length": 1000000,
"created": 1782843083
},
{
"id": "openai/text-embedding-3-small",
"name": "Text Embedding 3 Small",
"lab": "openai",
"type": "embeddings",
"input": [
"text"
],
"output": [
"embeddings"
],
"context_length": 8192,
"created": 1761857455
}
]
}{
"error": {
"message": "The pre.dev AI gateway hit an unexpected error.",
"type": "server_error",
"code": "internal_error",
"param": null,
"predev": {}
}
}{
"error": {
"message": "The model catalog is refreshing. Try again in a minute.",
"type": "server_error",
"code": "catalog_unavailable",
"param": null,
"predev": {}
}
}Models
List models without a key
Every model an app can call, with its lab and modalities and no prices. Needs no API key.
GET
/
v1
/
models
/
public
List models without a key
curl --request GET \
--url https://api.pre.dev/v1/models/publicimport requests
url = "https://api.pre.dev/v1/models/public"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.pre.dev/v1/models/public', 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.pre.dev/v1/models/public",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.pre.dev/v1/models/public"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.pre.dev/v1/models/public")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.pre.dev/v1/models/public")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"object": "list",
"updated_at": "2026-09-27T19:34:01.315Z",
"total": 2,
"counts": {
"text": 1,
"image": 0,
"video": 0,
"embeddings": 1
},
"labs": [
{
"id": "anthropic",
"name": "Anthropic",
"models": 1
},
{
"id": "openai",
"name": "OpenAI",
"models": 1
}
],
"data": [
{
"id": "anthropic/claude-sonnet-5",
"name": "Claude Sonnet 5",
"lab": "anthropic",
"type": "text",
"input": [
"text",
"image",
"file"
],
"output": [
"text"
],
"context_length": 1000000,
"created": 1782843083
},
{
"id": "openai/text-embedding-3-small",
"name": "Text Embedding 3 Small",
"lab": "openai",
"type": "embeddings",
"input": [
"text"
],
"output": [
"embeddings"
],
"context_length": 8192,
"created": 1761857455
}
]
}{
"error": {
"message": "The pre.dev AI gateway hit an unexpected error.",
"type": "server_error",
"code": "internal_error",
"param": null,
"predev": {}
}
}{
"error": {
"message": "The model catalog is refreshing. Try again in a minute.",
"type": "server_error",
"code": "catalog_unavailable",
"param": null,
"predev": {}
}
}Headers
The ETag from an earlier response.
Response
The model directory.
Allowed value:
"list"When the catalog behind this list was last refreshed.
Show child attributes
Show child attributes
Labs by number of models, most first.
Show child attributes
Show child attributes
Newest first.
Show child attributes
Show child attributes
Was this page helpful?

