---
url: /docs/caption_infos.zh.md
---
# CAPTION\_INFOS API 接口文档

## 🌐 语言切换

[中文版](/docs/caption_infos.zh) | [English](/docs/caption_infos)

## 接口信息

```
POST /openapi/capcut-mate/v1/caption_infos
```

## 功能描述

根据文本列表与时间线生成字幕信息 JSON 字符串，可直接作为 `add_captions` 的 `captions` 参数使用。支持字体大小、关键词高亮（颜色/描边/字号/阴影）、入场/循环/出场动画及转场配置。

## 请求参数

| 参数名 | 类型 | 必填 | 默认值 | 说明 |
|--------|------|------|--------|------|
| texts | array\[string] | ✅ | - | 字幕文本列表，每一项对应一条字幕 |
| timelines | array\[object] | ✅ | - | 时间线列表，与 `texts` 按索引一一对应 |
| timelines\[].start | integer | ✅ | - | 该条字幕开始时间（微秒），须 `>= 0` |
| timelines\[].end | integer | ✅ | - | 该条字幕结束时间（微秒），须大于 `start` |
| font\_size | integer | ❌ | `null` | 写入每条字幕的普通文本字号；不传则生成结果中不含该字段 |
| keyword\_color | string | ❌ | `null` | 关键词颜色（十六进制），写入每条字幕 |
| keyword\_border\_color | string | ❌ | `null` | 关键词描边颜色（十六进制），写入每条字幕 |
| keyword\_font | string | ❌ | `null` | 关键词字体名称，写入每条字幕 |
| keyword\_font\_size | integer | ❌ | `null` | 关键词字号，写入每条字幕 |
| keyword\_has\_shadow | boolean | ❌ | `null` | 是否启用关键词阴影，写入每条字幕 |
| keyword\_shadow\_info | object | ❌ | `null` | 关键词阴影参数，字段同 `add_captions` 的 `shadow_info` |
| keywords | array\[string] | ❌ | `null` | 重点词列表，按索引分配到对应 `texts[i]`；不足时后续文本 `keyword` 为空字符串 |
| in\_animation | string | ❌ | `null` | 入场动画名称，如 `"向上滑动"` |
| in\_animation\_duration | integer | ❌ | `null` | 入场动画时长（微秒） |
| loop\_animation | string | ❌ | `null` | 循环动画名称，如 `"弹幕滚动"` |
| loop\_animation\_duration | integer | ❌ | `null` | 循环动画**单次循环**时长（微秒） |
| out\_animation | string | ❌ | `null` | 出场动画名称，如 `"向下滑动"` |
| out\_animation\_duration | integer | ❌ | `null` | 出场动画时长（微秒） |
| transition | string | ❌ | `null` | 转场名称（写入生成的字幕信息，供后续流程使用） |
| transition\_duration | integer | ❌ | `null` | 转场时长（微秒） |

### keyword\_shadow\_info 字段说明

| 字段名 | 类型 | 必填 | 默认值 | 说明 |
|--------|------|------|--------|------|
| shadow\_alpha | number | ❌ | `1.0` | 阴影不透明度，取值范围 `[0, 1]` |
| shadow\_color | string | ❌ | `"#000000"` | 阴影颜色（十六进制） |
| shadow\_diffuse | number | ❌ | `15.0` | 阴影扩散程度，取值范围 `[0, 100]` |
| shadow\_distance | number | ❌ | `5.0` | 阴影距离，取值范围 `[0, 100]` |
| shadow\_angle | number | ❌ | `-45.0` | 阴影角度，取值范围 `[-180, 180]` |

### 说明

1. `texts` 与 `timelines` 长度不一致时，按**较短长度**截断后继续生成（不会直接报错）。
2. `keywords[i]` 会写入第 `i` 条字幕的 `keyword` 字段；若 `keywords` 比 `texts` 短，后续条目的 `keyword` 为空字符串。
3. 可选参数仅在非 `null` 时写入生成结果。

