List public model catalog
curl --request GET \
--url https://api.veryfront.com/catalog/modelsimport requests
url = "https://api.veryfront.com/catalog/models"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.veryfront.com/catalog/models', 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.veryfront.com/catalog/models",
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.veryfront.com/catalog/models"
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.veryfront.com/catalog/models")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.veryfront.com/catalog/models")
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{
"models": [
{
"id": "claude-sonnet-4-6",
"modelId": "anthropic/claude-sonnet-4-6",
"provider": "anthropic",
"providerLabel": "Anthropic",
"providerLogoKey": "anthropic",
"name": "Claude Sonnet",
"aliases": [
"sonnet",
"anthropic/claude-sonnet-4-6"
],
"supportedProviderTools": [
"web_search",
"web_fetch"
],
"temperature": {
"min": 1,
"max": 1
},
"capabilities": {
"webResearch": true,
"streaming": true,
"tools": true,
"vision": true,
"supported_parameters": [
"max_tokens",
"temperature",
"top_p",
"tools",
"tool_choice"
],
"reasoning": true,
"tool_call": true,
"temperature": true,
"open_weights": true,
"modalities": {
"input": [
"text",
"image"
]
},
"thinking": true,
"attachment": true,
"structured_output": true,
"reasoning_mode": "budget",
"transport": "chat-completions",
"reasoning_budget_tokens": 2048,
"chat_completions_reasoning_with_function_tools": false,
"chat_completions_consecutive_system_messages": true,
"limit": {
"context": 1000000,
"output": 128000
}
},
"pricing": {
"inputUsdPer1M": 1,
"outputUsdPer1M": 1,
"inputEurPer1M": 1,
"outputEurPer1M": 1,
"cacheCreationInputUsdPer1M": 1,
"cacheCreation1hInputUsdPer1M": 1,
"cacheReadInputUsdPer1M": 1,
"audioInputUsdPer1M": 1,
"audioOutputUsdPer1M": 1,
"audioCacheReadInputUsdPer1M": 1,
"cacheCreationInputEurPer1M": 1,
"cacheCreation1hInputEurPer1M": 1,
"cacheReadInputEurPer1M": 1,
"audioInputEurPer1M": 1,
"audioOutputEurPer1M": 1,
"audioCacheReadInputEurPer1M": 1
},
"providerPricing": {
"inputEurPer1M": 1,
"outputEurPer1M": 1,
"cacheCreationInputEurPer1M": 1,
"cacheCreation1hInputEurPer1M": 1,
"cacheReadInputEurPer1M": 1,
"audioInputEurPer1M": 1,
"audioOutputEurPer1M": 1,
"audioCacheReadInputEurPer1M": 1,
"tiers": [
{
"id": "long-context",
"label": "Long context",
"appliesTo": "Prompts over 200k tokens",
"inputEurPer1M": 1,
"outputEurPer1M": 1,
"cacheCreationInputEurPer1M": 1,
"cacheCreation1hInputEurPer1M": 1,
"cacheReadInputEurPer1M": 1,
"audioInputEurPer1M": 1,
"audioOutputEurPer1M": 1,
"audioCacheReadInputEurPer1M": 1
}
]
},
"deployments": [
{
"tier": "eu-resident",
"jurisdiction": "US",
"region": "europe-west1",
"processing": "eu",
"processing_label": "EU (europe-west1, Belgium)",
"operator": "Google LLC",
"quantization": "unknown",
"precisionSource": "unknown",
"certifications": [
"<string>"
],
"supportedProviderTools": [
"web_search"
],
"dataRetention": "unknown",
"pricing": {
"inputUsdPer1M": 1,
"outputUsdPer1M": 1,
"inputEurPer1M": 1,
"outputEurPer1M": 1,
"cacheCreationInputUsdPer1M": 1,
"cacheCreation1hInputUsdPer1M": 1,
"cacheReadInputUsdPer1M": 1,
"audioInputUsdPer1M": 1,
"audioOutputUsdPer1M": 1,
"audioCacheReadInputUsdPer1M": 1,
"cacheCreationInputEurPer1M": 1,
"cacheCreation1hInputEurPer1M": 1,
"cacheReadInputEurPer1M": 1,
"audioInputEurPer1M": 1,
"audioOutputEurPer1M": 1,
"audioCacheReadInputEurPer1M": 1
}
}
],
"description": "Most efficient for everyday tasks"
}
],
"providers": [
"<string>"
],
"defaultModelId": "mistral/mistral-small-2503",
"fx": {
"base": "EUR",
"quote": "USD",
"rate": 1.1403,
"source": "ECB euro foreign exchange reference rate",
"date": "2026-09-25"
}
}{
"type": "https://api.veryfront.com/errors/validation-failed",
"title": "Validation Failed",
"status": 400,
"cause": "schedule_concurrency_forbidden",
"idempotency": {
"state": "in_progress",
"operation": "<string>",
"retryable": true,
"retry_after_seconds": 1,
"expires_at": "<string>",
"recovery": {
"available": true,
"description": "<string>",
"resource_url": "<string>"
}
},
"code": "RUN_INVALID_INPUT",
"detail": "The 'email' field must be a valid email address",
"instance": "/projects/my-project/members",
"slug": "validation-failed",
"category": "VALIDATION",
"suggestion": "Check the request body and query parameters against the API documentation.",
"errors": [
{
"field": "email",
"message": "Invalid email format",
"code": "INVALID_FORMAT"
}
]
}{
"type": "https://api.veryfront.com/errors/validation-failed",
"title": "Validation Failed",
"status": 400,
"cause": "schedule_concurrency_forbidden",
"idempotency": {
"state": "in_progress",
"operation": "<string>",
"retryable": true,
"retry_after_seconds": 1,
"expires_at": "<string>",
"recovery": {
"available": true,
"description": "<string>",
"resource_url": "<string>"
}
},
"code": "RUN_INVALID_INPUT",
"detail": "The 'email' field must be a valid email address",
"instance": "/projects/my-project/members",
"slug": "validation-failed",
"category": "VALIDATION",
"suggestion": "Check the request body and query parameters against the API documentation.",
"errors": [
{
"field": "email",
"message": "Invalid email format",
"code": "INVALID_FORMAT"
}
]
}List public model catalog
List public models.
GET
/
catalog
/
models
List public model catalog
curl --request GET \
--url https://api.veryfront.com/catalog/modelsimport requests
url = "https://api.veryfront.com/catalog/models"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.veryfront.com/catalog/models', 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.veryfront.com/catalog/models",
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.veryfront.com/catalog/models"
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.veryfront.com/catalog/models")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.veryfront.com/catalog/models")
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{
"models": [
{
"id": "claude-sonnet-4-6",
"modelId": "anthropic/claude-sonnet-4-6",
"provider": "anthropic",
"providerLabel": "Anthropic",
"providerLogoKey": "anthropic",
"name": "Claude Sonnet",
"aliases": [
"sonnet",
"anthropic/claude-sonnet-4-6"
],
"supportedProviderTools": [
"web_search",
"web_fetch"
],
"temperature": {
"min": 1,
"max": 1
},
"capabilities": {
"webResearch": true,
"streaming": true,
"tools": true,
"vision": true,
"supported_parameters": [
"max_tokens",
"temperature",
"top_p",
"tools",
"tool_choice"
],
"reasoning": true,
"tool_call": true,
"temperature": true,
"open_weights": true,
"modalities": {
"input": [
"text",
"image"
]
},
"thinking": true,
"attachment": true,
"structured_output": true,
"reasoning_mode": "budget",
"transport": "chat-completions",
"reasoning_budget_tokens": 2048,
"chat_completions_reasoning_with_function_tools": false,
"chat_completions_consecutive_system_messages": true,
"limit": {
"context": 1000000,
"output": 128000
}
},
"pricing": {
"inputUsdPer1M": 1,
"outputUsdPer1M": 1,
"inputEurPer1M": 1,
"outputEurPer1M": 1,
"cacheCreationInputUsdPer1M": 1,
"cacheCreation1hInputUsdPer1M": 1,
"cacheReadInputUsdPer1M": 1,
"audioInputUsdPer1M": 1,
"audioOutputUsdPer1M": 1,
"audioCacheReadInputUsdPer1M": 1,
"cacheCreationInputEurPer1M": 1,
"cacheCreation1hInputEurPer1M": 1,
"cacheReadInputEurPer1M": 1,
"audioInputEurPer1M": 1,
"audioOutputEurPer1M": 1,
"audioCacheReadInputEurPer1M": 1
},
"providerPricing": {
"inputEurPer1M": 1,
"outputEurPer1M": 1,
"cacheCreationInputEurPer1M": 1,
"cacheCreation1hInputEurPer1M": 1,
"cacheReadInputEurPer1M": 1,
"audioInputEurPer1M": 1,
"audioOutputEurPer1M": 1,
"audioCacheReadInputEurPer1M": 1,
"tiers": [
{
"id": "long-context",
"label": "Long context",
"appliesTo": "Prompts over 200k tokens",
"inputEurPer1M": 1,
"outputEurPer1M": 1,
"cacheCreationInputEurPer1M": 1,
"cacheCreation1hInputEurPer1M": 1,
"cacheReadInputEurPer1M": 1,
"audioInputEurPer1M": 1,
"audioOutputEurPer1M": 1,
"audioCacheReadInputEurPer1M": 1
}
]
},
"deployments": [
{
"tier": "eu-resident",
"jurisdiction": "US",
"region": "europe-west1",
"processing": "eu",
"processing_label": "EU (europe-west1, Belgium)",
"operator": "Google LLC",
"quantization": "unknown",
"precisionSource": "unknown",
"certifications": [
"<string>"
],
"supportedProviderTools": [
"web_search"
],
"dataRetention": "unknown",
"pricing": {
"inputUsdPer1M": 1,
"outputUsdPer1M": 1,
"inputEurPer1M": 1,
"outputEurPer1M": 1,
"cacheCreationInputUsdPer1M": 1,
"cacheCreation1hInputUsdPer1M": 1,
"cacheReadInputUsdPer1M": 1,
"audioInputUsdPer1M": 1,
"audioOutputUsdPer1M": 1,
"audioCacheReadInputUsdPer1M": 1,
"cacheCreationInputEurPer1M": 1,
"cacheCreation1hInputEurPer1M": 1,
"cacheReadInputEurPer1M": 1,
"audioInputEurPer1M": 1,
"audioOutputEurPer1M": 1,
"audioCacheReadInputEurPer1M": 1
}
}
],
"description": "Most efficient for everyday tasks"
}
],
"providers": [
"<string>"
],
"defaultModelId": "mistral/mistral-small-2503",
"fx": {
"base": "EUR",
"quote": "USD",
"rate": 1.1403,
"source": "ECB euro foreign exchange reference rate",
"date": "2026-09-25"
}
}{
"type": "https://api.veryfront.com/errors/validation-failed",
"title": "Validation Failed",
"status": 400,
"cause": "schedule_concurrency_forbidden",
"idempotency": {
"state": "in_progress",
"operation": "<string>",
"retryable": true,
"retry_after_seconds": 1,
"expires_at": "<string>",
"recovery": {
"available": true,
"description": "<string>",
"resource_url": "<string>"
}
},
"code": "RUN_INVALID_INPUT",
"detail": "The 'email' field must be a valid email address",
"instance": "/projects/my-project/members",
"slug": "validation-failed",
"category": "VALIDATION",
"suggestion": "Check the request body and query parameters against the API documentation.",
"errors": [
{
"field": "email",
"message": "Invalid email format",
"code": "INVALID_FORMAT"
}
]
}{
"type": "https://api.veryfront.com/errors/validation-failed",
"title": "Validation Failed",
"status": 400,
"cause": "schedule_concurrency_forbidden",
"idempotency": {
"state": "in_progress",
"operation": "<string>",
"retryable": true,
"retry_after_seconds": 1,
"expires_at": "<string>",
"recovery": {
"available": true,
"description": "<string>",
"resource_url": "<string>"
}
},
"code": "RUN_INVALID_INPUT",
"detail": "The 'email' field must be a valid email address",
"instance": "/projects/my-project/members",
"slug": "validation-failed",
"category": "VALIDATION",
"suggestion": "Check the request body and query parameters against the API documentation.",
"errors": [
{
"field": "email",
"message": "Invalid email format",
"code": "INVALID_FORMAT"
}
]
}Response
Public platform model catalog. Requires no authentication, reads no caller context, and is identical for every caller, so it is cacheable. Provider cost is served in EUR only. Pricing source links are not included; the authenticated GET /ai/models carries them.
Public model catalog with customer pricing.
Publicly listed AI models
Show child attributes
Show child attributes
Provider names represented in the catalog
Default unified model ID recommended by the API
Example:
"mistral/mistral-small-2503"
1 base = rate quote. EUR prices converted from USD are the USD price divided by rate, rounded to 6 decimal places. For a host that invoices in EUR the EUR prices are that host's published EUR list, unconverted and unrounded.
Show child attributes
Show child attributes