CokeAPI
文本对话系列

Chat Completions

兼容 OpenAI Chat API,支持 GPT / Grok / Claude / Gemini 系列,流式 SSE 与 function calling。

完全兼容 OpenAI Chat Completions API。所有标准参数 (messages / temperature / top_p / stream / tools / response_format 等) 透传,可直接用 OpenAI SDK 调用。

这条接口是 CokeAPI 所有文本模型的统一入口。支持模型见 模型一览;如果你只接 OpenAI 兼容上游,也可以选用 POST /v1/responses

视觉模型支持 OpenAI 风格的 image_url 内容块。请优先通过 文件上传接口 获取图片 URL 后再传入;网关会按目标上游自动转换为 Claude/Gemini/GPT 等协议格式。

接口概览

项目
MethodPOST
URLhttps://cokeapi.com/v1/chat/completions
鉴权Authorization: Bearer sk-xxxxxxxx
Content-Typeapplication/json
返回格式OpenAI Chat Completion / SSE chunk
适用模型GPT / Grok / Claude / Gemini / Free API 路由

Apifox 调试

如果你用 Apifox 管理接口,可以按下面的变量创建环境:

变量
base_urlhttps://cokeapi.com
api_keysk-xxxxxxxx
chat_modelgpt-5.5

然后新建接口 POST {{base_url}}/v1/chat/completions,鉴权选择 Bearer Token,Token 填 {{api_key}}。完整的 Apifox 导入模板、断言和自动化测试建议见 接入 Apifox

各种插件 / 软件使用教程

大部分插件和软件都只需要填写同一组配置:接口地址、API Key、模型名。下面按原版 Apifox 文档的写法,把可复制的配置项先列出来。

通用配置项

配置项填写内容说明
API 类型OpenAI / OpenAI CompatibleCursor、Cherry Studio、OpenClaw、Apifox 等都选择 OpenAI 兼容
Base URLhttps://cokeapi.com/v1SDK、桌面客户端、插件通常填这个
接口地址https://cokeapi.com/v1/chat/completionsApifox / Postman 手动建接口时使用完整 URL
API Keysk-xxxxxxxx在控制台创建的 CokeAPI Key
HeaderAuthorization: Bearer sk-xxxxxxxx手动调试时需要加这个请求头
模型名gpt-5.5 / claude-sonnet-4-6 / grok-4.20-fast / gemini-3.5-flash按目标模型文档填写
GPTs 模型名gpt-4-gizmo-g-xxxxGPTs 链接里的 g-xxxx 拼到 gpt-4-gizmo- 后面
流式输出stream=true聊天客户端一般建议开启

例如这个 GPTs:

https://chatgpt.com/g/g-B3hgivKK9-write-for-me

那么模型名填写:

gpt-4-gizmo-g-B3hgivKK9

Node.js 基础对话

先安装 OpenAI SDK:

npm i openai

然后把 baseURL 改成 CokeAPI,apiKey 改成你的 Key,model 改成要调用的模型:

const OpenAI = require("openai");

const openai = new OpenAI({
  apiKey: "sk-xxxxxxxx",
  baseURL: "https://cokeapi.com/v1",
});

async function main() {
  const response = await openai.chat.completions.create({
    model: "gpt-5.5",
    messages: [
      { role: "user", content: "你好,简单介绍一下你自己" },
    ],
    stream: false,
  });

  console.log(response.choices[0].message.content);
}

main().catch(console.error);

常见软件填写方式

软件 / 插件API 类型Base URLAPI Key模型名示例详细教程
ApifoxBearer Token / OpenAPIhttps://cokeapi.comhttps://cokeapi.com/v1sk-xxxxxxxxgpt-5.5接入 Apifox
CursorOpenAI Compatiblehttps://cokeapi.com/v1sk-xxxxxxxxgpt-5.5接入 Cursor
Cherry StudioOpenAI Compatiblehttps://cokeapi.com/v1sk-xxxxxxxxclaude-sonnet-4-6接入 Cherry Studio
OpenClawCokeAPI / OpenAI Compatiblehttps://cokeapi.com/v1sk-xxxxxxxxgrok-4.20-fastOpenClaw 接入
Claude CodeAnthropic / OpenAI Compatiblehttps://cokeapi.comhttps://cokeapi.com/v1sk-xxxxxxxxclaude-sonnet-4-6接入 Claude Code
Codex CLIOpenAI Responseshttps://cokeapi.com/v1sk-xxxxxxxxcodex-5.3Codex 配置教程
Vercel AI SDKOpenAI Compatiblehttps://cokeapi.com/v1sk-xxxxxxxxgpt-5.5Vercel AI SDK

