Skip to content

API 脚本接入

在你自己的程序中通过 HTTP 直接调用 Poke API,完整兼容 OpenAI 与 Anthropic 官方协议。所有请求使用 Authorization: Bearer YOUR_API_KEY 鉴权,请将示例中的 YOUR_API_KEY 替换为 控制台 中获取的密钥。

接口总览

接口方法与路径说明
OpenAI ResponsesPOST /v1/responses新一代 OpenAI 接口,适合文本对话、图片理解和流式输出
OpenAI Chat CompletionsPOST /v1/chat/completions兼容传统 OpenAI Chat 格式,便于已有客户端平滑迁移
Anthropic MessagesPOST /v1/messagesClaude / 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,字段包含 modelpromptimage(原始图片文件),返回结构与图片生成一致(data[0].b64_json)。

TIP

  • 上述示例默认使用流式(SSE)返回,若不需要流式可去掉 stream 字段。
  • 模型名(如 gpt-5.5claude-sonnet-4-6gemini-3-pro-previewgpt-image-2)仅为示例,请以控制台实际可用的模型列表为准。

Poke API · AI API Gateway