CDAPI DOCS

HTTP API REFERENCE

统一认证,多协议调用

CDAPI 提供 OpenAI 兼容接口、Responses API、Anthropic Messages 以及图像和视频任务接口。示例中的模型占位符必须替换为实时模型 ID。

本页目录

认证

所有接口使用 CDAPI Key。HTTP 请求通过 Bearer Header 传递,不要把 Key 放进 URL、请求体或客户端日志。

HTTP header
Authorization: Bearer sk-你的令牌
Content-Type: application/json

Anthropic Messages 同样接受 Bearer 认证,并额外发送 anthropic-version

端点路由

协议或任务 方法与路径 推荐主机
模型目录 GET /v1/models https://ai.bycomet.cc
Chat Completions POST /v1/chat/completions https://ai.bycomet.cc
Responses POST /v1/responses https://ai.bycomet.cc
Anthropic Messages POST /v1/messages https://ai.bycomet.cc
图像生成 POST /v1/images/generations https://api-direct.ai.bycomet.cc
视频任务 POST /v1/videos https://api-direct.ai.bycomet.cc

实时模型目录

目录直接展示服务端返回的能力、端点类型与可用分组。复制完整模型名,并确认令牌分组包含目标模型。

无需登录的机器可读目录:GET /api/geo/catalog。该目录只返回当前真实可用的模型/分组组合与计算后价格。

按产品读取 GET /api/geo/catalog/{product};按完整模型 ID 读取 GET /api/geo/models/{model_id}。产品值支持 gptclaudegeminiimagevideoother

正在读取实时模型目录...

模型 ID 能力 端点类型 可用分组
正在加载...
GET /v1/models
curl https://ai.bycomet.cc/v1/models \
  -H "Authorization: Bearer $CDAPI_API_KEY"

POST /V1/CHAT/COMPLETIONS

Chat Completions

适合兼容 OpenAI Chat Completions 的 SDK 与客户端。首次接入可先使用非流式请求。

cURL
curl https://ai.bycomet.cc/v1/chat/completions \
  -H "Authorization: Bearer $CDAPI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "YOUR_MODEL_ID",
    "messages": [
      {"role": "system", "content": "回答要简洁。"},
      {"role": "user", "content": "只回复 ok"}
    ],
    "stream": false
  }'

需要 SSE 流式输出时设置 "stream": true,并按事件流逐行消费 data: 数据。

POST /V1/RESPONSES

Responses API

适合 Codex 与使用 OpenAI Responses 协议的工具。模型必须支持该端点类型。

cURL
curl https://ai.bycomet.cc/v1/responses \
  -H "Authorization: Bearer $CDAPI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "YOUR_MODEL_ID",
    "input": "只回复 ok"
  }'
端点能力必须匹配

若模型仅支持 Chat Completions,把请求改到对应端点;不要用重复重试掩盖端点不兼容。

POST /V1/MESSAGES

Anthropic Messages

供 Claude Code 和 Anthropic SDK 兼容调用。直接请求时使用完整 /v1/messages 路径。

cURL
curl https://ai.bycomet.cc/v1/messages \
  -H "Authorization: Bearer $CDAPI_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "YOUR_MODEL_ID",
    "max_tokens": 512,
    "messages": [
      {"role": "user", "content": "只回复 ok"}
    ]
  }'

Anthropic 客户端要求 Base URL 时填写 https://ai.bycomet.cc,让客户端自行追加 /v1/messages

POST /V1/IMAGES/GENERATIONS

图像生成

图像任务建议使用 Direct 主机。模型、尺寸和返回格式必须以模型广场当前能力为准。

cURL
curl https://api-direct.ai.bycomet.cc/v1/images/generations \
  -H "Authorization: Bearer $CDAPI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "YOUR_IMAGE_MODEL_ID",
    "prompt": "A clean product photo on a white background",
    "size": "1024x1024",
    "n": 1
  }'

ASYNCHRONOUS VIDEO TASKS

视频生成

视频接口先创建任务,再轮询任务状态。不同模型支持的时长、分辨率、参考图与 metadata 不同。

创建任务
curl https://api-direct.ai.bycomet.cc/v1/videos \
  -H "Authorization: Bearer $CDAPI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "YOUR_VIDEO_MODEL_ID",
    "prompt": "A slow camera move through a modern workspace"
  }'
查询任务
curl https://api-direct.ai.bycomet.cc/v1/videos/task_abc123 \
  -H "Authorization: Bearer $CDAPI_API_KEY"
完成响应示例
{
  "id": "task_abc123",
  "object": "video",
  "status": "completed",
  "progress": 100
}

状态为 completed 后,通过 GET /v1/videos/task_abc123/content 获取文件。轮询建议从 5 秒间隔开始并逐步退避;状态为 failed 时保留任务 ID 和错误字段。

OpenAI SDK

支持自定义 Base URL 的 OpenAI SDK 可直接接入。以下示例使用 Chat Completions。

Python
import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["CDAPI_API_KEY"],
    base_url="https://ai.bycomet.cc/v1",
)

response = client.chat.completions.create(
    model="YOUR_MODEL_ID",
    messages=[{"role": "user", "content": "只回复 ok"}],
)
print(response.choices[0].message.content)
Node.js
import OpenAI from "openai";

const client = new OpenAI({
  apiKey: process.env.CDAPI_API_KEY,
  baseURL: "https://ai.bycomet.cc/v1",
});

const response = await client.chat.completions.create({
  model: "YOUR_MODEL_ID",
  messages: [{ role: "user", content: "只回复 ok" }],
});
console.log(response.choices[0].message.content);