API接入文档
文档公开可见,API 调用仅向专业版会员开放。当前开源站保留真实可调用的提取、查询和改写接口,默认以 `url-extract` 承接 50+ 平台公开链接,方便先看文档、再创建并管理 API Key 完成接入。
登录后才能创建和删除 API Key / Secret。
默认入口是 `url-extract`,适合 50+ 平台公开链接的统一接入。
视频提取、文案改写与图片 OCR 会按当前套餐校验频率和剩余额度。
如果额度不足、无权访问或 Key 校验失败,请求会返回 401 / 403。
一个 Key 对应一组 Secret,只在创建成功时完整展示。
建议只在服务端保存凭证,不要暴露到浏览器代码或公开仓库。
接好之后,统一使用轮询接口查询任务状态,并把任务结果回写到你自己的历史系统。
下载可直接运行的 Python 示例包,内含视频提取、统一轮询与改写调用脚本,全部对应当前站点的真实接口。
先查看公开权益说明和登录入口;登录后再创建 Key / Secret、查看配额和调用日志。
先确认体验版 240 分钟/月、120 次改写、20 次 OCR 与专业版的 API 限流、Key 数量和套餐差异,再决定是否升级接入。
如果你要上传本地图片并通过 RapidOCR 做本地识别,可以继续查看图片 OCR API 文档。
如果你已经先用网页跑过任务,可以从任务历史对照 `taskId`、结果字段和导出内容,再开始脚本联调。
如果你的流程包含本地视频、音频或图片上传,先看帮助页里的预检说明,再决定是否直接发起上传。
登录后才能创建和删除 API Key / Secret。
接口调用会按当前套餐校验每分钟请求上限与 API Key 数量上限。
体验版默认带 240 分钟月度转写、120 次改写和 20 次 OCR,适合先验证页面流程;API 调用从专业版开始开放。
改写和本地 OCR 会进一步校验账号剩余额度;额度不足时直接返回 403。
如果流程包含本地上传,建议在真正发起上传前先调用 `GET /api/public/runtime-health`,确认当前机器的 Whisper 与 OCR 依赖已经就绪。
Base URL: `https://your-open-instance.example.com`
视频 / 图文链接提取:`POST /api/open/video/extract`,未传 `kind` 时默认按 `url-extract` 处理
统一查询任务状态:`GET /api/open/video/query`
公开运行环境预检:`GET /api/public/runtime-health`
AI 改写:`POST /api/open/rewrite`
下面这块面板会直接读取 `GET /api/public/runtime-health` 的实时返回,方便你在把本地音视频上传流程接到同一个实例前,先确认当前机器上的本地转写依赖是否真的就绪。
下载可直接执行的排查脚本,覆盖 `GET /api/public/runtime-health` 预检、`WHISPER_MODEL` 检查与本地 Whisper 缓存预热,专门处理 `cache-required` 与 cached snapshot folder 缺失这类本地转写问题。
curl -X POST "https://your-open-instance.example.com/api/open/video/extract" \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-H "x-api-secret: YOUR_API_SECRET" \
-d '{
"url": "https://www.youtube.com/watch?v=aqz-KE-bpKQ",
"kind": "url-extract",
"locale": "zh-CN"
}'curl "https://your-open-instance.example.com/api/open/video/query?taskId=YOUR_TASK_ID" \
-H "x-api-key: YOUR_API_KEY" \
-H "x-api-secret: YOUR_API_SECRET"curl "https://your-open-instance.example.com/api/public/runtime-health"
{
"msg": "操作成功",
"code": 200,
"data": {
"checkedAt": "2026-07-18T15:41:52.660Z",
"localTranscription": {
"ready": false,
"dependencyStatus": "ready",
"ffmpegStatus": "ready",
"whisperReadiness": "cache-required",
"allowDownload": false,
"model": "small",
"source": "huggingface-cache",
"cacheLookupScopes": [
"HOME_CACHE_HUGGINGFACE_HUB",
"LOCALAPPDATA_HUGGINGFACE_HUB"
],
"nextSteps": [
{
"code": "prepare-local-whisper-model",
"severity": "critical",
"commands": [
"python -c \"from huggingface_hub import snapshot_download; snapshot_download(repo_id='Systran/faster-whisper-small')\"",
"python -c \"from faster_whisper import WhisperModel; WhisperModel('small', device='cpu', compute_type='int8', local_files_only=True)\"",
"curl \"<部署地址>/api/public/runtime-health\""
]
},
{
"code": "enable-whisper-download",
"severity": "warning",
"commands": [
"WHISPER_ALLOW_DOWNLOAD=1",
"重启应用进程后,再重新提交本地转写任务"
]
}
]
},
"imageOcr": {
"ready": true,
"dependencyStatus": "ready",
"nextSteps": []
}
}
}curl -X POST "https://your-open-instance.example.com/api/open/rewrite" \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-H "x-api-secret: YOUR_API_SECRET" \
-d '{
"text": "把一段原始逐字稿改成更适合视频号传播的表达。",
"promptStyle": "直播切片",
"rewritePlatform": "video-channel",
"rewriteLength": "short",
"rewriteAudience": "professional",
"locale": "zh-CN"
}'# curl:创建公开链接提取任务
curl -X POST "https://your-open-instance.example.com/api/open/video/extract" \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-H "x-api-secret: YOUR_API_SECRET" \
-d '{"url":"https://www.youtube.com/watch?v=aqz-KE-bpKQ","kind":"url-extract","locale":"zh-CN"}'
# TypeScript:创建任务并轮询状态
const createResponse = await fetch("https://your-open-instance.example.com/api/open/video/extract", {
method: "POST",
headers: {
"Content-Type": "application/json",
"x-api-key": process.env.ATC_API_KEY!,
"x-api-secret": process.env.ATC_API_SECRET!,
},
body: JSON.stringify({
url: "https://www.youtube.com/watch?v=aqz-KE-bpKQ",
kind: "url-extract",
locale: "zh-CN",
}),
});
const createPayload = await createResponse.json();
const taskId = createPayload.data.taskId;
const queryResponse = await fetch(
"https://your-open-instance.example.com/api/open/video/query?taskId=" + encodeURIComponent(taskId),
{
headers: {
"x-api-key": process.env.ATC_API_KEY!,
"x-api-secret": process.env.ATC_API_SECRET!,
},
},
);
const queryPayload = await queryResponse.json();
# Python:继续调用改写接口
import requests
headers = {
"Content-Type": "application/json",
"x-api-key": "YOUR_API_KEY",
"x-api-secret": "YOUR_API_SECRET",
}
rewrite_response = requests.post(
"https://your-open-instance.example.com/api/open/rewrite",
headers=headers,
json={
"text": "把原始逐字稿改成更紧凑的短视频口播稿。",
"promptStyle": "短视频口播",
"rewritePlatform": "douyin",
"rewriteLength": "short",
"rewriteAudience": "buyers",
"locale": "zh-CN",
},
timeout=30,
)
print(rewrite_response.json())1. 先在登录后的账号环境里创建 API Key / Secret。
2. 调用 `POST /api/open/video/extract` 或 `POST /api/open/rewrite`,保存返回的 `taskId`。
3. 每隔 3 到 5 秒调用一次 `GET /api/open/video/query`,直到状态进入 `SUCCESS` 或 `FAILURE`。
4. 提取成功后读取 `textContent`、`videoUrlList`、`imageUrlList`、`localFiles` 与 `meta.pipelineMode`;改写成功后读取 `rewrittenContent`、`rewrittenVariants` 与 `meta` 里的改写配置。
5. 如果你已经先用网页验证过结果,可以拿任务历史里的相同任务做字段对照,减少联调偏差。
{
"msg": "操作成功",
"code": 200,
"data": {
"taskId": "54fc9f2d-81e4-4d98-9c97-8ae2724d2f0e",
"kind": "url-extract",
"displayKind": "url-extract",
"displayKindTitle": "公开链接提取",
"title": "示例视频标题",
"content": "作品简介",
"textContent": "逐字稿内容",
"videoUrl": "https://example.com/video.mp4",
"videoUrlList": ["https://example.com/video.mp4"],
"imageUrlList": [],
"localFiles": ["sample-video.mp4", "sample-audio.mp3"],
"audioUrl": "https://example.com/audio.mp3",
"duration": 138.6,
"platform": "youtube",
"workType": "video",
"status": "SUCCESS",
"errorMessage": "任务执行成功",
"createTime": "2026-07-16T12:00:00.000Z",
"meta": {
"pipelineMode": "download-only",
"downloadedFileCount": 2
}
}
}{
"msg": "操作成功",
"code": 200,
"data": {
"taskId": "01e8146a-9f2a-4dcf-b4a4-52d0cc2d86a1",
"kind": "rewrite-content",
"displayKind": "rewrite-content",
"displayKindTitle": "文案改写",
"title": "直播切片改写稿",
"content": "原始逐字稿内容",
"textContent": "原始逐字稿内容",
"rewrittenContent": "改写后的完整文案",
"rewrittenVariants": [
"变体一",
"变体二",
"变体三"
],
"videoUrlList": [],
"imageUrlList": [],
"localFiles": [],
"platform": "rewrite",
"workType": "text",
"status": "SUCCESS",
"errorMessage": "任务执行成功",
"createTime": "2026-07-16T12:00:00.000Z",
"meta": {
"rewriteEngine": "本地规则模板",
"rewriteProvider": "local",
"rewritePlatform": "video-channel",
"rewriteLength": "short",
"rewriteAudience": "professional"
}
}
}0. 如果你要走本地上传链路,先查 `GET /api/public/runtime-health`;别等文件传完才发现当前机器还没准备好 Whisper 缓存或 OCR 依赖。
1. URL 提取默认会继续尝试下载可交付媒体文件;如果你还想让链接任务继续做本地转写,再额外安装 `requirements-full.txt` 并开启 `ENABLE_URL_MEDIA_TRANSCRIBE=1`。
2. 如果媒体平台限制访问、要求登录态或触发风控,任务可能返回 `FAILURE`;如果只是下载或转写未完成,也可能以 `SUCCESS` 返回元数据并在 `errorMessage` 里附带提示。
3. 建议把 `url-extract` 当作泛平台默认入口;如果你明确知道是抖音 / 小红书图文,再显式传 `douyin-image` 或 `xiaohongshu-image`,能减少类型判断偏差。这两类图文任务都会对公开可访问的图片逐张 OCR,并把结果聚合回任务里,当前仍不占本地 OCR 次数。
4. 如果你要上传本地图片做 OCR,或想自己传远程图片地址数组,请改看图片 OCR API 文档。
5. 图文链接提取里的自动 OCR 当前仍不占独立本地 OCR 次数;只有单独的本地图片 OCR 会消耗 OCR 额度。
6. 当前文档页已经提供可下载的 Python 示例 ZIP,示例里的路径、轮询方式和字段都对应当前站点可直接联调的真实接口能力。
7. 如果本地转写任务因为 Whisper 缓存、`WHISPER_MODEL` 路径或 `faster-whisper` 依赖未就绪而降级或失败,统一查询接口会额外返回 `runtimeRepairActions`,把帮助入口和工具包下载地址一起带回给你。