logo Dawncoreai API

Dawncoreai API 文档

快速接入视频生成服务,支持图生视频、首尾帧生视频、多参考生视频等多种模式

接口域名

以下接口基于统一的域名(Domain)提供服务
接口域名
-

认证方式

所有开放接口均通过请求头 (Headers) x-api-key 进行调用方鉴权。调用时请替换为实际分配的密钥。
x-api-key: 94bfafb6-xxx-xxxxx-xxxxx-xxxxxx

通用响应格式

所有接口统一返回如下结构:code 为业务状态码,message 为提示信息,data 为具体业务数据。
{
  "code": 200,
  "message": "success",
  "data": { ... }
}

接口列表

查询人物开白任务状态

GET/api/open/getWhiteAssetStatus

根据开白任务 ID 查询当前处理状态。

请求头 (Headers)
参数类型必填说明
x-api-keystring必填调用方密钥
查询参数
参数类型必填说明
asset_idstring必填开白任务 ID
响应示例
{
  "code": 200,
  "message": "success",
  "data": {
    "asset_id": "asset-20260627180944-gzncg",
    "status": "Active"
  }
}

发起人物开白任务

POST/api/open/createWhiteAsset

提交一张图片 URL,发起人物开白(数字人授权)任务。

请求头 (Headers)
参数类型必填说明
x-api-keystring必填调用方密钥
请求体
参数类型必填说明
urlstring必填图片 URL
{
  "url": "https://dawncoreai-dev.tos-cn-beijing.volces.com/uploads/1/2026/05/06/b56ba980-2f5a-4c1e-8dc6-98f8fa9efd16.jpeg"
}
响应示例
{
  "code": 200,
  "message": "success",
  "data": {
    "asset_id": "asset-20260627180944-gzncg"
  }
}

发起生视频任务

POST/api/open/generate2Video

根据模型与素材内容生成视频,支持图生视频、首尾帧生视频、多参考生视频等多种模式。

