List Models
curl --request GET \
--url https://api.unifically.com/v1/models \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.unifically.com/v1/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.unifically.com/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.unifically.com/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: 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.unifically.com/v1/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.unifically.com/v1/models")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.unifically.com/v1/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{
"object": "<string>",
"data": [
{
"id": "<string>",
"object": "<string>",
"created": 123,
"added": 123,
"owned_by": "<string>",
"provider_display": "<string>",
"display_name": "<string>",
"category": "<string>",
"context_length": 123,
"max_output": 123
}
]
}Getting Started
List Models
List every model available to your account, across video, image, audio, and LLM. See parameters, pricing, and API examples.
GET
/
v1
/
models
List Models
curl --request GET \
--url https://api.unifically.com/v1/models \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.unifically.com/v1/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.unifically.com/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.unifically.com/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: 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.unifically.com/v1/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.unifically.com/v1/models")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.unifically.com/v1/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{
"object": "<string>",
"data": [
{
"id": "<string>",
"object": "<string>",
"created": 123,
"added": 123,
"owned_by": "<string>",
"provider_display": "<string>",
"display_name": "<string>",
"category": "<string>",
"context_length": 123,
"max_output": 123
}
]
}Returns every enabled model your API key can access — video, image, and audio generation models alongside LLMs — in the OpenAI-compatible list format, so existing OpenAI SDK code works unchanged.
To return only LLM models:
To return models from more than one category, separate the categories with commas:
An invalid
This endpoint returns the raw OpenAI list shape (
{ "object": "list", "data": [...] }), not the standard { success, code, data } envelope used by the rest of the API.Request
curl https://api.unifically.com/v1/models \
-H "Authorization: Bearer YOUR_API_KEY"
string
Optional comma-separated list of model categories:
llm, video, image, or audio. Values are case-insensitive. Example: category=video,image.curl "https://api.unifically.com/v1/models?category=llm" \
-H "Authorization: Bearer YOUR_API_KEY"
curl "https://api.unifically.com/v1/models?category=video,image" \
-H "Authorization: Bearer YOUR_API_KEY"
Response
{
"object": "list",
"data": [
{
"id": "elevenlabs/text-to-speech",
"object": "model",
"created": 1715040000,
"added": 1753142400,
"owned_by": "elevenlabs",
"provider_display": "ElevenLabs",
"display_name": "ElevenLabs Text-to-Speech",
"category": "audio"
},
{
"id": "moonshotai/kimi-k3",
"object": "model",
"created": 1784160000,
"added": 1784246400,
"owned_by": "moonshotai",
"provider_display": "Moonshot AI",
"display_name": "Kimi K3",
"category": "llm",
"context_length": 1048576,
"max_output": 131072
},
{
"id": "google/veo-3.1-fast",
"object": "model",
"created": 1760486400,
"added": 1760572800,
"owned_by": "google",
"provider_display": "Google",
"display_name": "Veo 3.1 Fast",
"category": "video"
}
]
}
Response Fields
string
Always
"list".array
The list of models, grouped by category and sorted by display name.
Show Model object
Show Model object
string
Model identifier in
provider/model-name format. This is the exact value to pass as model when creating tasks or LLM requests.string
Always
"model".integer
Provider’s official release date as a unix timestamp (seconds). Falls back to
added when the release date is unknown.integer
Unix timestamp (seconds) when the model was added to Unifically.
string
Provider slug, e.g.
google, moonshotai, elevenlabs. This is also the first segment of id.string
Human-readable provider name, e.g.
Google, Moonshot AI, ElevenLabs. Use this for display instead of the raw owned_by slug.string
Human-readable model name.
string
One of
audio, image, video, llm. Provider-anchored: ElevenLabs and Suno models are always audio (including speech-to-text and lyrics).integer
Maximum context window in tokens. LLM models only.
integer
Maximum output tokens per request. LLM models only.
Retrieve a Model
GET/v1/models/{model_id}
Returns a single model object by its exact ID (OpenAI retrieve-model compatible).
curl https://api.unifically.com/v1/models/google/veo-3.1-fast \
-H "Authorization: Bearer YOUR_API_KEY"
{
"id": "google/veo-3.1-fast",
"object": "model",
"created": 1760486400,
"added": 1760572800,
"owned_by": "google",
"provider_display": "Google",
"display_name": "Veo 3.1 Fast",
"category": "video"
}
Filter by Provider
If the path segment is a provider slug instead of a model ID, the response is a list filtered to that provider:curl https://api.unifically.com/v1/models/elevenlabs \
-H "Authorization: Bearer YOUR_API_KEY"
{
"object": "list",
"data": [
{
"id": "elevenlabs/text-to-speech",
"object": "model",
"created": 1715040000,
"added": 1753142400,
"owned_by": "elevenlabs",
"provider_display": "ElevenLabs",
"display_name": "ElevenLabs Text-to-Speech",
"category": "audio"
}
]
}
Errors
An unknown model ID or provider returns a404 in the OpenAI error shape:
404
{
"error": {
"message": "model or provider not found: foo/bar",
"type": "invalid_request_error",
"code": "model_not_found"
}
}
category value returns a 400 in the same shape:
400
{
"error": {
"message": "category must be a comma-separated list of: llm, video, image, audio",
"type": "invalid_request_error",
"code": "invalid_category"
}
}
Authentication
All requests require a valid API key in the Authorization header:Authorization: Bearer YOUR_API_KEY
Get your API key from the Unifically Dashboard.