## 完整参数请求示例（含注释）

下列为**全部必填 + 可选参数**示意；`//` 注释仅用于说明，不能直接作为请求体。

```js
{
  // 【必填】字幕文本列表，每项对应一条字幕
  "texts": [
    "欢迎观看剪映教程",
    "这是一个字幕示例"
  ],

  // 【必填】时间线列表，与 texts 按索引一一对应
  "timelines": [
    {
      "start": 0,                 // 【必填】第 1 条开始时间（微秒）
      "end": 3000000              // 【必填】第 1 条结束时间（微秒）
    },
    {
      "start": 3000000,           // 【必填】第 2 条开始时间（微秒）
      "end": 6000000              // 【必填】第 2 条结束时间（微秒）
    }
  ],

  "font_size": 24,                // 【可选】普通文本字号
  "keyword_color": "#FF5500",     // 【可选】关键词颜色
  "keyword_border_color": "#000000", // 【可选】关键词描边颜色
  "keyword_font": "思源中宋",          // 【可选】关键词字体
  "keyword_font_size": 28,        // 【可选】关键词字号
  "keyword_has_shadow": true,     // 【可选】启用关键词阴影
  "keyword_shadow_info": {        // 【可选】关键词阴影详细参数
    "shadow_alpha": 0.85,         // 阴影不透明度 [0,1]
    "shadow_color": "#000000",    // 阴影颜色
    "shadow_diffuse": 18.0,       // 阴影扩散 [0,100]
    "shadow_distance": 6.0,       // 阴影距离 [0,100]
    "shadow_angle": -45.0         // 阴影角度 [-180,180]
  },
  "keywords": [                   // 【可选】重点词，按索引分配到 texts
    "剪映",
    "字幕"
  ],
  "in_animation": "向上滑动",      // 【可选】入场动画名称
  "in_animation_duration": 500000, // 【可选】入场动画时长（微秒）
  "loop_animation": "弹幕滚动",    // 【可选】循环动画名称
  "loop_animation_duration": 1000000, // 【可选】循环单次时长（微秒）
  "out_animation": "向下滑动",     // 【可选】出场动画名称
  "out_animation_duration": 500000, // 【可选】出场动画时长（微秒）
  "transition": "淡入淡出",        // 【可选】转场名称
  "transition_duration": 300000   // 【可选】转场时长（微秒）
}
```

## 响应格式

### 成功响应 (200)

```json
{
  "code": 0,
  "message": "success",
  "infos": "[{\"start\":0,\"end\":3000000,\"text\":\"欢迎观看剪映教程\",\"keyword\":\"剪映\",\"keyword_color\":\"#FF5500\",\"keyword_border_color\":\"#000000\",\"keyword_font\":\"思源中宋\",\"keyword_font_size\":28,\"keyword_has_shadow\":true,\"keyword_shadow_info\":{\"shadow_alpha\":0.85,\"shadow_color\":\"#000000\",\"shadow_diffuse\":18.0,\"shadow_distance\":6.0,\"shadow_angle\":-45.0},\"font_size\":24,\"in_animation\":\"向上滑动\",\"in_animation_duration\":500000,\"loop_animation\":\"弹幕滚动\",\"loop_animation_duration\":1000000,\"out_animation\":\"向下滑动\",\"out_animation_duration\":500000,\"transition\":\"淡入淡出\",\"transition_duration\":300000},{\"start\":3000000,\"end\":6000000,\"text\":\"这是一个字幕示例\",\"keyword\":\"字幕\",\"keyword_color\":\"#FF5500\",\"keyword_border_color\":\"#000000\",\"keyword_font\":\"思源中宋\",\"keyword_font_size\":28,\"keyword_has_shadow\":true,\"keyword_shadow_info\":{\"shadow_alpha\":0.85,\"shadow_color\":\"#000000\",\"shadow_diffuse\":18.0,\"shadow_distance\":6.0,\"shadow_angle\":-45.0},\"font_size\":24,\"in_animation\":\"向上滑动\",\"in_animation_duration\":500000,\"loop_animation\":\"弹幕滚动\",\"loop_animation_duration\":1000000,\"out_animation\":\"向下滑动\",\"out_animation_duration\":500000,\"transition\":\"淡入淡出\",\"transition_duration\":300000}]"
}
```

