列出模型
curl --request GET \
--url https://api.gravitex.ai/v1/modelsimport requests
url = "https://api.gravitex.ai/v1/models"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.gravitex.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.gravitex.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.gravitex.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.gravitex.ai/v1/models")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gravitex.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 文档
列出模型
获取当前 API Key 可用的模型列表,支持 OpenAI / Anthropic / Gemini 三种返回格式
GET
/
v1
/
models
列出模型
curl --request GET \
--url https://api.gravitex.ai/v1/modelsimport requests
url = "https://api.gravitex.ai/v1/models"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.gravitex.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.gravitex.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.gravitex.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.gravitex.ai/v1/models")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gravitex.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 Key 可用的全部模型列表。同一接口路径https://api.gravitex.ai/v1/models 会根据请求头自动返回对应平台的标准格式,无需切换接口或维护多份代码。
自动格式识别
根据请求头中的认证方式判断客户端类型,自动以 OpenAI / Anthropic / Gemini 的官方 ListModels 响应结构返回,让原生 SDK 可以直接对接。
格式识别规则
| 请求特征 | 返回格式 |
|---|---|
x-api-key + anthropic-version 请求头 | Anthropic |
x-goog-api-key 请求头 或 URL ?key=xxx | Gemini |
Authorization: Bearer ...(其他情况) | OpenAI(默认) |
若同时携带多种凭证,优先级为:Anthropic > Gemini > OpenAI。
认证
string
OpenAI 兼容认证,格式:
Bearer sk-xxxxxxxxxxstring
Anthropic 认证,直接填写 API Key(不带
Bearer 前缀)string
Anthropic 协议版本,如
2023-06-01string
Gemini 认证,直接填写 API Key
请求示例
- OpenAI 格式
- Anthropic 格式
- Gemini 格式
curl https://api.gravitex.ai/v1/models \
-H "Authorization: Bearer sk-XyLy**************************mIqSt"
from openai import OpenAI
client = OpenAI(
api_key="sk-XyLy**************************mIqSt",
base_url="https://api.gravitex.ai/v1"
)
models = client.models.list()
for model in models.data:
print(f"{model.id} ({model.owned_by})")
import OpenAI from 'openai';
const client = new OpenAI({
apiKey: 'sk-XyLy**************************mIqSt',
baseURL: 'https://api.gravitex.ai/v1'
});
const models = await client.models.list();
models.data.forEach(m => console.log(`${m.id} (${m.owned_by})`));
curl https://api.gravitex.ai/v1/models \
-H "x-api-key: sk-XyLy**************************mIqSt" \
-H "anthropic-version: 2023-06-01"
import anthropic
client = anthropic.Anthropic(
api_key="sk-XyLy**************************mIqSt",
base_url="https://api.gravitex.ai"
)
for model in client.models.list().data:
print(f"{model.id} ({model.display_name})")
curl "https://api.gravitex.ai/v1/models" \
-H "x-goog-api-key: sk-XyLy**************************mIqSt"
import requests
resp = requests.get(
"https://api.gravitex.ai/v1/models",
headers={"x-goog-api-key": "sk-XyLy**************************mIqSt"}
)
for model in resp.json()["models"]:
print(f"{model['name']} ({model['displayName']})")
响应示例
- OpenAI 格式
- Anthropic 格式
- Gemini 格式
{
"object": "list",
"data": [
{
"id": "gpt-5.4",
"object": "model",
"created": 1715232000,
"owned_by": "openai"
},
{
"id": "claude-sonnet-4-5-20250929",
"object": "model",
"created": 1743465600,
"owned_by": "anthropic"
},
{
"id": "gemini-2.5-pro",
"object": "model",
"created": 1746057600,
"owned_by": "google"
}
]
}
{
"data": [
{
"type": "model",
"id": "claude-opus-4-5-20251101",
"display_name": "Claude Opus 4.5",
"created_at": "2025-11-01T00:00:00Z"
},
{
"type": "model",
"id": "claude-sonnet-4-5-20250929",
"display_name": "Claude Sonnet 4.5",
"created_at": "2025-09-29T00:00:00Z"
}
],
"has_more": false,
"first_id": "claude-opus-4-5-20251101",
"last_id": "claude-sonnet-4-5-20250929"
}
{
"models": [
{
"name": "models/gemini-2.5-pro",
"version": "001",
"displayName": "Gemini 2.5 Pro",
"description": "Google 旗舰多模态推理模型",
"inputTokenLimit": 1048576,
"outputTokenLimit": 8192,
"supportedGenerationMethods": ["generateContent", "countTokens"]
},
{
"name": "models/gemini-3.1-pro-preview",
"version": "preview",
"displayName": "Gemini 3.1 Pro Preview",
"inputTokenLimit": 1048576,
"outputTokenLimit": 8192,
"supportedGenerationMethods": ["generateContent", "countTokens"]
}
]
}
响应字段
OpenAI 格式
| 字段 | 类型 | 说明 |
|---|---|---|
object | string | 固定为 list |
data | array | 模型列表 |
data[].id | string | 模型唯一标识,用于请求时填写 model 参数 |
data[].object | string | 固定为 model |
data[].created | integer | 模型发布时间(Unix 秒级时间戳) |
data[].owned_by | string | 模型提供商,如 openai、anthropic、google |
Anthropic 格式
| 字段 | 类型 | 说明 |
|---|---|---|
data | array | 模型列表 |
data[].type | string | 固定为 model |
data[].id | string | 模型唯一标识 |
data[].display_name | string | 展示名称 |
data[].created_at | string | 模型发布时间(ISO 8601 字符串) |
has_more | boolean | 是否还有下一页 |
first_id / last_id | string | 分页游标 |
Gemini 格式
| 字段 | 类型 | 说明 |
|---|---|---|
models | array | 模型列表 |
models[].name | string | 模型资源名,格式 models/{id} |
models[].displayName | string | 展示名称 |
models[].description | string | 模型描述 |
models[].inputTokenLimit | integer | 输入 token 上限 |
models[].outputTokenLimit | integer | 输出 token 上限 |
models[].supportedGenerationMethods | array | 支持的方法列表 |
错误处理
| 状态码 | 含义 | 处理建议 |
|---|---|---|
200 | 成功 | — |
401 | API Key 无效或已过期 | 检查 Key 是否拼写正确、是否已被禁用 |
429 | 请求频率过高 | 退避重试,或联系 BD 提升配额 |
500 | 服务内部错误 | 短暂重试,仍失败请联系支持 |
{
"error": {
"message": "Invalid API key",
"type": "invalid_request_error",
"code": "invalid_api_key"
}
}
最佳实践
- 建议缓存:模型列表变化不频繁,推荐在客户端缓存 1 小时以上,避免高频请求。
- 启动校验:可在服务启动时调用一次本接口,校验 Key 可用性及目标模型是否在权限范围内。
- 权限相关:返回列表会随 API Key 的开通权限动态变化,不同 Key 看到的模型可能不同。
- SDK 直连:使用 OpenAI / Anthropic / Google 官方 SDK 时,只需将 Base URL 指向
https://api.gravitex.ai,无需任何额外适配。
Python 示例依赖:
- OpenAI 格式:
pip install openai - Anthropic 格式:
pip install anthropic - Gemini 格式:
pip install requests
⌘I
