API
用一把密钥调用已开通的模型
鉴权统一为 Authorization: Bearer sk-...。实际能打通的能力和字段取决于该模型在开放平台上的配置,而不是某一份 SDK 的全部功能清单。
根地址
| 用途 | 地址 |
|---|---|
| 服务根 | https://api.madeapi.com |
| OpenAI SDK Base URL | https://api.madeapi.com/v1 |
列出模型
curl https://api.madeapi.com/v1/models \
-H "Authorization: Bearer $MADEAPI_KEY"
返回里的 id 原样填进后续请求的 model。
Chat Completions
curl https://api.madeapi.com/v1/chat/completions \
-H "Authorization: Bearer $MADEAPI_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "你的模型 ID",
"stream": true,
"messages": [
{"role": "system", "content": "回答简洁。"},
{"role": "user", "content": "2+2 等于几?"}
]
}'
Python
from openai import OpenAI
client = OpenAI(
api_key="sk-你的密钥",
base_url="https://api.madeapi.com/v1",
)
r = client.chat.completions.create(
model="你的模型 ID",
messages=[{"role": "user", "content": "你好"}],
)
print(r.choices[0].message.content)
Node.js
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.MADEAPI_KEY,
baseURL: "https://api.madeapi.com/v1",
});
const r = await client.chat.completions.create({
model: "你的模型 ID",
messages: [{ role: "user", content: "你好" }],
});
console.log(r.choices[0].message.content);
其他常用入口
| 协议 | 方法 |
|---|---|
| OpenAI Responses | POST /v1/responses |
| Anthropic Messages | POST /v1/messages,请求头同时带 x-api-key 或 Bearer,以及 anthropic-version |
| Gemini | POST /v1beta/models/{model}:generateContent 及对应 stream 接口 |
| 图片 | POST /v1/images/generations、/v1/images/edits |
| 语音 | /v1/audio/speech、/v1/audio/transcriptions、/v1/audio/translations |
| 向量 / 重排 | POST /v1/embeddings、POST /v1/rerank |
同一模型未必实现全部入口。先看开放平台该模型说明,再用 Playground 或最小请求验证。流式输出需要客户端与反向代理允许 chunked / SSE,不要在中间层把响应缓冲完再返回。
错误怎么读
- 401:密钥错误、已禁用,或请求没带 Bearer。
- 403 / 没有权限:密钥所属分组看不到该模型。
- 429:限流,降低并发或稍后重试。
- 余额不足:先充值;网页聊天同样会失败。
- 上游超时或 5xx:看开放平台日志里的失败原因,换模型或稍后重试。