### 响应字段说明

| 字段名 | 类型 | 说明 |
|--------|------|------|
| infos | string | 字幕信息 JSON 字符串，可直接作为 `add_captions.captions` 使用 |

### 错误响应

```json
{
  "code": 1001,
  "message": "参数校验失败"
}
```

## 使用示例

### cURL 示例

#### 1. 完整参数请求（全部必填 + 可选参数）

```bash
curl -X POST https://capcut-mate.jcaigc.cn/openapi/capcut-mate/v1/caption_infos \
  -H "Content-Type: application/json" \
  -d '{
    "texts": ["欢迎观看剪映教程", "这是一个字幕示例"],
    "timelines": [
      {"start": 0, "end": 3000000},
      {"start": 3000000, "end": 6000000}
    ],
    "font_size": 24,
    "keyword_color": "#FF5500",
    "keyword_border_color": "#000000",
    "keyword_font": "思源中宋",
    "keyword_font_size": 28,
    "keyword_has_shadow": true,
    "keyword_shadow_info": {
      "shadow_alpha": 0.85,
      "shadow_color": "#000000",
      "shadow_diffuse": 18.0,
      "shadow_distance": 6.0,
      "shadow_angle": -45.0
    },
    "keywords": ["剪映", "字幕"],
    "in_animation": "向上滑动",
    "in_animation_duration": 500000,
    "loop_animation": "弹幕滚动",
    "loop_animation_duration": 1000000,
    "out_animation": "向下滑动",
    "out_animation_duration": 500000,
    "transition": "淡入淡出",
    "transition_duration": 300000
  }'
```

**上述完整请求参数含义速查：**

| 参数 | 示例值 | 含义 |
|------|--------|------|
| texts | `["欢迎观看剪映教程", "这是一个字幕示例"]` | 【必填】两条字幕文本 |
| timelines\[0].start / end | `0` / `3000000` | 【必填】第 1 条起止时间（微秒） |
| timelines\[1].start / end | `3000000` / `6000000` | 【必填】第 2 条起止时间（微秒） |
| font\_size | `24` | 【可选】普通文本字号 |
| keyword\_color | `#FF5500` | 【可选】关键词颜色 |
| keyword\_border\_color | `#000000` | 【可选】关键词描边颜色 |
| keyword\_font | `思源中宋` | 【可选】关键词字体 |
| keyword\_font\_size | `28` | 【可选】关键词字号 |
| keyword\_has\_shadow | `true` | 【可选】启用关键词阴影 |
| keyword\_shadow\_info.shadow\_alpha | `0.85` | 【可选】关键词阴影不透明度 |
| keyword\_shadow\_info.shadow\_color | `#000000` | 【可选】关键词阴影颜色 |
| keyword\_shadow\_info.shadow\_diffuse | `18.0` | 【可选】关键词阴影扩散 |
| keyword\_shadow\_info.shadow\_distance | `6.0` | 【可选】关键词阴影距离 |
| keyword\_shadow\_info.shadow\_angle | `-45.0` | 【可选】关键词阴影角度 |
| keywords | `["剪映", "字幕"]` | 【可选】按索引分配到对应文本的关键词 |
| in\_animation | `向上滑动` | 【可选】入场动画 |
| in\_animation\_duration | `500000` | 【可选】入场动画时长（微秒） |
| loop\_animation | `弹幕滚动` | 【可选】循环动画 |
| loop\_animation\_duration | `1000000` | 【可选】循环单次时长（微秒） |
| out\_animation | `向下滑动` | 【可选】出场动画 |
| out\_animation\_duration | `500000` | 【可选】出场动画时长（微秒） |
| transition | `淡入淡出` | 【可选】转场名称 |
| transition\_duration | `300000` | 【可选】转场时长（微秒） |

