API метаданных списка моделей
curl --request GET \
--url https://api.apimart.ai/v1/modelsimport requests
url = "https://api.apimart.ai/v1/models"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.apimart.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.apimart.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",
]);
$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.apimart.ai/v1/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.apimart.ai/v1/models")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.apimart.ai/v1/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Модели
API метаданных списка моделей
- GET /v1/models: базовый список с категориями, возможностями и схемой параметров через expand
- Поддерживает фильтр
categoryи получение JSON Schema черезexpand=parameters - Подходит для автоматизации, динамических форм и предварительной проверки
GET
/
v1
/
models
API метаданных списка моделей
curl --request GET \
--url https://api.apimart.ai/v1/modelsimport requests
url = "https://api.apimart.ai/v1/models"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.apimart.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.apimart.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",
]);
$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.apimart.ai/v1/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.apimart.ai/v1/models")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.apimart.ai/v1/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_bodyAPI метаданных списка моделей (
GET /v1/models) по умолчанию возвращает только базовые поля, например имя модели. Параметр запроса expand добавляет к каждой модели следующие данные:- Категория (
category):chat/image/video/audio - Метки возможностей (
capability_tags): например,Text to VideoиImage to Image - Контракт параметров (
parameters): стандартная JSON Schema с обязательными и необязательными полями, перечислениями, диапазонами и значениями по умолчанию
Обратная совместимость: без expand (или с нераспознанным значением) ответ полностью совпадает с прежним форматом и не влияет на существующие клиенты.
Область моделей: возвращаемые модели зависят от ограничений моделей и группы, назначенной API-ключу.
category=unknown означает, что метаданные категории этой модели еще не зарегистрированы на платформе.Получение списка моделей с метаданными
GET/v1/models
Заголовки запроса
Authorization: Bearer YOUR_API_KEY
Параметры запроса
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
expand | string | Нет | category: добавляет категорию и метки возможностей (компактный ответ); parameters: также добавляет полную JSON Schema параметров (большой ответ) |
category | string | Нет | Фильтр по chat / image / video / audio / unknown. Действует только при наличии expand |
expand и определяется ограничениями моделей и группой, назначенной API-ключу.
Пример 1: только категория
cURL
curl -s "https://api.apimart.ai/v1/models?expand=category" \
-H "Authorization: Bearer YOUR_API_KEY"
{
"success": true,
"object": "list",
"data": [
{
"id": "wan2.6",
"object": "model",
"created": 1626777600,
"owned_by": "alibaba",
"supported_endpoint_types": ["openai"],
"category": "video",
"capability_tags": ["Text to Video"]
},
{
"id": "gpt-4o",
"object": "model",
"created": 1626777600,
"owned_by": "openai",
"supported_endpoint_types": ["openai"],
"category": "chat",
"capability_tags": ["Text", "Vision"]
}
]
}
Пример 2: полный контракт параметров для видеомоделей
cURL
curl -s "https://api.apimart.ai/v1/models?expand=parameters&category=video" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Accept-Encoding: gzip" --compressed
input_schema.properties содержит только часть полей):
{
"id": "wan2.6",
"object": "model",
"created": 1626777600,
"owned_by": "alibaba",
"supported_endpoint_types": ["openai"],
"category": "video",
"capability_tags": ["Text to Video"],
"parameters": {
"operation": "video_generation",
"method": "POST",
"endpoint": "/v1/videos/generations",
"schema_version": "2026-07-30",
"source": "task_model_registry",
"input_schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"additionalProperties": true,
"required": ["model"],
"anyOf": [
{ "required": ["prompt"] },
{ "required": ["messages"] },
{ "required": ["image_urls"] },
{ "required": ["image_with_roles"] },
{ "required": ["video_urls"] }
],
"properties": {
"model": { "type": "string", "const": "wan2.6" },
"prompt": { "type": "string", "minLength": 1 },
"duration": { "type": "integer", "minimum": 1 },
"resolution": { "type": "string" },
"aspect_ratio": { "type": "string" }
}
}
}
}
Поля ответа
Поля элемента
| Поле | Тип | Условие | Описание |
|---|---|---|---|
id / object / created / owned_by / supported_endpoint_types | - | Всегда | Как в существующем API |
category | string | С expand | chat / image / video / audio / unknown |
capability_tags | string[] | С expand, если есть метки | См. таблицу меток возможностей |
parameters | object | С expand=parameters, если есть контракт | См. блок parameters |
category=unknown означает, что метаданные категории модели еще не зарегистрированы на платформе (обычно это нестандартное имя в списке разрешенных моделей API-ключа). Саму модель по-прежнему можно вызывать обычным образом.
Метки возможностей
| Категория | Возможные метки |
|---|---|
| video | Text to Video, Image to Video, Video to Video |
| image | Text to Image, Image to Image |
| chat | Text, Embedding, Vision, Audio, Omni |
| audio | Audio |
Блок parameters
| Поле | Описание |
|---|---|
operation | image_generation / video_generation |
method + endpoint | HTTP-метод и путь для вызова модели (например, POST /v1/videos/generations) |
schema_version | Версия контракта (дата); между версиями поля только добавляются |
source | Источник данных контракта для диагностики; base означает, что доступен только общий базовый контракт |
input_schema | Полный контракт тела запроса в формате JSON Schema draft 2020-12 |
Как читать input_schema
Это стандартная JSON Schema, которую могут напрямую обрабатывать распространенные инструменты, включая ajv, pydantic и openapi-generator.- Обязательные параметры = массив
requiredверхнего уровня;anyOfозначает «как минимум одна из следующих комбинаций» (в примере выше — одна изprompt,messagesили трех ссылок на медиа) - Перечисляемые значения =
enumв свойстве - Диапазон =
minimum/maximum - Значение по умолчанию =
default additionalProperties: true: разрешает специфичные для модели дополнительные параметры, не перечисленные в схеме (передаются черезmetadata)
Запрос одной модели
Помимо списка, для контракта отдельной модели предусмотрен специальный endpoint (та же структура с дополнительными блоками об идемпотентности и контракте ответа):curl -s "https://api.apimart.ai/v1/models/wan2.6/schema" \
-H "Authorization: Bearer YOUR_API_KEY"
# Для имени модели с "/" используйте форму с параметром запроса
curl -s "https://api.apimart.ai/v1/model-schema?model=provider/model-name" \
-H "Authorization: Bearer YOUR_API_KEY"
Примечания
- Сейчас модели chat / audio содержат только
categoryиcapability_tags, безparameters(контракты параметров пока охватывают только image / video и будут дополнены в следующих версиях). - Схема является контрактом на основе доступных данных; окончательной считается серверная проверка. Некоторые динамические ограничения, например определенные сочетания разрешения и длительности, могут быть выражены в схеме не полностью. Сервер все равно может отклонить запрос и вернуть конкретную причину.
- Данные обновляются с точностью до нескольких минут. Каталог кэшируется, поэтому новые модели или изменения параметров могут появиться с небольшой задержкой.
- Полный ответ с
expand=parametersможет занимать несколько сотен КБ. По возможности фильтруйте поcategoryи отправляйтеAccept-Encoding: gzip. - Этот параметр действует только для списков моделей в формате OpenAI. Списки в форматах Anthropic / Gemini не поддерживают
expand.