Apifox 手动建接口

项目填写内容
MethodPOST
URL{{base_url}}/v1/chat/completions
AuthBearer Token:{{api_key}}
HeaderContent-Type: application/json
BodyJSON

Body 示例:

{
  "model": "gpt-5.5",
  "messages": [
    {
      "role": "user",
      "content": "你好"
    }
  ],
  "stream": false
}

调用示例

curl https://cokeapi.com/v1/chat/completions \
  -H "Authorization: Bearer sk-xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-4o-mini",
    "messages": [
      {"role": "system", "content": "你是简洁的助手"},
      {"role": "user", "content": "用一句话介绍 CokeAPI"}
    ]
  }'
curl -N https://cokeapi.com/v1/chat/completions \
  -H "Authorization: Bearer sk-xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "grok-4.20-fast",
    "messages": [{"role": "user", "content": "讲一个三句的笑话"}],
    "stream": true
  }'
curl https://cokeapi.com/v1/chat/completions \
  -H "Authorization: Bearer sk-xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-4o-mini",
    "messages": [{"role": "user", "content": "北京今天天气?"}],
    "tools": [{
      "type": "function",
      "function": {
        "name": "get_weather",
        "description": "查询某城市天气",
        "parameters": {
          "type": "object",
          "properties": {"city": {"type": "string"}},
          "required": ["city"]
        }
      }
    }]
  }'
from openai import OpenAI

client = OpenAI(
    base_url="https://cokeapi.com/v1",
    api_key="sk-xxxxxxxx",
)

resp = client.chat.completions.create(
    model="gpt-4o-mini",
    messages=[
        {"role": "system", "content": "你是简洁的助手"},
        {"role": "user", "content": "用一句话介绍 CokeAPI"},
    ],
)
print(resp.choices[0].message.content)
from openai import OpenAI

client = OpenAI(
    base_url="https://cokeapi.com/v1",
    api_key="sk-xxxxxxxx",
)

stream = client.chat.completions.create(
    model="grok-4.20-fast",
    messages=[{"role": "user", "content": "讲一个三句的笑话"}],
    stream=True,
)
for chunk in stream:
    delta = chunk.choices[0].delta.content or ""
    print(delta, end="", flush=True)
import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://cokeapi.com/v1",
  apiKey: process.env.COKEAPI_KEY,
});

const resp = await client.chat.completions.create({
  model: "gpt-4o-mini",
  messages: [
    { role: "system", content: "你是简洁的助手" },
    { role: "user", content: "用一句话介绍 CokeAPI" },
  ],
});
console.log(resp.choices[0].message.content);
import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://cokeapi.com/v1",
  apiKey: process.env.COKEAPI_KEY,
});

const stream = await client.chat.completions.create({
  model: "grok-4.20-fast",
  messages: [{ role: "user", content: "讲一个三句的笑话" }],
  stream: true,
});

for await (const chunk of stream) {
  process.stdout.write(chunk.choices[0]?.delta?.content ?? "");
}
package main

import (
	"context"
	"fmt"
	openai "github.com/sashabaranov/go-openai"
)

func main() {
	client := openai.NewClient("sk-xxxxxxxx")
	resp, err := client.CreateChatCompletion(
		context.Background(),
		openai.ChatCompletionRequest{
			Model: "gpt-4o-mini",
			Messages: []openai.ChatCompletionMessage{
				{Role: openai.ChatMessageRoleSystem, Content: "你是简洁的助手"},
				{Role: openai.ChatMessageRoleUser, Content: "用一句话介绍 CokeAPI"},
			},
		},
	)
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Println(resp.Choices[0].Message.Content)
}
import com.openai.client.OpenAIClient;
import com.openai.client.okhttp.OpenAIOkHttpClient;
import com.openai.models.ChatCompletion;
import com.openai.models.ChatCompletionCreateParams;
import com.openai.models.ChatCompletionMessageParam;

public class Main {
    public static void main(String[] args) {
        OpenAIClient client = OpenAIOkHttpClient.builder()
            .apiKey("sk-xxxxxxxx")
            .baseUrl("https://cokeapi.com/v1")
            .build();

        ChatCompletionCreateParams params = ChatCompletionCreateParams.builder()
            .addMessage(ChatCompletionMessageParam.ofSystem("你是简洁的助手"))
            .addMessage(ChatCompletionMessageParam.ofUser("用一句话介绍 CokeAPI"))
            .model("gpt-4o-mini")
            .build();

        ChatCompletion chatCompletion = client.chat().completions().create(params);
        System.out.println(chatCompletion.choices().get(0).message().content());
    }
}

