API 脚本接入
在你自己的程序中通过 HTTP 直接调用 Poke API,完整兼容 OpenAI 与 Anthropic 官方协议。所有请求使用 Authorization: Bearer YOUR_API_KEY 鉴权,请将示例中的 YOUR_API_KEY 替换为 控制台 中获取的密钥。
接口总览
| 接口 | 方法与路径 | 说明 |
|---|---|---|
| OpenAI Responses | POST /v1/responses | 新一代 OpenAI 接口,适合文本对话、图片理解和流式输出 |
| OpenAI Chat Completions | POST /v1/chat/completions | 兼容传统 OpenAI Chat 格式,便于已有客户端平滑迁移 |
| Anthropic Messages | POST /v1/messages | Claude / Anthropic Messages 格式,支持文本与视觉 |
| 图片生成 | POST /v1/images/generations | 文生图(gpt-image-2) |
| 图片编辑 | POST /v1/images/edits | 上传图片并按提示修改 |
基础地址:
https://www.pokeapi.top(OpenAI 系列接口路径均以/v1开头)。
OpenAI Responses(文本 + 视觉)
POST /v1/responses —— 适合文本对话、图片理解和流式输出。
纯文本
python
import json
import urllib.request
API_URL = "https://www.pokeapi.top/v1/responses"
API_KEY = "YOUR_API_KEY"
body = {
"model": "gpt-5.5",
"stream": True,
"input": "用中文简单介绍一下 Poke API。",
}
def iter_sse(response):
buffer = ""
while chunk := response.read(4096):
buffer += chunk.decode("utf-8", errors="replace")
frames = buffer.split("\n\n")
buffer = frames.pop()
for frame in frames:
data = "\n".join(line[5:].strip() for line in frame.splitlines() if line.startswith("data:")).strip()
if data and data != "[DONE]":
yield data
request = urllib.request.Request(
API_URL,
data=json.dumps(body).encode("utf-8"),
method="POST",
headers={"Authorization": "Bearer " + API_KEY, "Content-Type": "application/json", "Accept": "text/event-stream"},
)
with urllib.request.urlopen(request, timeout=900) as response:
for data in iter_sse(response):
event = json.loads(data)
if event.get("type") == "response.output_text.delta":
print(event.get("delta", ""), end="", flush=True)
if event.get("type") in ("response.completed", "response.done"):
break
print()javascript
const API_URL = "https://www.pokeapi.top/v1/responses";
const API_KEY = "YOUR_API_KEY";
const body = {
model: "gpt-5.5",
stream: true,
input: "用中文简单介绍一下 Poke API。",
};
async function* readSse(response) {
const reader = response.body.getReader();
const decoder = new TextDecoder();
let buffer = "";
while (true) {
const { value, done } = await reader.read();
if (done) break;
buffer += decoder.decode(value, { stream: true });
const frames = buffer.split(/\r?\n\r?\n/);
buffer = frames.pop() || "";
for (const frame of frames) {
const data = frame.split(/\r?\n/).filter((line) => line.startsWith("data:")).map((line) => line.slice(5).trim()).join("\n");
if (data && data !== "[DONE]") yield data;
}
}
}
const response = await fetch(API_URL, {
method: "POST",
headers: { Authorization: "Bearer " + API_KEY, "Content-Type": "application/json", Accept: "text/event-stream" },
body: JSON.stringify(body),
});
if (!response.ok) throw new Error(await response.text());
for await (const data of readSse(response)) {
const event = JSON.parse(data);
if (event.type === "response.output_text.delta") process.stdout.write(event.delta || "");
if (event.type === "response.completed" || event.type === "response.done") break;
}
process.stdout.write("\n");文本 + 图片
python
body = {
"model": "gpt-5.5",
"stream": True,
"input": [{
"role": "user",
"content": [
{"type": "input_text", "text": "这张图片有什么?请用中文简要描述。"},
{"type": "input_image", "image_url": "https://www.pokeapi.top/logo.png"},
],
}],
}仅需把
input换成上面的多模态数组,其余请求与 SSE 解析逻辑与「纯文本」示例一致。
OpenAI Chat Completions(文本 + 视觉)
POST /v1/chat/completions —— 兼容传统 OpenAI Chat 格式。
纯文本
python
import json
import urllib.request
API_URL = "https://www.pokeapi.top/v1/chat/completions"
API_KEY = "YOUR_API_KEY"
body = {
"model": "gpt-5.5",
"stream": True,
"messages": [{"role": "user", "content": "用中文简单介绍一下 Poke API。"}],
}
def iter_sse(response):
buffer = ""
while chunk := response.read(4096):
buffer += chunk.decode("utf-8", errors="replace")
frames = buffer.split("\n\n")
buffer = frames.pop()
for frame in frames:
data = "\n".join(line[5:].strip() for line in frame.splitlines() if line.startswith("data:")).strip()
if data and data != "[DONE]":
yield data
request = urllib.request.Request(
API_URL,
data=json.dumps(body).encode("utf-8"),
method="POST",
headers={"Authorization": "Bearer " + API_KEY, "Content-Type": "application/json", "Accept": "text/event-stream"},
)
with urllib.request.urlopen(request, timeout=900) as response:
for data in iter_sse(response):
chunk = json.loads(data)
for choice in chunk.get("choices") or []:
print((choice.get("delta") or {}).get("content", ""), end="", flush=True)
print()javascript
const API_URL = "https://www.pokeapi.top/v1/chat/completions";
const API_KEY = "YOUR_API_KEY";
const body = {
model: "gpt-5.5",
stream: true,
messages: [{ role: "user", content: "用中文简单介绍一下 Poke API。" }],
};
// readSse 同上文 Responses 示例
const response = await fetch(API_URL, {
method: "POST",
headers: { Authorization: "Bearer " + API_KEY, "Content-Type": "application/json", Accept: "text/event-stream" },
body: JSON.stringify(body),
});
if (!response.ok) throw new Error(await response.text());
for await (const data of readSse(response)) {
const chunk = JSON.parse(data);
for (const choice of chunk.choices || []) process.stdout.write(choice.delta?.content || "");
}
process.stdout.write("\n");文本 + 图片
python
body = {
"model": "gpt-5.5",
"stream": True,
"messages": [{
"role": "user",
"content": [
{"type": "text", "text": "这张图片有什么?请用中文简要描述。"},
{"type": "image_url", "image_url": {"url": "https://www.pokeapi.top/logo.png"}},
],
}],
}Anthropic Messages(文本 + 视觉)
POST /v1/messages —— Claude / Anthropic Messages 格式。
python
import json
import urllib.request
API_URL = "https://www.pokeapi.top/v1/messages"
API_KEY = "YOUR_API_KEY"
body = {
"model": "claude-sonnet-4-6",
"max_tokens": 64000,
"stream": True,
"messages": [{"role": "user", "content": "用中文简单介绍一下 Poke API。"}],
}
def iter_sse(response):
buffer = ""
while chunk := response.read(4096):
buffer += chunk.decode("utf-8", errors="replace")
frames = buffer.split("\n\n")
buffer = frames.pop()
for frame in frames:
data = "\n".join(line[5:].strip() for line in frame.splitlines() if line.startswith("data:")).strip()
if data and data != "[DONE]":
yield data
request = urllib.request.Request(
API_URL,
data=json.dumps(body).encode("utf-8"),
method="POST",
headers={"Authorization": "Bearer " + API_KEY, "Content-Type": "application/json", "Accept": "text/event-stream"},
)
with urllib.request.urlopen(request, timeout=900) as response:
for data in iter_sse(response):
event = json.loads(data)
if event.get("type") == "content_block_delta":
print((event.get("delta") or {}).get("text", ""), end="", flush=True)
if event.get("type") == "message_stop":
break
print()javascript
const API_URL = "https://www.pokeapi.top/v1/messages";
const API_KEY = "YOUR_API_KEY";
const body = {
model: "claude-sonnet-4-6",
max_tokens: 64000,
stream: true,
messages: [{ role: "user", content: "用中文简单介绍一下 Poke API。" }],
};
// readSse 同上文 Responses 示例
const response = await fetch(API_URL, {
method: "POST",
headers: { Authorization: "Bearer " + API_KEY, "Content-Type": "application/json", Accept: "text/event-stream" },
body: JSON.stringify(body),
});
if (!response.ok) throw new Error(await response.text());
for await (const data of readSse(response)) {
const event = JSON.parse(data);
if (event.type === "content_block_delta") process.stdout.write(event.delta?.text || "");
if (event.type === "message_stop") break;
}
process.stdout.write("\n");图片生成(gpt-image-2)
POST /v1/images/generations —— 支持文生图。
python
import base64
import json
import urllib.request
API_URL = "https://www.pokeapi.top/v1/images/generations"
API_KEY = "YOUR_API_KEY"
body = {
"model": "gpt-image-2",
"prompt": "一只在星空下奔跑的皮卡丘,赛博朋克风格",
"size": "1024x1024",
}
request = urllib.request.Request(
API_URL,
data=json.dumps(body).encode("utf-8"),
method="POST",
headers={"Authorization": "Bearer " + API_KEY, "Content-Type": "application/json"},
)
with urllib.request.urlopen(request, timeout=900) as response:
result = json.loads(response.read().decode("utf-8"))
b64 = result["data"][0]["b64_json"]
with open("output.png", "wb") as f:
f.write(base64.b64decode(b64))
print("已保存 output.png")图片编辑(gpt-image-2)
POST /v1/images/edits —— 上传图片并按提示修改。请求使用 multipart/form-data,字段包含 model、prompt 与 image(原始图片文件),返回结构与图片生成一致(data[0].b64_json)。
TIP
- 上述示例默认使用流式(SSE)返回,若不需要流式可去掉
stream字段。 - 模型名(如
gpt-5.5、claude-sonnet-4-6、gemini-3-pro-preview、gpt-image-2)仅为示例,请以控制台实际可用的模型列表为准。