List available models
curl --request GET \
--url https://api.infery.ai/v1/models \
--header 'Authorization: <api-key>'import requests
url = "https://api.infery.ai/v1/models"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://api.infery.ai/v1/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.infery.ai/v1/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: <api-key>"
],
]);
$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.infery.ai/v1/models"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<api-key>")
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.infery.ai/v1/models")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.infery.ai/v1/models")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"object": "list",
"data": [
{
"id": "gpt-4o",
"object": "model",
"created": 1713204900,
"owned_by": "openai",
"permission": [
"<unknown>"
],
"root": "gpt-4o",
"parent": null,
"_infery": {
"modality": "text",
"supports_chat": true,
"supports_embeddings": true,
"supports_streaming": true,
"supports_tools": true,
"max_context_tokens": 128000,
"max_output_tokens": 16384,
"pricing": {
"currency": "credits",
"unit": "per_token",
"input_per_million": 312.5,
"output_per_million": 1250,
"audio_input_per_million": 1200,
"audio_output_per_million": 2400,
"image_input_per_million": 800,
"image_output_per_million": 3000,
"cached_input_per_million": 31.25,
"cache_write_per_million": 390.625,
"cache_write_1h_per_million": 625,
"request_price": 4,
"image_price": 3.125,
"second_price": 50,
"minute_price": 0.75,
"character_price": 0.001875,
"operation_price": 3.125,
"megapixel_price": 1.5
},
"allowed_params": {
"max_n": 123,
"aspect_ratios": [
"<string>"
],
"image_sizes": [
"<string>"
],
"sizes": [
"<string>"
],
"resolutions": [
"<string>"
],
"qualities": [
"<string>"
],
"styles": [
"<string>"
],
"background": [
"<string>"
],
"output_formats": [
"<string>"
],
"response_formats": [
"<string>"
],
"person_generation": [
"<string>"
],
"voices": [
"<string>"
],
"accepts_voice_instructions": true,
"requires_voice_instructions": true,
"durations": [
123
],
"default_duration": 123,
"max_duration_seconds": 123,
"default_params": {},
"strength": {
"min": 123,
"max": 123,
"required": true
},
"requires_input_image": true,
"requires_input_video": true,
"requires_input_audio": true,
"requires_input_3d": true,
"accepts_input_image": true,
"accepts_input_video": true,
"supported_inputs": [
"<string>"
],
"max_file_size_bytes": 123,
"max_image_size_bytes": 123,
"max_pdf_size_bytes": 123,
"max_pdf_pages": 123,
"max_audio_size_bytes": 123,
"max_audio_duration_seconds": 123,
"max_files": 123
}
}
}
]
}{
"error": {
"message": "Model not found",
"type": "invalid_request_error",
"code": "model_not_found",
"param": "model",
"job_id": "job_1hR9xTPZqK4mVLc2nJ7fY5wB"
}
}Models
Models
GET /v1/models — list available model slugs and capabilities.
GET
/
v1
/
models
List available models
curl --request GET \
--url https://api.infery.ai/v1/models \
--header 'Authorization: <api-key>'import requests
url = "https://api.infery.ai/v1/models"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://api.infery.ai/v1/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.infery.ai/v1/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: <api-key>"
],
]);
$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.infery.ai/v1/models"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<api-key>")
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.infery.ai/v1/models")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.infery.ai/v1/models")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"object": "list",
"data": [
{
"id": "gpt-4o",
"object": "model",
"created": 1713204900,
"owned_by": "openai",
"permission": [
"<unknown>"
],
"root": "gpt-4o",
"parent": null,
"_infery": {
"modality": "text",
"supports_chat": true,
"supports_embeddings": true,
"supports_streaming": true,
"supports_tools": true,
"max_context_tokens": 128000,
"max_output_tokens": 16384,
"pricing": {
"currency": "credits",
"unit": "per_token",
"input_per_million": 312.5,
"output_per_million": 1250,
"audio_input_per_million": 1200,
"audio_output_per_million": 2400,
"image_input_per_million": 800,
"image_output_per_million": 3000,
"cached_input_per_million": 31.25,
"cache_write_per_million": 390.625,
"cache_write_1h_per_million": 625,
"request_price": 4,
"image_price": 3.125,
"second_price": 50,
"minute_price": 0.75,
"character_price": 0.001875,
"operation_price": 3.125,
"megapixel_price": 1.5
},
"allowed_params": {
"max_n": 123,
"aspect_ratios": [
"<string>"
],
"image_sizes": [
"<string>"
],
"sizes": [
"<string>"
],
"resolutions": [
"<string>"
],
"qualities": [
"<string>"
],
"styles": [
"<string>"
],
"background": [
"<string>"
],
"output_formats": [
"<string>"
],
"response_formats": [
"<string>"
],
"person_generation": [
"<string>"
],
"voices": [
"<string>"
],
"accepts_voice_instructions": true,
"requires_voice_instructions": true,
"durations": [
123
],
"default_duration": 123,
"max_duration_seconds": 123,
"default_params": {},
"strength": {
"min": 123,
"max": 123,
"required": true
},
"requires_input_image": true,
"requires_input_video": true,
"requires_input_audio": true,
"requires_input_3d": true,
"accepts_input_image": true,
"accepts_input_video": true,
"supported_inputs": [
"<string>"
],
"max_file_size_bytes": 123,
"max_image_size_bytes": 123,
"max_pdf_size_bytes": 123,
"max_pdf_pages": 123,
"max_audio_size_bytes": 123,
"max_audio_duration_seconds": 123,
"max_files": 123
}
}
}
]
}{
"error": {
"message": "Model not found",
"type": "invalid_request_error",
"code": "model_not_found",
"param": "model",
"job_id": "job_1hR9xTPZqK4mVLc2nJ7fY5wB"
}
}curl https://api.infery.ai/v1/models \
-H "Authorization: Bearer $INFERY_API_KEY"
{
"object": "list",
"data": [
{
"id": "gpt-4o",
"object": "model",
"created": 1713000000,
"owned_by": "openai"
},
...
]
}
Filter by modality
There is nomodality query parameter — the endpoint takes only include_tools, and any other query key is ignored rather than refused. List once and filter client-side on _infery.modality:
curl "https://api.infery.ai/v1/models" \
-H "Authorization: Bearer $INFERY_API_KEY" \
| jq '[.data[] | select(._infery.modality == "image")]'
text, image, audio, stt, video, music, embedding, upscale, vision.
Capabilities
There is no per-modelGET /v1/models/{slug} — the list response already carries everything, under each entry’s _infery object:
supports_chat/supports_streaming/supports_tools/supports_embeddingsmax_context_tokens/max_output_tokenspricing— retail rates in creditsallowed_params— the generation knobs the model accepts:sizes,image_sizes,aspect_ratios,resolutions,qualities,voices,durations,response_formats,max_n,default_params
id to learn what each model can do.
To price a specific call before making it, POST /v1/models/{slug}/estimate.
Public catalog
No-auth version available at:GET https://api.infery.ai/public/models
Authorizations
API key in format: Bearer inf_***
Query Parameters
Include kind='tool' rows (default: false)