API de metadados da lista de modelos
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_bodyModelos
API de metadados da lista de modelos
- GET /v1/models: lista básica ampliada via expand com categorias, recursos e esquema de parâmetros
- Compatível com filtro
categorye JSON Schema viaexpand=parameters - Útil para automação, formulários dinâmicos e pré-validação
GET
/
v1
/
models
API de metadados da lista de modelos
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_bodyA API de metadados da lista de modelos (
GET /v1/models) retorna, por padrão, apenas campos básicos, como o nome do modelo. Ao adicionar o parâmetro de consulta expand, cada modelo passa a incluir:- Categoria (
category):chat/image/video/audio - Tags de capacidade (
capability_tags): por exemplo,Text to VideoeImage to Image - Contrato de parâmetros (
parameters): JSON Schema padrão que indica campos obrigatórios/opcionais, enumerações, intervalos e valores padrão
Compatibilidade retroativa: sem expand (ou com um valor não reconhecido), a resposta é idêntica ao formato existente e não afeta os clientes atuais.
Escopo dos modelos: os modelos retornados dependem das restrições de modelos e do grupo atribuído à chave de API.
category=unknown indica que a plataforma ainda não catalogou os metadados de categoria desse modelo.Obter a lista de modelos com metadados
GET/v1/models
Cabeçalhos da solicitação
Authorization: Bearer YOUR_API_KEY
Parâmetros de consulta
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
expand | string | Não | category: adiciona categoria e tags de capacidade (leve); parameters: também adiciona o JSON Schema completo dos parâmetros (resposta grande) |
category | string | Não | Filtra por chat / image / video / audio / unknown. Só é aplicado quando expand é informado |
expand: ele depende das restrições de modelos e do grupo atribuído à chave de API.
Exemplo 1: somente a categoria
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"]
}
]
}
Exemplo 2: contrato completo de parâmetros para modelos de vídeo
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 mostra apenas alguns campos):
{
"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" }
}
}
}
}
Campos da resposta
Campos do item
| Campo | Tipo | Condição | Descrição |
|---|---|---|---|
id / object / created / owned_by / supported_endpoint_types | - | Sempre | Igual à API existente |
category | string | Com expand | chat / image / video / audio / unknown |
capability_tags | string[] | Com expand e quando houver tags | Consulte a tabela de tags de capacidade |
parameters | object | Com expand=parameters e quando houver um contrato | Consulte o bloco parameters |
category=unknown indica que a plataforma ainda não catalogou os metadados de categoria desse modelo (normalmente, um nome não padrão configurado na lista permitida da chave de API). O modelo continua disponível para uso normal.
Tags de capacidade
| Categoria | Tags possíveis |
|---|---|
| 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 |
Bloco parameters
| Campo | Descrição |
|---|---|
operation | image_generation / video_generation |
method + endpoint | Método HTTP e caminho usados para chamar o modelo (por exemplo, POST /v1/videos/generations) |
schema_version | Versão do contrato (data); entre versões, os campos são apenas adicionados |
source | Fonte dos dados do contrato para diagnóstico; base indica que existe somente o contrato base genérico |
input_schema | Contrato completo do corpo da solicitação em JSON Schema draft 2020-12 |
Como ler input_schema
É um JSON Schema padrão que as ferramentas mais usadas, como ajv, pydantic e openapi-generator, podem consumir diretamente.- Parâmetros obrigatórios = matriz
requiredde nível superior;anyOfsignifica “pelo menos uma das combinações a seguir” (no exemplo acima, uma entreprompt,messagesou as três entradas de mídia de referência) - Valores enumerados =
enumna propriedade - Intervalo =
minimum/maximum - Valor padrão =
default additionalProperties: true: permite parâmetros de extensão específicos do modelo que não estejam listados no esquema (encaminhados pormetadata)
Consultar um único modelo
Além da lista, há um endpoint dedicado para obter o contrato de um único modelo (mesma estrutura, com blocos adicionais que explicam a idempotência e o contrato da resposta):curl -s "https://api.apimart.ai/v1/models/wan2.6/schema" \
-H "Authorization: Bearer YOUR_API_KEY"
# Para nomes de modelo que contenham "/", use o formato com parâmetro de consulta
curl -s "https://api.apimart.ai/v1/model-schema?model=provider/model-name" \
-H "Authorization: Bearer YOUR_API_KEY"
Observações
- Atualmente, os modelos chat / audio têm apenas
categoryecapability_tags, semparameters(os contratos de parâmetros cobrem image / video e serão ampliados em versões futuras). - O esquema é um contrato de melhor esforço; a validação no servidor é a autoridade final. Algumas restrições dinâmicas, como combinações específicas de resolução e duração, podem não estar totalmente expressas no esquema. O servidor ainda pode rejeitar uma solicitação e retornar um motivo específico.
- A atualização dos dados ocorre em minutos. O catálogo é armazenado em cache, portanto novos modelos ou alterações de parâmetros podem levar alguns minutos para aparecer.
- Uma resposta completa com
expand=parameterspode chegar a centenas de KB. Filtre porcategoryquando possível e envieAccept-Encoding: gzip. - Este parâmetro se aplica apenas às listas de modelos no formato OpenAI. As listas nos formatos Anthropic / Gemini não são compatíveis com
expand.