#### 2. 仅必填参数

```bash
curl -X POST https://capcut-mate.jcaigc.cn/openapi/capcut-mate/v1/caption_infos \
  -H "Content-Type: application/json" \
  -d '{
    "texts": ["Hello World"],
    "timelines": [{"start": 0, "end": 3000000}]
  }'
```

#### 3. 关键词高亮 + 关键词阴影

```bash
curl -X POST https://capcut-mate.jcaigc.cn/openapi/capcut-mate/v1/caption_infos \
  -H "Content-Type: application/json" \
  -d '{
    "texts": ["欢迎观看我们的视频", "这是一个精彩示例"],
    "timelines": [
      {"start": 0, "end": 3000000},
      {"start": 3000000, "end": 6000000}
    ],
    "font_size": 24,
    "keyword_color": "#FF5500",
    "keyword_border_color": "#111111",
    "keyword_font": "思源中宋",
    "keyword_font_size": 28,
    "keyword_has_shadow": true,
    "keyword_shadow_info": {
      "shadow_alpha": 0.9,
      "shadow_color": "#000000",
      "shadow_diffuse": 15.0,
      "shadow_distance": 5.0,
      "shadow_angle": -45.0
    },
    "keywords": ["视频", "精彩"]
  }'
```

#### 4. 配合 add\_captions 使用

1. 先调用 `caption_infos`，从响应中取出 `infos` 字符串。
2. 将该字符串原样作为 `add_captions` 的 `captions` 参数传入。

```bash
curl -X POST https://capcut-mate.jcaigc.cn/openapi/capcut-mate/v1/add_captions \
  -H "Content-Type: application/json" \
  -d '{
    "draft_url": "https://capcut-mate.jcaigc.cn/openapi/capcut-mate/v1/get_draft?draft_id=2025092811473036584258",
    "captions": "[{\"start\":0,\"end\":3000000,\"text\":\"欢迎观看剪映教程\",\"keyword\":\"剪映\",\"keyword_color\":\"#FF5500\",\"keyword_has_shadow\":true,\"font_size\":24}]",
    "text_color": "#ffffff",
    "alignment": 1
  }'
```

## 错误码说明

| 错误码 | 错误信息 | 说明 | 解决方案 |
|--------|----------|------|----------|
| 1001 | 参数校验失败 | 缺少文本内容 | 提供非空 `texts` |
| 1001 | 参数校验失败 | 缺少时间线 | 提供有效 `timelines` |
| 9998 | 系统内部错误 | 内部处理错误 | 联系技术支持 |

## 注意事项

1. **时间单位**：微秒（`1 秒 = 1_000_000 微秒`）
2. **颜色格式**：十六进制，如 `#FF0000`
3. **动画名称**：建议通过 `get_text_animations` 获取可用名称
4. **输出用途**：返回的 `infos` 可直接作为 `add_captions` 的 `captions` 参数
5. **关键词阴影**：本接口只负责写入字段；真正渲染由 `add_captions` 完成

## 工作流程

1. 校验 `texts` / `timelines`
2. 按较短长度对齐两个数组
3. 按索引组装每条字幕信息（含关键词与可选样式/动画）
4. 序列化为 JSON 字符串并返回

## 相关接口

* [创建草稿](/docs/create_draft)
* [添加字幕](/docs/add_captions)
* [获取文字动画](/docs/get_text_animations)
* [保存草稿](/docs/save_draft)

***

📚 **项目资源**\
**GitHub**: <https://github.com/Hommy-master/capcut-mate>\
**Gitee**: <https://gitee.com/taohongmin-gitee/capcut-mate>
