curl --request GET \
--url https://api.veryfront.com/ai/models \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.veryfront.com/ai/models"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.veryfront.com/ai/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/ai/models",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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/ai/models"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
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/ai/models")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.veryfront.com/ai/models")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
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"
],
"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,
"limit": {
"context": 1000000,
"output": 128000
},
"reasoning_mode": "budget",
"transport": "chat-completions",
"reasoning_budget_tokens": 2048,
"chat_completions_reasoning_with_function_tools": false,
"chat_completions_consecutive_system_messages": true
},
"temperature": {
"min": 1,
"max": 1
},
"supportedProviderTools": [
"web_search",
"web_fetch"
],
"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": {
"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,
"tiers": [
{
"inputUsdPer1M": 1,
"outputUsdPer1M": 1,
"inputEurPer1M": 1,
"outputEurPer1M": 1,
"id": "long-context",
"label": "Long context",
"appliesTo": "Prompts over 200k tokens",
"cacheCreationInputUsdPer1M": 1,
"cacheCreation1hInputUsdPer1M": 1,
"cacheReadInputUsdPer1M": 1,
"audioInputUsdPer1M": 1,
"audioOutputUsdPer1M": 1,
"audioCacheReadInputUsdPer1M": 1,
"cacheCreationInputEurPer1M": 1,
"cacheCreation1hInputEurPer1M": 1,
"cacheReadInputEurPer1M": 1,
"audioInputEurPer1M": 1,
"audioOutputEurPer1M": 1,
"audioCacheReadInputEurPer1M": 1
}
]
},
"pricingSources": {
"directProvider": "<string>",
"azure": "<string>"
},
"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>"
],
"dataRetention": "unknown",
"supportedProviderTools": [
"web_search"
],
"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
}
}
],
"surface": "anthropic",
"operations": [
"messages"
],
"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"
},
"web_tools": [
{
"tool": "web_search",
"data_sent": "query_and_search_options",
"recipient_class": "third_party_search_provider",
"boundary_covered": true,
"available": true,
"unavailable_reason": "boundary_not_covered"
}
]
}{
"type": "https://api.veryfront.com/errors/validation-failed",
"title": "Validation Failed",
"status": 400,
"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"
}
]
}{
"error": "<string>",
"code": "<string>",
"model": "<string>",
"successor": "<string>",
"retired_on": "<string>",
"allowed_models": [
"<string>"
]
}List models
Returns available AI models and providers. A project-scoped credential, or a selector header naming a project the caller can see, narrows the list to what that project’s inference policy permits.
curl --request GET \
--url https://api.veryfront.com/ai/models \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.veryfront.com/ai/models"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.veryfront.com/ai/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/ai/models",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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/ai/models"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
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/ai/models")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.veryfront.com/ai/models")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
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"
],
"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,
"limit": {
"context": 1000000,
"output": 128000
},
"reasoning_mode": "budget",
"transport": "chat-completions",
"reasoning_budget_tokens": 2048,
"chat_completions_reasoning_with_function_tools": false,
"chat_completions_consecutive_system_messages": true
},
"temperature": {
"min": 1,
"max": 1
},
"supportedProviderTools": [
"web_search",
"web_fetch"
],
"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": {
"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,
"tiers": [
{
"inputUsdPer1M": 1,
"outputUsdPer1M": 1,
"inputEurPer1M": 1,
"outputEurPer1M": 1,
"id": "long-context",
"label": "Long context",
"appliesTo": "Prompts over 200k tokens",
"cacheCreationInputUsdPer1M": 1,
"cacheCreation1hInputUsdPer1M": 1,
"cacheReadInputUsdPer1M": 1,
"audioInputUsdPer1M": 1,
"audioOutputUsdPer1M": 1,
"audioCacheReadInputUsdPer1M": 1,
"cacheCreationInputEurPer1M": 1,
"cacheCreation1hInputEurPer1M": 1,
"cacheReadInputEurPer1M": 1,
"audioInputEurPer1M": 1,
"audioOutputEurPer1M": 1,
"audioCacheReadInputEurPer1M": 1
}
]
},
"pricingSources": {
"directProvider": "<string>",
"azure": "<string>"
},
"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>"
],
"dataRetention": "unknown",
"supportedProviderTools": [
"web_search"
],
"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
}
}
],
"surface": "anthropic",
"operations": [
"messages"
],
"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"
},
"web_tools": [
{
"tool": "web_search",
"data_sent": "query_and_search_options",
"recipient_class": "third_party_search_provider",
"boundary_covered": true,
"available": true,
"unavailable_reason": "boundary_not_covered"
}
]
}{
"type": "https://api.veryfront.com/errors/validation-failed",
"title": "Validation Failed",
"status": 400,
"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"
}
]
}{
"error": "<string>",
"code": "<string>",
"model": "<string>",
"successor": "<string>",
"retired_on": "<string>",
"allowed_models": [
"<string>"
]
}Authorizations
Use a JWT bearer token or a Veryfront API key in the Authorization header.
Headers
Project UUID or slug used to attribute billing finalization.
1 - 255Project ID used to attribute billing finalization.
1 - 255Project slug used to attribute billing finalization.
1 - 255Response
Model catalog
Available AI models.
Show child attributes
Show child attributes
Available provider names.
Default unified model ID recommended by the API.
"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
The platform web tools' data flows. Facts about the tool, not about the model: inference residency says nothing about where a search query or fetched URL goes.
Show child attributes
Show child attributes