端点与协议
按模型能力选择端点。
选择支持所需端点、工具和输入类型的模型。Chat Completions、Responses 与 Messages 的结构不同,仅修改路径并不足够。
API端点
| 方法 | 小路 | 描述 |
|---|---|---|
| POST | /v1/messages | 人类消息 API(推荐) |
| POST | /v1/chat/completions | OpenAI 聊天完成(兼容) |
| POST | /v1/images/generations | OpenAI Images Generations (req/gpt-image-2) |
| POST | /v1/images/edits | OpenAI 图像编辑 / 参考图 (req/gpt-image-2) |
| POST | /v1/audio/speech | OpenAI Audio Speech / TTS (req/gpt-4o-mini-tts) |
| POST | /v1/videos | OpenAI Videos — 创建视频 |
| GET | /v1/videos/{id} | 查询视频生成进度(不额外扣费) |
| GET | /v1/videos/{id}/content | 下载 MP4 文件(不额外扣费) |
| DELETE | /v1/videos/{id} | 取消等待中的任务(不额外扣费) |
| POST | /v1/responses | OpenAI 响应 API(兼容) |
| GET | /v1/models | 模型及价格一览表 |
| POST | /v1/messages/count_tokens | token估算(免费) |
/v1/messages/count_tokens
此端点提供免费的本地估算,并非模型官方分词器。input_tokens 的上限为 200,000,因此不能据此确认大型提示词适合上下文窗口或确定最终费用。请以实际生成 usage 对账。下方 JSON 仅为示意,并非实时响应。
curl --fail-with-body "https://apivn.dev/v1/messages/count_tokens" \
-H "x-api-key: ${STALI_API_KEY:?STALI_API_KEY}" \
-H "Content-Type: application/json" \
-d '{"model":"claude-fable-5","messages":[{"role":"user","content":"Hello"}]}'Responses 与工具调用
Responses 示例使用 POST /v1/responses,并在 input 中携带上下文。本文档不承诺支持尚未公布的响应存储、检索或列表操作。
import os
from getpass import getpass
from openai import OpenAI
client = OpenAI(api_key=os.getenv("STALI_API_KEY") or getpass("STALI_API_KEY: "), base_url="https://apivn.dev/v1", max_retries=0)
stream = client.responses.create(model="gpt-5.6-sol", input="Hello", stream=True, store=False)
completed = False
for event in stream:
if event.type == "response.output_text.delta":
print(event.delta, end="", flush=True)
elif event.type == "response.completed":
completed = event.response.status == "completed"
elif event.type in ("error", "response.failed", "response.incomplete"):
raise RuntimeError(str(event))
if not completed:
raise RuntimeError("Stream ended without response.completed; preserve the request ID and check usage before retrying.")两个 JSON 示例分别用于 Chat Completions 和 Messages。Python 示例通过本地加法展示完整工具调用:验证名称和参数、执行函数,再使用对应 call ID 发送结果。网关不会自动执行函数。每轮模型请求可能分别计费;示例最多运行 4 轮,并关闭 SDK 自动重试。
示例经过源码审查和本地检查,不代表已验证每个应用版本。正式使用前请检查设置、发送小型请求并确认用量。

