AnyToCopy Open 标志
AnyToCopy Open
50+平台公开链接提取与视频转文案工作台
API 接入登录 / 注册
首页图片文案提取
视频文案提取▼
视频文案提取
AI内容创作
更多公开入口▼
会员权益帮助中心
开放接口

API接入文档

文档公开可见,API 调用仅向专业版会员开放。当前开源站保留真实可调用的提取、查询和改写接口,默认以 `url-extract` 承接 50+ 平台公开链接,方便先看文档、再创建并管理 API Key 完成接入。

POST /api/open/video/extractGET /api/open/video/queryGET /api/public/runtime-healthPOST /api/open/rewrite
API 调用仅向专业版会员开放
你可以先公开阅读接入方式,但真实请求仍会按账号、套餐、频率和额度进行校验。体验版适合先跑通页面工作流,真正脚本化接入从专业版开始。

登录后才能创建和删除 API Key / Secret。

默认入口是 `url-extract`,适合 50+ 平台公开链接的统一接入。

视频提取、文案改写与图片 OCR 会按当前套餐校验频率和剩余额度。

如果额度不足、无权访问或 Key 校验失败,请求会返回 401 / 403。

创建并管理 API Key
登录后进入“我的 API”页面,可以创建 Key / Secret、查看公开权益说明、筛选调用日志,并继续管理接入记录、套餐限制与最近调用历史。

一个 Key 对应一组 Secret,只在创建成功时完整展示。

建议只在服务端保存凭证,不要暴露到浏览器代码或公开仓库。

接好之后,统一使用轮询接口查询任务状态,并把任务结果回写到你自己的历史系统。

Python 调用示例下载

下载可直接运行的 Python 示例包,内含视频提取、统一轮询与改写调用脚本,全部对应当前站点的真实接口。

下载 Python 示例 ZIP
我的 API

先查看公开权益说明和登录入口;登录后再创建 Key / Secret、查看配额和调用日志。

我的权益

先确认体验版 240 分钟/月、120 次改写、20 次 OCR 与专业版的 API 限流、Key 数量和套餐差异,再决定是否升级接入。

图片 OCR API 文档

如果你要上传本地图片并通过 RapidOCR 做本地识别,可以继续查看图片 OCR API 文档。

任务历史

如果你已经先用网页跑过任务,可以从任务历史对照 `taskId`、结果字段和导出内容,再开始脚本联调。

本地运行环境预检说明

如果你的流程包含本地视频、音频或图片上传,先看帮助页里的预检说明,再决定是否直接发起上传。

调用限制与权益
文档公开,但真实请求仍会校验账号身份、API 凭证、频率限制和任务额度。页面公开能力与 API 权益是两层体系,不要混着算。