请求参数

完全兼容 OpenAI Chat Completions。下表按 Apifox/OpenAPI 文档常用顺序列出核心字段:

参数类型必填默认值说明
modelstring模型 ID,见 模型一览。如启用 GPTs/Gizmo 路由,可使用 gpt-4-gizmo-g-xxxx
messagesarray对话历史 [{ role, content }]content 可为字符串或多模态 block 数组
temperaturenumber1采样温度,范围 0–2。值越高越随机
top_pnumber1核采样参数。通常调整 temperaturetop_p 其中一个即可
nint1为每个输入生成的候选回复数量
streamboolfalsetrue 时返回 SSE 流式响应,以 data: [DONE] 结束
stopstring/array停止生成的序列,最多 4 个
max_tokensint最大生成 token 数
presence_penaltynumber0主题重复惩罚,范围 -2 到 2
frequency_penaltynumber0词频重复惩罚,范围 -2 到 2
logit_biasobjecttoken 偏置映射,取值范围 -100 到 100
userstring业务侧最终用户 ID,便于审计和排查滥用
response_formatobjectJSON 输出格式,例如 { "type": "json_object" }
seedint尽力保持确定性采样;不保证所有上游都支持
toolsarrayfunction calling 工具定义,透传上游
tool_choicestring/objectauto控制是否调用工具,可为 noneauto 或指定函数

GPTs / Gizmo 模型名

如果后台已配置 GPTs/Gizmo 路由,模型名格式为 gpt-4-gizmo-<gizmo_id>

ChatGPT GPTs URL请求中的 model
https://chatgpt.com/g/g-B3hgivKK9-write-for-megpt-4-gizmo-g-B3hgivKK9

未配置该路由时会返回 model not configured。生产接入前请先用 GET /v1/models 确认模型 ID 已存在。

响应示例

非流式

{
  "id": "chatcmpl-01HX...",
  "object": "chat.completion",
  "created": 1714200000,
  "model": "gpt-4o-mini",
  "choices": [{
    "index": 0,
    "message": {
      "role": "assistant",
      "content": "CokeAPI 是把 GPT 与 GROK 能力封装成 OpenAI 兼容协议的 AIGC 接口服务。"
    },
    "finish_reason": "stop"
  }],
  "usage": {
    "prompt_tokens": 28,
    "completion_tokens": 32,
    "total_tokens": 60
  }
}

流式 (SSE)

data: {"id":"chatcmpl-...","object":"chat.completion.chunk","choices":[{"delta":{"role":"assistant"}}]}

data: {"id":"chatcmpl-...","object":"chat.completion.chunk","choices":[{"delta":{"content":"Coke"}}]}

data: {"id":"chatcmpl-...","object":"chat.completion.chunk","choices":[{"delta":{"content":"API "}}]}

...

data: {"id":"chatcmpl-...","choices":[{"delta":{},"finish_reason":"stop"}],"usage":{"prompt_tokens":28,"completion_tokens":32,"total_tokens":60}}

data: [DONE]

CokeAPI 自动给流式请求注入 stream_options: { include_usage: true },最后一个 chunk 一定会带 usage,便于按 token 计费对账。

计费

prompt_tokenscompletion_tokens 分别计算,模型不同单价不同。完整单价见 模型列表

错误码

codetype含义HTTP
400101invalid_param参数错误400
400401insufficient_balance余额不足400
401104api_key_invalidAPI Key 无效401
429101rate_limit_exceededRPM 超限429
429302daily_quota_exceeded每日配额耗尽429
502201upstream_unavailable上游服务暂不可用502

注意事项

  • 流式调用必须 关闭客户端缓冲;Python 用 iter_lines,Node 用 for await (const chunk),浏览器用 EventSourceReadableStream
  • Function calling 字段完全透传上游,平台不做语义解析。
  • 上游模型 context 不同 (gpt-4o-mini = 128K, grok-4.20 = 256K, Claude = 200K, Gemini 最高 2M),超长会被截断或返回 400。
  • 内容审核由上游执行,被拒返回的错误 message 不算 CokeAPI 故障,仍计费。

本页目录