请求头 (Headers)
参数类型必填说明
x-api-keystring必填调用方密钥
请求体参数
参数类型必填
modelstring必填
contentarray必填内容素材数组,元素见下表
content_signstring已废弃无需传入:服务端按 content 元素 role 组合自动推导(first_frame + last_frame → firstAndLastFrame2Video,含 reference_* → reference2Video,其余 → image2Video),传入也会被忽略
generate_audioboolean必填是否生成声音:true / false
ratiostring必填
resolutionstring必填
durationinteger必填
watermarkboolean必填是否添加水印:true / false
content 元素结构
参数类型必填说明
typestring必填text / image_url / video_url / audio_url
urlstring必填
rolestring必填
textstring可选提示词(type=text 时使用)
请求示例(首尾帧生视频)

                    
请求示例(首帧生视频)

                    
请求示例(多模态参考-参考图片,使用 asset:// 素材 ID)

                    
请求示例(多模态参考-参考视频)

                    
请求示例(多模态参考-参考音频,需配合参考图片或参考视频)

                    
请求示例(Seedance2.5 仅音频生视频)

                    
请求示例(Seedance2.5 视频编辑)

                    
响应示例
{
    "code": 200,
    "message": "success",
    "data": {
        "task_id": "dg-20260627184538-7zsnz"
    }
}

发起生图任务

POST/api/open/generate2Image

根据模型与提示词生成图片,支持参考图输入。

请求头 (Headers)
参数类型必填说明
x-api-keystring必填调用方密钥
请求体参数
参数类型必填说明
modelstring必填模型名称:Nano Banana / Nano Banana Pro / Nano Banana 2 / Nano Banana 2 lite
promptstring条件必填生成图片的提示词,未传参考图时必填
negative_promptstring可选反向提示词,阻止模型生成相关内容
image_urlsarray可选参考图 URL 列表
ratiostring可选图片宽高比,如 16:9、1:1 等
resolutionstring可选图片分辨率:512P、1K、2K、4K,默认 1K
enhance_promptboolean可选是否自动优化提示词
请求示例
{
  "model": "Nano Banana",
  "prompt": "一只在花园中的猫",
  "negative_prompt": "模糊",
  "image_urls": ["https://example.com/reference.jpg"],
  "ratio": "1:1",
  "resolution": "1K",
  "enhance_prompt": true
}
响应示例
{
  "code": 200,
  "message": "success",
  "data": {
    "task_id": "dg-20260908094925-adbf5"
  }
}

查询生视频/生图任务状态

GET/api/open/getTask

根据生视频/生图任务 ID 查询生成进度与结果。

请求头 (Headers)
参数类型必填说明
x-api-keystring必填调用方密钥
查询参数
参数类型必填说明
task_idstring必填视频/图片任务 ID
响应示例 (视频)
{
    "code": 200,
    "message": "success",
    "data": {
        "usage": {
        "completion_tokens": 216900,
        "total_tokens": 216900,
        "total_cost": 0.7020
        },
        "task_id": "dg-20260627184538-7zsnz",
        "error": null,
        "content": {
        "video_url": "https://xxx.com/..."
        },
        "status": "succeeded"
    }
}
响应示例 (图片)
    {
    "code": 200,
    "message": "success",
    "data": {
        "usage": {
            "image_count": 1,
            "completion_tokens": 0,
            "total_tokens": 1,
            "total_cost": 1.1200
        },
        "task_id": "dg-20260908094925-adbf5",
        "content": [
            {
                "type": "image_url",
                "image_url": {
                    "url": "https://xxx.com/local-upload/19/2026/09/08/xxx.jpg"
                }
            }
        ],
        "status": "succeeded"
    }
}
注意:视频/图片 URL 有效期为 24 小时,请及时下载或转存。

查询团队可用模型 新

GET/api/open/getTeamModels

根据当前密钥查询所属团队已启用的模型列表及各模型的并发上限。

请求头 (Headers)
参数类型必填说明
x-api-keystring必填调用方密钥
响应参数
参数类型说明
data[].modelstring模型名称,用于生图/生视频接口的 model 参数
data[].model_concurrency_limitinteger模型并发上限,0 表示不限制
响应示例
{
  "code": 200,
  "message": "success",
  "data": [
    { "model": "Nano Banana", "model_concurrency_limit": 0 },
    { "model": "Nano Banana Pro", "model_concurrency_limit": 2 },
    { "model": "Seedance2.0", "model_concurrency_limit": 5 }
  ]
}

OpenAI 兼容接口

SDK 初始化

BASEhttps://mp.dawncoreai.com/v1

使用 OpenAI 官方 Node.js SDK 接入:把 baseURL 指向本站 /v1,apiKey 填写团队 x-api-key,即可直接调用下列接口。本章示例均为 Node.js 写法(基于 openai v7.x,要求 Node.js 22 及以上),其他语言 SDK 请求字段一致,仅语法不同。

支持端点
端点说明
GET /v1/models列出团队可用模型
POST /v1/chat/completions创建对话补全,支持流式与非流式
POST /v1/images/generations生成图片,同步返回图片 URL
POST /v1/videos创建视频生成任务
GET /v1/videos/{video_id}查询视频任务,完成时返回下载地址
初始化示例(Node.js)
// Node.js 示例,ESM 写法;CommonJS 项目请改用:const OpenAI = require('openai');
import OpenAI from 'openai';

const openai = new OpenAI({
  // 填团队 x-api-key(前台「我的密钥」获取),不是 OpenAI 平台的 sk-xxx
  apiKey: '94bfafb6-xxx-xxxxx-xxxxx-xxxxxx',
  baseURL: 'https://mp.dawncoreai.com/v1',
  timeout: 5 * 60 * 1000,  // 生图为同步等待,放宽客户端超时
  maxRetries: 0            // 关闭自动重试,避免超时后重复提交、重复扣费
});
鉴权说明
SDK 会自动通过 Authorization 头以 Bearer 方式携带 apiKey,服务端剥掉 Bearer 前缀后作为 x-api-key 校验;同时也兼容直接传 x-api-key 请求头。密钥无效或已禁用返回 401。
对话补全按 token 用量计费(输入/输出/缓存命中分价),流式与非流式计费口径一致,详见对话补全章节。

列出团队可用模型

GET/v1/models

返回当前密钥所属团队已启用的模型名称列表,可用于确认 model 参数可以填哪些值。

SDK 调用
const models = await openai.models.list();
console.log(models.data.map(m => m.id));
响应参数
参数类型说明
objectstring固定为 list
data[].idstring模型名称,可作为生图/生视频的 model 参数
data[].objectstring固定为 model
data[].createdintegerUnix 时间戳(秒);本站模型未维护创建时间,此处取当前时间
data[].owned_bystring固定为 proxysys
响应示例
{
  "object": "list",
  "data": [
    { "id": "Nano Banana", "object": "model", "created": 1757472000, "owned_by": "proxysys" },
    { "id": "Seedance2.0", "object": "model", "created": 1757472000, "owned_by": "proxysys" }
  ]
}

创建对话补全 新

POST/v1/chat/completions

OpenAI Chat Completions 兼容接口:传入对话消息,同步返回模型回复;支持流式(SSE)逐段输出。按 token 用量计费(输入 / 输出 / 缓存命中分价)。

请求体参数
参数类型必填说明
modelstring必填模型名称,取值见 /v1/models(需为对话类型模型,如 DeepSeek-V4.1-Flash)
messagesarray必填对话消息数组,元素含 role(system / user / assistant)与 content(string 或多模态数组)
streamboolean可选是否流式返回,默认 false;流式以 SSE(text/event-stream)逐段推送增量内容,末尾发送 data: [DONE]
stream_optionsobject可选流式参数,如 {"include_usage": true} 使末尾 chunk 携带 token 用量;服务端流式请求时默认注入,无需手动传
temperature / top_p / max_tokens 等number可选采样与生成控制参数,原样透传上游,具体支持项以所选模型为准
SDK 调用
// 非流式:一次返回完整回复
const res = await openai.chat.completions.create({
  model: 'DeepSeek-V4.1-Flash',
  messages: [
    { role: 'system', content: '你是一个乐于助人的AI助手。' },
    { role: 'user', content: '用一句话介绍你自己' }
  ],
  temperature: 0.7,
  max_tokens: 1024
});
console.log(res.choices[0].message.content);
console.log(res.usage.total_tokens);

// 流式:逐段输出(DeepSeek 思维链在 delta.reasoning_content)
const stream = await openai.chat.completions.create({
  model: 'DeepSeek-V4.1-Flash',
  messages: [{ role: 'user', content: '写一首关于秋天的短诗' }],
  stream: true
});
for await (const chunk of stream) {
  const delta = chunk.choices[0]?.delta ?? {};
  if (delta.reasoning_content) process.stdout.write(delta.reasoning_content);
  if (delta.content) process.stdout.write(delta.content);
}
响应示例(非流式)
{
  "id": "dg-20260924231030-a1b2c3",
  "object": "chat.completion",
  "created": 1758748230,
  "model": "DeepSeek-V4.1-Flash",
  "choices": [
    {
      "index": 0,
      "message": { "role": "assistant", "content": "你好!我是……" },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 36,
    "completion_tokens": 188,
    "total_tokens": 224,
    "prompt_tokens_details": { "cached_tokens": 0 },
    "completion_tokens_details": { "reasoning_tokens": 111 }
  }
}
计费说明
费用 = (输入token - 缓存命中token) × 输入单价 + 缓存命中token × 缓存单价 + 输出token × 输出单价(输出含思维链 reasoning_tokens)。DeepSeek-V4.1-Flash 分高峰/空闲时段计价,单价以「模型价格」页为准,流式与非流式计费口径一致。

生成图片

POST/v1/images/generations

创建生图任务并同步等待,出图后直接返回图片 URL,无需自行轮询。

请求体参数
参数类型必填说明
modelstring必填模型名称,取值见 /v1/models
promptstring条件必填提示词,未传参考图时必填
sizestring可选图片尺寸,如 1024x1024,服务端自动换算为宽高比 1:1
imagestring / array可选参考图地址,支持单个字符串或字符串数组
input_referencestring / array可选参考图地址,作用同 image
image_urlsarray可选扩展字段:参考图 URL 列表,优先级高于 image 与 input_reference
ratiostring可选扩展字段:宽高比,如 16:9、1:1,优先于 size 推导
resolutionstring可选扩展字段:图片分辨率 512P / 1K / 2K / 4K,默认 1K
negative_promptstring可选扩展字段:反向提示词
enhance_promptboolean可选扩展字段:是否自动优化提示词
参数 n 与 response_format 暂不生效:当前仅返回图片 URL,不支持 b64_json。
SDK 调用
const res = await openai.images.generate({
  model: 'Nano Banana',
  prompt: '一只戴着宇航员头盔的柴犬,赛博朋克风格,高清细节',
  size: '1024x1024',
  resolution: '2K',
  negative_prompt: '模糊, 低质量',
  enhance_prompt: true
});
console.log(res.created);
console.log(res.data[0].url);
响应示例
{
  "created": 1757472000,
  "data": [
    { "url": "https://xxx.com/local-upload/19/2026-09-08/xxx.jpg" }
  ]
}
超时说明
服务端内部轮询直到出图或失败,默认最长等待 180 秒(配置项 openai.image.poll-timeout-ms,轮询间隔 openai.image.poll-interval-ms 默认 2 秒)。若超时将返回 504,错误信息附带 task_id,可改用 /api/open/getTask 继续查询结果。

创建视频任务

POST/v1/videos

创建视频生成任务并立即返回任务对象(status 为 queued),需轮询查询接口获取结果。

请求体参数
参数类型必填说明
modelstring必填模型名称,取值见 /v1/models
promptstring条件必填提示词;未传 content 时由服务端自动组装为文本素材,与 content 至少需要提供一个
input_referencestring / array可选参考图地址,未传 content 时参与自动组装素材
secondsstring / integer可选视频时长(秒),映射为扩展字段 duration
sizestring可选视频尺寸,如 1280x720,服务端自动换算为宽高比 16:9
contentarray可选扩展字段:原生内容素材数组,传则优先级最高,元素结构见上文发起生视频
content_signstring已废弃无需传入:服务端按 content 元素 role 组合自动推导,传入也会被忽略
ratio / resolution / durationstring / integer可选扩展字段:宽高比、分辨率、时长(秒),与原生接口含义一致;ratio 优先于 size,duration 优先于 seconds
generate_audio / watermarkboolean可选扩展字段:是否生成声音、是否添加水印
SDK 调用
const created = await openai.videos.create({
  model: 'Seedance2.0',
  prompt: '镜头缓慢推进,人物微笑挥手,光影自然流动',
  input_reference: ['https://xxx.com/first-frame.jpeg'],
  seconds: '4',
  size: '1280x720',
  resolution: '720p',
  generate_audio: true,
  watermark: false
});
console.log(created.id, created.status);
响应示例
{
  "id": "dg-20260908094925-adbf5",
  "object": "video",
  "model": "Seedance2.0",
  "status": "queued",
  "created_at": 1757472000,
  "progress": 0,
  "seconds": "4",
  "size": "1280x720"
}

查询视频任务

GET/v1/videos/{video_id}

按任务 ID 查询生成进度,完成时返回视频下载地址。建议每 5 秒轮询一次。

路径参数
参数类型必填说明
video_idstring必填创建时返回的 id(即本站 task_id)
状态映射
任务状态说明
queued排队中,progress 为 0
in_progress生成中(对应 submitted / running / processing),progress 为 50
completed已完成(对应 succeeded),返回 download_url,progress 为 100
failed已失败,error.message 为失败原因,progress 为 100
SDK 调用
async function waitForVideo(id) {
  let video = await openai.videos.retrieve(id);
  while (video.status === 'queued' || video.status === 'in_progress') {
    await new Promise(r => setTimeout(r, 5000));
    video = await openai.videos.retrieve(id);
  }
  return video;
}

const video = await waitForVideo(created.id);
if (video.status === 'completed') {
  console.log('视频下载地址:', video.download_url);
  console.log('用量/费用:', JSON.stringify(video.usage));
}
响应示例
{
  "id": "dg-20260908094925-adbf5",
  "object": "video",
  "status": "completed",
  "progress": 100,
  "download_url": "https://xxx.com/xxx.mp4",
  "error": null,
  "usage": {
    "completion_tokens": 216900,
    "total_tokens": 216900,
    "total_cost": 0.7020
  }
}
补充说明
download_url 与 usage 是本站在 OpenAI Video 对象上附加的字段:SDK 的 TypeScript 类型未声明,但运行时可正常读取(video.download_url)。usage 用于对账,非 OpenAI 标准字段。视频 URL 有效期为 24 小时,请及时下载或转存。

错误格式

所有失败响应均遵循 OpenAI 错误结构,并通过 HTTP 状态码表达语义。

错误响应示例
{
  "error": {
    "message": "model 不能为空",
    "type": "invalid_request_error",
    "param": null,
    "code": "400"
  }
}
状态码对照
HTTP 状态码error.type常见场景
401authentication_error缺少 API Key、x-api-key 无效、密钥已禁用
403authentication_error团队已禁用
400invalid_request_error参数校验失败、上游任务返回失败
504server_error生图同步等待超时,message 附带 task_id
500server_error服务内部异常
异常捕获示例
try {
  const res = await openai.images.generate({ model: 'Nano Banana', prompt: '一只猫' });
  console.log(res.data[0].url);
} catch (err) {
  // OpenAI SDK 会将非 2xx 响应抛为 APIError,err.status 为 HTTP 状态码,err.error 为上述错误体
  console.error('HTTP', err.status, JSON.stringify(err.error));
}