登录后才能创建和删除 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`

鉴权请求头
所有开放接口都使用同一组请求头;请只在服务端保存和调用,不要暴露到前端页面或公开仓库。
x-api-key
YOUR_API_KEY
登录后在“我的 API”里创建的 Key。
x-api-secret
YOUR_API_SECRET
与 Key 配套的 Secret,只在创建成功时完整展示。
Content-Type
application/json
视频 / 图文提取与改写接口都使用 JSON 请求体。
本地运行环境状态

下面这块面板会直接读取 `GET /api/public/runtime-health` 的实时返回,方便你在把本地音视频上传流程接到同一个实例前,先确认当前机器上的本地转写依赖是否真的就绪。

正在读取本地运行环境状态...
运行环境修复工具包下载

下载可直接执行的排查脚本,覆盖 `GET /api/public/runtime-health` 预检、`WHISPER_MODEL` 检查与本地 Whisper 缓存预热,专门处理 `cache-required` 与 cached snapshot folder 缺失这类本地转写问题。

下载运行环境工具包 ZIP
POST /api/open/video/extract
提交一条公开作品链接并创建提取任务。当前接口支持 `url-extract`、`douyin`、`douyin-image`、`xiaohongshu`、`xiaohongshu-image` 五类 `kind`;未传时默认按 `url-extract` 处理,适合作为 50+ 平台公开链接的统一入口。
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"
  }'
GET /api/open/video/query
这是统一查询接口。无论任务来自视频链接提取、图文链接提取、图片 OCR 还是文案改写,只要拿到 `taskId`,都通过这一个接口轮询状态;网页端任务历史也是围绕同一套任务结果组织的。
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"
GET /api/public/runtime-health
这是公开预检接口,不需要 API Key / Secret。只要你的网页或脚本准备上传本地视频、音频或图片,就应该先读取这里的 `localTranscription` 与 `imageOcr` 状态,再结合 `cacheLookupScopes` 和 `nextSteps`,提前判断 Whisper 缓存、`WHISPER_MODEL` 路径、`WHISPER_ALLOW_DOWNLOAD` 开关、ffmpeg 和 OCR 依赖是否已经准备好。
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": []
    }
  }
}
POST /api/open/rewrite
当前站点额外开放了 `POST /api/open/rewrite`。如果你想把提取结果继续送去 AI 改写,可以沿用同一套 API Key / Secret 与统一轮询模式。
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 / TypeScript / Python 示例
下面的示例覆盖创建提取任务、轮询查询,以及继续调用改写接口的最短接入闭环。
# 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. 如果你已经先用网页验证过结果,可以拿任务历史里的相同任务做字段对照,减少联调偏差。

响应状态码
200
任务创建成功,或任务查询成功并返回当前状态。
400
缺少 `url`、`text`、`taskId` 等必填字段,或参数格式不合法。
401
缺少 API 凭证,或 API Key / Secret 校验失败。
403
无权查看该任务,或改写 / OCR 额度已经用完。
404
查询的任务不存在,或任务已经被删除。
429
开放接口请求过于频繁,超过当前套餐的分钟级频率限制。
任务状态
WAITING
任务已创建,正在排队等待执行。
RUNNING
任务已经开始执行,继续轮询即可。
SUCCESS
任务执行成功,可以读取完整结果或继续导出 / 改写。
FAILURE
任务执行失败,请结合 `errorMessage` 与原始输入排查。
核心响应字段
data.taskId
String
任务唯一标识。创建接口和查询接口都会返回。
data.status
String
共享任务状态:`WAITING`、`RUNNING`、`SUCCESS`、`FAILURE`。
data.kind
String
任务原始类型编码,也就是创建任务时真正写入的 `kind`。
data.displayKind
String
任务解析后的实际显示类型;如果通用链接任务被自动升级成图文任务,这里会返回升级后的类型。
data.displayKindTitle
String
当前语言下的任务类型标题,适合直接展示到你的 UI。
data.title
String
提取到的作品标题;改写任务则通常是改写标题。
data.content
String
作品正文内容,或改写任务的原始输入文本。
data.textContent
String
更适合继续复制、归档和改写的文本主体。
data.videoUrlList
Array<String>
可访问的视频地址列表;如果存在下载结果,也会保留对应信息。
data.imageUrlList
Array<String>
图文或图片型作品的封面和图片资源地址列表。
data.localFiles
Array<String>
只返回安全文件名,不暴露服务端绝对路径。
data.rewrittenContent
String
改写任务完成后返回的主结果文案。
data.rewrittenVariants
Array<String>
改写任务的多版本输出结果。
data.meta
Object
附加元数据,例如 `pipelineMode`、`downloadedFileCount`、`rewriteEngine` 等。
data.errorMessage
String
状态说明或失败原因;失败排查优先看这里。
data.runtimeRepairActions
Array<Object>
可选。当本地转写链路缺少 Whisper 缓存、模型路径或本地依赖时,会返回帮助页锚点和运行环境工具包下载入口,方便脚本侧直接接入修复动作。
视频 / 图文链接提取成功响应示例
当公开视频或图文链接提取任务完成时,统一查询接口会返回下面这类结构:
{
  "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
    }
  }
}
AI 改写成功响应示例
当改写任务完成时,统一查询接口会返回下面这类结构:
{
  "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`,把帮助入口和工具包下载地址一起带回给你。

AnyToCopy Open 标志
AnyToCopy Open

支持 50+ 平台公开链接提取、视频/图片/Live 图下载、图片链接免费不限量解析;登录后可保存提取历史,体验版默认带 240 分钟月度转写额度,并提供会员权益、帮助中心与 API 接入。

文案提取工具
图片文案提取小红书图文提取抖音图文提取
视频文案提取
小红书视频文案提取在线视频文案提取视频文件文案提取音频文件文案提取批量文案提取
文案改写工具
AI内容创作口播稿改写素材库
帮助与支持
账号中心历史记录会员权益API 接入帮助中心使用说明常见问题提交反馈