资讯动态

从 Creatify 控制台到 Boreal API,TaoToken 管 Key

发布时间:2026/9/18 5:28:36 来源:尧图企业网站定制
1. 从 Creatify 控制台点下 Boreal 后先固定 Key 与 Base URL在 Creatify 控制台里点完 Boreal 的“文生视频/图生视频”按钮后真正转 API 时最先卡住的通常不是提示词而是 Key 放哪里、Base URL 填什么、控制台字段怎么落到 JSON。我的做法是先在 TaoToken 官网 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_contentcreatify_boreal_intro 创建 Key再把 API Base URL 固定为https://taotoken.net/api。Creatify Labs 这次把 Boreal 定位在视频广告生成控制台里已经能看到文生视频和图生视频入口官方也公开了后训练语料与盲测结论。对普通运营来说控制台点按钮足够直观但对开发者来说控制台有三个麻烦第一参数无法版本化今天调好的比例、时长、参考图明天很难原样复现第二批量任务要靠人点几十条广告素材就会变成体力活第三返回结果只存在于页面里既不好检索也不好和投放数据做关联。Boreal API 的价值就在这里把控制台表单转成 JSON把生成按钮转成 HTTP 请求把视频结果转成可落盘的记录。本文不重复官方新闻稿而是按开发者迁移视角把“Creatify 控制台手动操作”拆成“TaoToken 管 Key Boreal API 调用 本地结果记录”。你先在 TaoToken 拿到 Key再让所有脚本、Claude Code、Codex、CC Switch 都指向同一个 Base URL后面换模型、换项目、换机器时迁移成本会低很多。这里先固定三个环境变量后续所有命令都基于它们export TAOTOKEN_BASE_URLhttps://taotoken.net/api export TAOTOKEN_API_KEYYOUR_API_KEY export TAOTOKEN_VIDEO_ENDPOINT从 TaoToken 模型详情页或模型对话页复制出来的视频任务完整路径为什么不把 Key 写进代码因为视频广告项目往往会连接素材目录、投放报表、剪辑工具和定时任务。Key 一旦散落在 notebook、shell history、临时脚本里后面排查 401 会非常痛苦。TaoToken 的 API Keys 页面就是集中管理入口适合先创建独立 Key再按项目或环境拆分权限。控制台到 API 的本质变化可以概括成一句话控制台是“一次性表单”API 是“可重复任务”。你要做的不是把按钮翻译成代码而是把按钮背后的输入、输出、状态机记录下来。输入是 prompt、参考图、时长、比例、分辨率、种子输出是 request_id、任务状态、视频地址、失败原因状态机是 queued、processing、succeeded、failed、canceled。只要这三类信息能在本地闭环控制台和 API 就不是两套东西。2. TaoToken 控制台到 Boreal API 的字段对照从 Creatify 控制台迁移到 Boreal API 时最容易出错的是字段名。控制台上叫“参考图”API 里可能叫image_url或image控制台上叫“视频比例”API 里可能是aspect_ratio或ratio。所以不要凭记忆写 payload先把控制台参数抄成一张对照表再去 TaoToken 模型详情页核对示例。TaoToken 官网入口在这里https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_contentconsole_api_mapping 。下面是一张通用对照表字段名以 TaoToken 控制台当前展示为准Creatify 控制台字段API 常见字段说明生成模式文生视频mode/task_type只提交 prompt不带参考图生成模式图生视频mode/task_typeimage_url参考图需要可被服务端访问或使用控制台支持的上传方式广告提示词prompt建议把产品卖点、镜头语言、负面约束分开写参考图/首帧图image_url/image本地路径通常不能直接用需换成可访问 URL 或控制台指定字段视频时长duration注意单位是秒还是枚举值类型可能是 number 或 string画面比例aspect_ratio如 16:9、9:16、1:1具体枚举以控制台为准分辨率resolution不要和比例混写分辨率影响耗时与失败率随机种子seed复现同一批素材时非常关键生成数量n/batch_size批量任务先小规模验证再放大并发模型选择model控制台显示名不一定等于 API model id以模型详情页为准回调地址callback_url/webhook有回调就记录没有就轮询任务状态负面提示词negative_prompt不是所有视频模型都支持先查示例水印/品牌元素watermark/logo_url广告场景常需要但字段兼容性要确认进一步把控制台动作映射到 API 动作控制台动作API 动作本地要记录点击生成创建视频任务请求体、request_id、创建时间查看进度查询任务状态task_status、进度、更新时间预览结果获取视频 URLvideo_url、封面、时长重新生成用同一 payload 换 seed新旧 request_id 关联下载视频拉取产物到本地文件路径、哈希、来源 request_id删除/取消取消任务或忽略结果取消原因、是否计费以控制台为准这张表的价值在于你在控制台每点一次按钮都对应一条可记录的 API 任务。以后运营说“上周那条 9:16 的广告片怎么生成的”你可以直接按request_id找到 prompt、参考图、seed 和返回视频而不是翻聊天记录找截图。一个最小 payload 可以长这样字段名需要你按 TaoToken 模型详情页替换{ model: YOUR_VIDEO_MODEL_ID, mode: text_to_video, prompt: 15 秒竖屏广告咖啡杯特写晨光慢镜头干净背景产品位于画面中央, duration: 15, aspect_ratio: 9:16, resolution: 1080p, seed: 20250101, n: 1 }图生视频则加上参考图字段{ model: YOUR_VIDEO_MODEL_ID, mode: image_to_video, prompt: 镜头缓慢推进产品保持稳定背景有轻微光影变化, image_url: https://your-cdn.example.com/creative/product-frame.png, duration: 10, aspect_ratio: 16:9, resolution: 1080p, seed: 20250102 }注意YOUR_VIDEO_MODEL_ID、YOUR_VIDEO_MODEL_ID不是让你猜而是提醒你先去 TaoToken 控制台复制真实模型 ID。Boreal 在控制台里的展示名、模型详情页里的调用名、API payload 里的model字段可能是三个不同粒度。把这三个值记到项目 README 里后面少踩很多 404 和 422。3. 本地调用脚本环境变量、JSON 载荷、JSONL 落盘本地脚本的目标不是“跑一次出视频”而是“每次跑都有记录”。下面这个 Python 脚本用requests发出创建任务请求并把请求、响应、关键字段写入本地目录。它不绑定具体视频路径TAOTOKEN_VIDEO_ENDPOINT从 TaoToken 控制台复制避免把错误路径写死在代码里。先准备目录mkdir -p taotoken-boreal/{payloads,scripts,records,outputs} cd taotoken-boreal python3 -m venv .venv source .venv/bin/activate pip install requests创建payloads/text_to_video.json{ model: YOUR_VIDEO_MODEL_ID, mode: text_to_video, prompt: 10 秒横屏广告运动鞋落地特写慢动作城市夜景霓虹反光, duration: 10, aspect_ratio: 16:9, resolution: 1080p, seed: 1001, n: 1 }创建scripts/create_video.pyimport json import os import pathlib import time from datetime import datetime, timezone import requests BASE_URL os.environ.get(TAOTOKEN_BASE_URL, https://taotoken.net/api).rstrip(/) API_KEY os.environ[TAOTOKEN_API_KEY] VIDEO_ENDPOINT os.environ[TAOTOKEN_VIDEO_ENDPOINT] if VIDEO_ENDPOINT.startswith(http): url VIDEO_ENDPOINT else: url f{BASE_URL}/{VIDEO_ENDPOINT.lstrip(/)} payload_path pathlib.Path(payloads/text_to_video.json) payload json.loads(payload_path.read_text(encodingutf-8)) headers { Authorization: fBearer {API_KEY}, Content-Type: application/json, } resp requests.post(url, headersheaders, jsonpayload, timeout60) now datetime.now(timezone.utc).isoformat() try: body resp.json() except Exception: body {raw_text: resp.text} record { created_at: now, endpoint: url, http_status: resp.status_code, request_id: resp.headers.get(x-request-id) or body.get(id) or body.get(request_id), task_status: body.get(status), video_url: body.get(video_url) or body.get(url), error: body.get(error), payload: payload, response: body, } pathlib.Path(records/results.jsonl).parent.mkdir(parentsTrue, exist_okTrue) with open(records/results.jsonl, a, encodingutf-8) as f: f.write(json.dumps(record, ensure_asciiFalse) \n) pathlib.Path(records/last_response.json).write_text( json.dumps(body, ensure_asciiFalse, indent2), encodingutf-8, ) print(json.dumps({ http_status: resp.status_code, request_id: record[request_id], task_status: record[task_status], }, ensure_asciiFalse, indent2))运行export TAOTOKEN_BASE_URLhttps://taotoken.net/api export TAOTOKEN_API_KEYYOUR_API_KEY export TAOTOKEN_VIDEO_ENDPOINT从 TaoToken 模型详情页复制的创建任务路径 python scripts/create_video.py如果创建任务成功通常会拿到一个任务 ID但视频不会立刻出现。视频生成是异步任务所以下一步是轮询或等待回调。轮询脚本如下TAOTOKEN_POLL_ENDPOINT同样从模型详情页复制不要把别人博客里的路径硬套import json import os import time import pathlib from datetime import datetime, timezone import requests BASE_URL os.environ.get(TAOTOKEN_BASE_URL, https://taotoken.net/api).rstrip(/) API_KEY os.environ[TAOTOKEN_API_KEY] POLL_ENDPOINT os.environ[TAOTOKEN_POLL_ENDPOINT] REQUEST_ID os.environ[TAOTOKEN_REQUEST_ID] if POLL_ENDPOINT.startswith(http): url POLL_ENDPOINT else: url f{BASE_URL}/{POLL_ENDPOINT.lstrip(/)} headers {Authorization: fBearer {API_KEY}} deadline time.time() 15 * 60 last None while time.time() deadline: resp requests.get( url, headersheaders, params{request_id: REQUEST_ID}, timeout30, ) body resp.json() last body status body.get(status) or body.get(task_status) print(datetime.now(timezone.utc).isoformat(), status) if status in {succeeded, success, completed, failed, error, canceled}: break time.sleep(10) pathlib.Path(records).mkdir(exist_okTrue) pathlib.Path(records/last_poll.json).write_text( json.dumps(last, ensure_asciiFalse, indent2), encodingutf-8, ) print(json.dumps(last, ensure_asciiFalse, indent2))返回结果记录建议统一成 JSONL每行一个任务方便 grep、导入表格或做简单统计{created_at:2025-01-01T10:00:0000:00,request_id:req_xxx,model:YOUR_VIDEO_MODEL_ID,mode:text_to_video,http_status:200,task_status:queued,video_url:null,error:null} {created_at:2025-01-01T10:00:1000:00,request_id:req_xxx,model:YOUR_VIDEO_MODEL_ID,mode:text_to_video,http_status:200,task_status:succeeded,video_url:https://cdn.example.com/video/xxx.mp4,error:null}这套脚本的重点不是代码多复杂而是把“控制台点击”变成“可追踪任务”。你可以在payloads/下放多条 JSON循环提交也可以把results.jsonl导入表格统计不同 prompt、seed、比例下的成功率。所有命令都在本地执行不要把这些脚本接到生产数据库或直接连内部系统。4. 返回结果记录把控制台截图变成可检索的 JSONL控制台最麻烦的地方是结果不可检索。视频广告项目通常会迭代很多版同一句卖点换三种镜头语言同一镜头换两个 seed同一 seed 换 9:16 和 16:9。两周后回看页面里全是缩略图根本不知道哪一版对应哪条投放素材。API 化之后第一等公民不是视频文件而是任务记录。建议给每条记录固定这些字段字段用途request_id贯穿创建、轮询、下载、复现created_at排查时间线、统计耗时model记录实际模型 ID避免展示名混淆modetext_to_video 或 image_to_videoprompt广告提示词原文便于批量对比image_url图生视频的参考图来源duration视频时长aspect_ratio投放比例resolution分辨率seed复现实验task_statusqueued、processing、succeeded、failedvideo_url成功后的产物地址local_path下载到本地的路径error失败原因方便聚合http_status排查鉴权、限流、路径错误判断任务是否成功不能只看创建请求的 HTTP 状态。创建任务返回 200只代表任务被接收视频是否生成成功要看轮询或回调里的task_status。下面是一张排障对照表现象可能原因处理创建请求 401Key 缺失、过期、前缀没带 Bearer到 TaoToken API Keys 重新创建检查Authorization头创建请求 404Base URL 或 endpoint 拼接错误Base URL 固定为https://taotoken.net/apiendpoint 从模型详情页复制创建请求 422payload 字段名、类型、枚举值不匹配对照控制台参数与模型示例不要凭经验猜轮询一直 processing视频任务耗时较长设置 10 到 30 分钟超时不要同步阻塞轮询 429查询过于频繁或并发过高指数退避降低轮询频率任务 failed提示词、参考图、分辨率或内部错误记录 error先用更短时长和更低分辨率复现返回视频 URL 无法访问链接过期或需要鉴权立即下载到本地 outputs 目录别只存 URL控制台能生成API 不行控制台显示名不等于 API model id在 TaoToken 模型详情页复制真实调用名把控制台截图变成 JSONL 后你至少能做三件事第一按prompt搜索历史素材第二按seed复现某条广告第三按error聚合失败原因知道是参考图问题、时长问题还是模型名问题。对于视频广告团队第三点尤其重要因为失败任务如果只留在页面里没人会主动总结。5. 同一套 Key 接入 Claude Code、Codex 与 CC Switch视频广告工作流不只调用视频模型。你还需要写脚本、整理 prompt、生成批量 payload、下载产物、清洗 JSONL。这时候 Claude Code、Codex、CC Switch 会进入同一套本地环境。核心原则是TaoToken 管 KeyBase URL 统一填https://taotoken.net/api但不同工具用各自的配置格式不要把 Claude Code 的ANTHROPIC_*环境变量套到 Codex 上。Claude Code 使用settings.json或环境变量常见配置如下{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_AUTH_TOKEN: YOUR_API_KEY, ANTHROPIC_MODEL: YOUR_CLAUDE_MODEL } }如果你在 shell 里临时使用也可以export ANTHROPIC_BASE_URLhttps://taotoken.net/api export ANTHROPIC_AUTH_TOKENYOUR_API_KEY export ANTHROPIC_MODELYOUR_CLAUDE_MODELCodex 使用config.toml不要写ANTHROPIC_*。示例model YOUR_CODEX_MODEL model_provider taotoken [model_providers.taotoken] name TaoToken base_url https://taotoken.net/api env_key TAOTOKEN_API_KEY wire_api chat然后在环境变量里放 Keyexport TAOTOKEN_API_KEYYOUR_API_KEYCC Switch 可以理解成“配置切换器”最关键的是三件套Provider、Base URL、API Key。如果你想再加一项就是 Model。配置时不要把视频模型的 Key 和代码模型的 Key 混在一起更稳的做法是在 TaoToken API Keys 页面为不同用途创建不同 Key例如video-ad-batch、claude-code-dev、codex-local这样某一条流水线出问题时不会影响其他工具。CC Switch 三件套可以按这样填Provider Name: TaoToken Base URL: https://taotoken.net/api API Key: YOUR_API_KEY Model: YOUR_CLAUDE_MODEL如果你需要完整文档可以看 TaoToken 的 Claude Code 文档入口。注意Claude Code 用ANTHROPIC_*Codex 用config.toml和TAOTOKEN_API_KEY两者不要互相复制。很多 401 和 404 不是 Key 坏了而是配置串了。比如把ANTHROPIC_BASE_URL写进 Codex 的config.tomlCodex 不会识别把 Codex 的 provider 配置写进 Claude Code也会导致模型名或鉴权失败。6. 排障清单401、404、429、超时、模型名不一致实际迁移时Boreal API 报错往往集中在几个点。下面按从鉴权到任务的顺序排一遍。更多协议入口和模型说明以 TaoToken 官网为准https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_contenttroubleshooting 。第一401 通常不是“平台没额度”而是 Key 没有正确放进请求。检查三件事Authorization是否为Bearer YOUR_API_KEYKey 是否复制完整是否把控制台登录态误当成 API Key。TaoToken 的 API Key 应该在 API Keys 页面创建创建后立即写入环境变量或密钥管理工具不要贴在脚本第一行。第二404 通常来自 Base URL 和 endpoint 拼接。Base URL 固定写https://taotoken.net/api不要自己加/v1、不要多写斜杠、不要从旧项目复制别的路径。视频任务的 endpoint 从 TaoToken 模型详情页或模型对话页复制。脚本里建议保留endpoint字段到 JSONL出问题时一眼能看出请求打到了哪里。第三422 是参数校验失败。视频广告场景常见原因有duration传了字符串但接口要数字aspect_ratio使用了不支持的写 16:9 变成 16x9image_url是本地路径而不是可访问链接resolution和duration组合超出模型限制model是展示名而不是调用 ID。处理方法是先用控制台能成功的参数逐字段抄到 payload再一个一个改不要一次性大改。第四429 是频率或并发限制。视频任务比较重批量提交时不要一上来就 50 并发。建议先串行跑 3 条再改成 2 到 5 并发观察 429 和任务失败率。轮询也不要每秒钟查一次10 秒或 20 秒一次更稳。遇到 429 后做指数退避并把request_id、重试次数写入本地日志。第五超时。视频生成不是 chat几秒内不会返回结果。创建任务的 HTTP 请求应该很快返回但任务本身可能排队。不要在创建请求里设置 10 分钟超时同步等视频正确做法是创建后拿request_id再轮询或回调。轮询也设置总超时比如 15 到 30 分钟超时后记录为timeout而不是无限循环。第六模型名不一致。控制台展示“Boreal”或某个营销名称API 可能需要具体模型 ID控制台默认模型API 可能需要显式传model。解决方式是去 TaoToken 模型详情页复制示例不要根据标题猜。把模型 ID 写进 payload 模板后续所有任务都复用它。第七控制台成功、API 失败。除了模型名常见差异还有参考图处理方式、默认比例、默认时长、水印开关。控制台可能帮你填了默认值API 不会。建议在第一次迁移时完全按照控制台可见参数构造 JSON并把控制台页面截图或参数表放到项目 README 中。7. 从手动按钮到可重复流水线最小目录结构如果你只是偶尔生成几条视频控制台足够。但如果要围绕 Boreal 做视频广告测试建议尽快建立一个最小本地工程。不要一开始就做复杂平台先用目录和 JSONL 跑通闭环。推荐结构taotoken-boreal/ ├── .env ├── payloads/ │ ├── text_to_video.json │ ├── image_to_video.json │ └── batch-2025-01-01/ ├── scripts/ │ ├── create_video.py │ ├── poll_video.py │ └── download_video.py ├── records/ │ ├── results.jsonl │ └── errors.jsonl └── outputs/ ├── 2025-01-01/ └── 2025-01-02/.env只放本地变量不要提交TAOTOKEN_BASE_URLhttps://taotoken.net/api TAOTOKEN_API_KEYYOUR_API_KEY TAOTOKEN_VIDEO_ENDPOINT从模型详情页复制的创建任务路径 TAOTOKEN_POLL_ENDPOINT从模型详情页复制的查询任务路径payloads/batch-2025-01-01/下可以放多条 JSON每条对应控制台里一次生成操作。脚本读目录、逐条提交、逐条记录。成功后把视频下载到outputs/日期/request_id.mp4并把本地路径写回 JSONL。失败则写records/errors.jsonl保留错误响应。流程可以固定成五步在 Creatify 控制台试出一条可接受的参数组合。把控制台参数抄成 payload JSON模型 ID 从 TaoToken 模型详情页复制。用create_video.py提交任务记录 request_id。用poll_video.py轮询状态成功后下载视频。把 request_id、prompt、seed、video_url、local_path 写入 results.jsonl。这套流程的价值是控制台仍然是“试验田”API 是“生产线”。你可以在控制台快速看效果再把稳定参数沉淀成 JSON也可以反过来先用 API 批量跑小规模测试再挑出最好的几条回控制台精修。两边不是替代关系而是试验和复现的关系。批量时还要注意素材合规和成本控制。参考图不要用未授权素材提示词不要写侵权品牌批量并发不要超过账号和模型限制。成本相关数字以 TaoToken 控制台和官方计费页为准本文不展开具体价格。你要做的是在 JSONL 里记录每条任务的模型、时长、分辨率、状态后续才能和账单或投放效果对齐。8. 收尾把 Key 管在 TaoToken把调用留在本地从 Creatify 控制台到 Boreal API迁移难点从来不是“会不会发 POST”而是配置、字段、状态和记录。先把 Key 管在 TaoTokenBase URL 固定为https://taotoken.net/api再把控制台参数抄成 payload然后用本地脚本创建任务、轮询状态、下载视频最后用 JSONL 保存 request_id、prompt、seed、video_url 和错误原因。这样你既有控制台的直观又有 API 的可复现。如果你准备继续把这套流程工程化可以按下面路径走先打开模型对话页确认你要调用的视频模型名称、示例 payload 和返回格式https://taotoken.net/models/detail/chat?utm_sourcetaotoken_aicg_blog_endutm_contentcta_model_chat如果你需要长期跑脚本、批量任务和 Coding 工作流可以看 Coding Planhttps://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcta_coding_plan到 API Keys 页面创建独立 Key建议按项目命名不要多个工具共用一个 Keyhttps://taotoken.net/console/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentcta_api_keys如果你要把 Claude Code 接到同一套 Base URL参考 Claude Code 文档https://taotoken.net/doc/ClaudeCodeAnthropic?utm_sourcetaotoken_aicg_blog_endutm_contentcta_claude_code_doc最后再提醒一次Claude Code 用ANTHROPIC_*和settings.jsonCodex 用config.toml和TAOTOKEN_API_KEYCC Switch 重点填 Provider、Base URL、API Key 三件套。所有脚本和命令都在你本地执行Key 不要写死返回结果不要只留 URL任务记录不要只靠控制台截图。把这些基础动作做好Boreal API 才能从“能调用”变成“可稳定跑视频广告任务”。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价