开放 API

把内容合规检测接进你的系统

印尼站开放 API 把当地平台的文案 / 视频 / 图片合规检测,以及自定义违禁词库、AI 改写、素材包批量检测,用一套 REST 接口开放出来。与网页版共用同一套检测引擎和积分账户 —— 网页上看到的结论,接口返回的完全一致。

Base URLhttps://www.byerisk.com/api/v1/intl/id创建 API KeyOpenAPI 规范 (JSON) →

快速开始

三步接入。所有检测都是「提交拿 id → 轮询取结果」这一个模式。

1

创建 API Key

在工作台的「开放 API」页创建。密钥形如 brsk_live_…,只在创建时显示一次,请立即保存到你的密钥管理器。

2

带上鉴权头调用

每个请求加 Authorization: Bearer brsk_live_…。注意这与网页登录态的 token 不是一回事,不能混用。

3

提交检测,轮询结果

提交立即返回 id,检测在后台跑。轮询 GET 接口直到 status 变成 completed。文案通常 3–15 秒,视频约为视频时长的一半。

提交一次文案检测

bash
curl -X POST https://www.byerisk.com/api/v1/intl/id/text/checks \
  -H "Authorization: Bearer $BYERISK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "text": "Serum ini 100% ampuh memutihkan wajah dalam 3 hari, garansi uang kembali!",
    "platform": "tiktok_id",
    "vertical": "beauty",
    "explainLocale": "zh-CN"
  }'

# → {"success":true,"data":{"id":"cm5abc…","status":"processing"}}

轮询取结果

bash
curl https://www.byerisk.com/api/v1/intl/id/text/checks/cm5abc… \
  -H "Authorization: Bearer $BYERISK_API_KEY"

# status = completed:
# {
#   "success": true,
#   "data": {
#     "status": "completed",
#     "riskLevel": "high",
#     "summary": { "violation": 6, "sceneHint": 0, "custom": 0 },
#     "risks": [
#       {
#         "kind": "violation",
#         "severity": "high",
#         "matchedText": "ampuh",
#         "startIndex": 15,
#         "endIndex": 20,
#         "category": "Klaim khasiat berlebihan",
#         "legalRef": "Peraturan BPOM No. 3 Tahun 2022"
#       }
#     ]
#   }
# }

响应格式统一包封。 成功是 { "success": true, "data": … },失败是 { "success": false, "error": "…" }。下方接口文档里的「响应」字段表描述的都是 data 里的内容。

站点与密钥

这是接入前最需要知道的一条:一把 API Key 只属于一个站点。印尼站控制台签发的 Key 只能调 /v1/intl/id/ 下的接口,拿它去调中文站的 /v1/ 会返回 401,反之亦然。

为什么要绑定站点。 两边不是同一个产品:路由、平台枚举、规则库、会员档、积分账户全都分开。一把 Key 通吃意味着「这次扣谁的积分、用哪套规则」要靠请求体去猜,而两种猜错都不会报错 —— 拿中文规则集检测印尼语文案,结果几乎恒为通过;或者从另一个站的账户扣钱。绑定站点让这两种情况在第一步就被拦下。

维度是否按站点隔离说明
API Key各站点各签各的,跨站调用返回 401
积分余额、订阅档位中文站的余额不能用在这里,会员也不跨站解锁
检测历史、自定义词库同一个词在两个站各存一条,互不命中
词库条数配额、词库总开关账户级权益,跨站共用一份
账号本身(手机号、登录态)同一个 ByeRisk 账号可以同时在多个站点做生意

风险结论

这是最容易接错的一处:文案检测与图片 / 视频检测的 riskLevel 不是同一套枚举。两者来自不同的判定链路,没有换算关系,请按接口分别处理,不要写一个统一的 riskLevel 枚举。

接口riskLevel 取值含义
文案检测safe / low / medium / high按命中的违规项里最高的 severity 得出
图片检测、视频检测PASS / REVIEW / REJECT内容审核给出的处置建议

每条风险的两个维度

kind

风险归属

violation 是法规 / 平台硬性违规,必须改;scene-hint 是场景限制类提示。只有 violation 计入 riskLevel。

severity

严重度

high / medium / low 三档。顶层 riskLevel 取所有 violation 里最高的一档。

customRisks

自定义词命中

你自己配的词,单独成组、不计入 riskLevel。它是偏好不是合规判定。

为什么自定义词要分开放。 竞品名、内部禁用表述这类词是你的业务偏好,把它和「违反当地法规」混在一个列表里,会让你的下游系统无法区分「必须拦截」和「提醒一下」。所以它们在 customRisks 里单独返回,配了替换词的还会带 replacement,可直接做精确替换。

条款出处不随语言翻译。 风险说明与修改建议会跟随 explainLocale 输出中文或印尼语,但 legalRef 里的法规编号与出处始终保持原文 —— 条款必须可核对。

检测覆盖面

三个维度各有各的判定链路。与中文站不同,这里不提供检测维度的裁剪参数 —— 画面与语音的检测维度绑在账号侧的策略配置上,传一个维度参数上来也不会改变实际跑的策略,那是个假开关。

维度覆盖说明
文案平台规则库 + 语义复核当地法规与平台规则;语义复核负责跨句风险与误报过滤
图片画面风险 + 图上文字识别画面判定与内容语言无关
视频画面 + 语音 + 口播文案口播转写后走与文案检测同一套引擎

图片检测不做商业合规判定。 它判的是画面本身的风险,不核验功效宣称、认证标识这类需要读懂图上文案的商业合规问题。这类风险请把文案单独提交文案检测 —— 我们宁可在文档里说清楚边界,也不让你以为图片检测通过就等于整条素材合规。

视频的轮询终止条件是两个。 status 出终态,并且 transcriptStatus 不再是 processing。口播转写通常晚于画面审核完成,只看 status 会让你永远拿不到 transcriptRisks。

多租户接入

如果你把合规检测集成进自己的系统、再提供给你自己的多个客户使用,加一个 X-End-Tenant 头,把你系统里的租户号带上,我们会为每个租户号单独开一个隔离域。不需要为每个客户单独申请 API Key。

bash
curl -X POST https://www.byerisk.com/api/v1/intl/id/text/checks \
  -H "Authorization: Bearer $BYERISK_API_KEY" \
  -H "X-End-Tenant: toko-4271" \
  -H "Content-Type: application/json" \
  -d '{ "text": "…", "platform": "tiktok_id", "vertical": "general" }'
维度归属说明
自定义违禁词库各租户各一份A 租户配的词不会命中 B 租户的检测
检测历史、素材上传目录各租户各一份列表接口只返回当前 X-End-Tenant 的记录,互相不可见
积分余额、订阅档位你的主账户统一从你的积分池扣,不需要给每个终端租户充值
调用限额按 API Key所有终端租户共享一把 Key 的限额,需要更高并发就多签几把

请传稳定的租户标识。 租户号第一次出现时会自动建好,不需要预先注册,取值限 1–64 位的字母、数字、_ . : -。但如果传的是每次请求都变化的值(比如误传成请求 id),会迅速耗尽单把 Key 的隔离域上限并开始报错。不传这个头时,所有数据都在你自己这一个域里,与不使用该能力完全一致。

计费与限流

API 与网页版共用本站点的同一个积分池,价格一致。接入前可以调 GET /v1/intl/id/account 查余额和本月用量。

动作消耗
文案检测按套餐单价,每次
AI 改写按套餐单价,每次
视频检测1 积分 / 秒
图片检测2 积分 / 张
素材包批量检测按各子项单价分别计费
自定义违禁词管理、账户查询、上传凭证免费

限流按 API Key 计:提交类 60 次/分钟,查询类 600 次/分钟,配置类 120 次/分钟。每档独立计数,每个响应都带 X-RateLimit-Remaining,超限返回 429 并带 Retry-After。

两道订阅门槛。 签发 API Key 与素材包批量检测都需要本站点的旗舰版及以上。会员按站点隔离 —— 中文站的订阅解锁不了这里的接入。已经签发过的密钥不受门槛调整影响,可以继续调用。

错误码

状态码含义怎么处理
400参数不合法按 error 提示修参数
401Key 无效 / 已吊销 / 已过期,或不属于你正在调用的站点先看错误文案是不是站点不匹配,再考虑换 Key
402积分不足充值后重试
403功能需要更高订阅档升级本站点的订阅
404记录不存在、不属于你的账户,或属于别的站点核对 id 与站点段
429触发限流按 Retry-After 退避重试
500服务端错误可重试;持续失败请联系我们

给 AI Agent 使用

这套 API 的设计目标之一就是让 AI agent 能自己读懂并调用 —— 规范是标准 OpenAPI 3.0,入参、出参、枚举值、错误语义都写在 spec 里,不需要额外的适配文档。

把规范地址给你的 agent(Claude、GPT、Coze、Dify 等都支持从 OpenAPI 导入工具),再配一把 API Key,它就能自主完成「检测 → 读风险 → 改文案 → 复检」的闭环:

提示词
读取 https://www.byerisk.com/api/v1/intl/id/openapi.json?lang=zh-CN 这份 OpenAPI 规范,
用我的 API Key 调用 ByeRisk 印尼站,检测下面这段印尼语带货文案是否合规,
把必须修改的风险逐条列出来,并给出改写建议。

规范地址带 lang 参数,跟随你当前的界面语言 —— 交给 agent 的是哪一份,它读到的说明就是哪种语言。规范公开访问,无需鉴权。

https://www.byerisk.com/api/v1/intl/id/openapi.json?lang=zh-CN

文案检测

POST/v1/intl/id/text/checks

提交文案检测

提交一段文案做合规检测,立即返回 id,检测在后台异步进行。

拿到 id 后轮询 GET {id},直到 status 变成 completedfailed(通常 3–15 秒)。

检测的是当地语言的内容本身;风险说明用哪种语言返回由 explainLocale 决定,两者互不影响。

提交即扣积分;入队失败会自动全额退回。

请求体

字段类型说明
text必填字符串待检测的文案,10–5000 字符。检测的是印尼语内容本身,与下面的解释语言无关。(长度 10–5000)
platform必填枚举内容要发布的平台,决定命中哪套平台规则集。可选值:tiktok_idTikTok 印尼shopee_idShopee 印尼tokopediaTokopedia
vertical必填枚举内容行业。声明具体行业 = 通用规则集 + 该行业专属规则集;general = 只跑通用集。可选值:general通用beauty美妆个护health保健品food食品饮料fashion服饰
explainLocale枚举风险说明与修改建议用哪种语言返回。与被检测内容的语种正交 —— 检测的永远是印尼语文案,这个参数只决定我们把结论讲给你听时用什么语言。不传按 zh-CN。可选值:zh-CN中文id-ID印尼语默认 zh-CN

响应201

字段类型说明
id字符串本次检测的 id,用于轮询结果。
object字符串对象类型。
status字符串当前状态。刚提交时为 processing。
可能的错误
402积分不足

示例

bash
curl -X POST https://www.byerisk.com/api/v1/intl/id/text/checks \
  -H "Authorization: Bearer $BYERISK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "text": "Serum ini 100% ampuh memutihkan wajah dalam 3 hari, sudah bersertifikat BPOM, garansi uang kembali!",
    "platform": "tiktok_id",
    "vertical": "beauty",
    "explainLocale": "zh-CN"
  }'
json — 响应
{
  "success": true,
  "data": {
    "id": "cms8xhc5x0006sp59vrks7zkf",
    "object": "intl_text_check",
    "status": "processing"
  }
}
GET/v1/intl/id/text/checks

文案检测历史

按创建时间倒序分页返回,仅含概览字段(文案摘要截断到 100 字)。只返回本站点的记录。

查询参数

字段类型说明
page字符串页码,从 1 开始。默认 1
pageSize字符串每页条数,上限 50。默认 20

响应200

字段类型说明
object字符串对象类型,恒为 list。
page数字当前页码。
pageSize数字每页条数。
total数字符合条件的总条数。
hasMore布尔是否还有下一页。
data数组<对象>本页数据。
id字符串检测 id。
object字符串对象类型。
status字符串状态。
platform字符串发布平台。
vertical对象内容行业。
preview字符串文案摘要(截断到 100 字)。全文请调详情。
riskLevel枚举顶层结论。可选值:safelowmediumhigh
riskCount数字风险条数。
fixStatus对象AI 改写状态。
createdAt对象创建时间。

示例

bash
curl "https://www.byerisk.com/api/v1/intl/id/text/checks" \
  -H "Authorization: Bearer $BYERISK_API_KEY"
json — 响应
{
  "success": true,
  "data": {
    "object": "list",
    "page": 1,
    "pageSize": 20,
    "total": 128,
    "hasMore": true,
    "data": [
      {
        "id": "string",
        "object": "intl_text_check",
        "status": "string",
        "platform": "string",
        "vertical": null,
        "preview": "string",
        "riskLevel": "safe",
        "riskCount": 0,
        "fixStatus": null,
        "createdAt": null
      }
    ]
  }
}
GET/v1/intl/id/text/checks/{id}

取文案检测结果

statusprocessing 时表示还在检测中,稍后重试;completedrisks 才是最终结果。

风险分两层,互不混淆

- risks — 合规风险。kind=violation 是硬性违规,kind=scene-hint 是场景限制类提示。

- customRisks — 你自己配的违禁词命中,不计入 riskLevel,配了替换词会给 replacement

路径参数

字段类型说明
id必填字符串

响应200

字段类型说明
id字符串检测 id。
object字符串对象类型。
status枚举processing 表示还在检测中,稍后重试;completed 时 risks 才是最终结果。可选值:processing检测中completed已完成failed失败
platform枚举发布平台。可选值:tiktok_idTikTok 印尼shopee_idShopee 印尼tokopediaTokopedia
vertical枚举内容行业。可选值:general通用beauty美妆个护health保健品food食品饮料fashion服饰
text字符串被检测的原文。
riskLevel枚举顶层结论,按 violation 类风险里最高的 severity 得出。⚠️ 与图片 / 视频的 PASS / REVIEW / REJECT 不是同一套取值可选值:safelowmediumhigh
summary对象各类计数。
violation数字法规 / 平台硬性违规的条数。
sceneHint数字场景限制类提示的条数。
custom数字自定义词库命中条数。不计入 riskLevel。
semantic数字语义风险标签数(定位不到具体位置的整体提示)。
risks数组<对象>合规风险逐条。
id对象风险 id。
kind枚举风险归属:violation 法规 / 平台硬性违规(必须改);scene-hint 场景限制类提示。可选值:violation硬性违规scene-hint场景限制提示
severity枚举严重度。顶层 riskLevel 取所有 violation 里最高的一档。可选值:highmediumlow
matchedText字符串命中的原文片段。
startIndex数字命中片段在原文中的起始下标。**语义类命中定位不到位置时为 -1**(不是 null)—— 此时请用 matchedText 自己在原文里检索,或只把它当整体提示展示。
endIndex数字命中片段的结束下标;同样可能是 -1
category对象风险类别,已按 explainLocale 本地化。
suggestion对象修改建议,已按 explainLocale 本地化。
legalRef对象法规 / 平台条款出处。不随 explainLocale 翻译 —— 条款编号与出处必须可核对。
source枚举判定来源:rule 确定性规则命中;model 模型判定;custom 自定义词。可选值:rulemodelcustom
customRisks数组<对象>自定义词库命中。独立于 risks,不计入 riskLevel —— 它是你自己的偏好,不是合规判定。
matchedText字符串命中的原文片段。
startIndex数字起始下标(可能为 -1)。
endIndex数字结束下标(可能为 -1)。
replacement对象你给这条词配的替换目标。为空表示只提醒、没有替换建议。
note对象你给这条词写的备注。
semanticLabels数组<字符串>模型判定有风险、但定位不到具体片段的整体提示。
fixStatus对象AI 改写状态:null 未触发 | processing 改写中 | completed 已完成 | failed 失败。
fixedText对象AI 改写后的全文,改写完成后才有值。
createdAt对象创建时间(ISO 8601)。
updatedAt对象最后更新时间(ISO 8601)。
可能的错误
404记录不存在、不属于你的账户,或属于别的站点

示例

bash
curl "https://www.byerisk.com/api/v1/intl/id/text/checks/{id}" \
  -H "Authorization: Bearer $BYERISK_API_KEY"
json — 响应
{
  "success": true,
  "data": {
    "id": "string",
    "object": "intl_text_check",
    "status": "processing",
    "platform": "tiktok_id",
    "vertical": "general",
    "text": "string",
    "riskLevel": "safe",
    "summary": {
      "violation": 3,
      "sceneHint": 1,
      "custom": 0,
      "semantic": 2
    },
    "risks": [
      {
        "id": null,
        "kind": "violation",
        "severity": "high",
        "matchedText": "garansi uang kembali",
        "startIndex": 42,
        "endIndex": 62,
        "category": null,
        "suggestion": null,
        "legalRef": "UU No. 8 Tahun 1999 Pasal 9",
        "source": "rule"
      }
    ],
    "customRisks": [
      {
        "matchedText": "string",
        "startIndex": 0,
        "endIndex": 0,
        "replacement": null,
        "note": null
      }
    ],
    "semanticLabels": [
      "string"
    ],
    "fixStatus": null,
    "fixedText": null,
    "createdAt": null,
    "updatedAt": null
  }
}
DELETE/v1/intl/id/text/checks/{id}

删除文案检测记录

不可恢复。

路径参数

字段类型说明
id必填字符串

响应200

字段类型说明
id字符串被删除记录的 id。
object字符串对象类型。
deleted布尔恒为 true。
可能的错误
404记录不存在或属于别的站点

示例

bash
curl -X DELETE https://www.byerisk.com/api/v1/intl/id/text/checks/{id} \
  -H "Authorization: Bearer $BYERISK_API_KEY"
json — 响应
{
  "success": true,
  "data": {
    "id": "string",
    "object": "intl_text_check",
    "deleted": true
  }
}
POST/v1/intl/id/text/checks/{id}/fix

触发 AI 改写

对已完成的检测触发 AI 改写,立即返回,改写在后台进行。

轮询 GET {id},改写完成后结果在 fixedTextfixStatus 变成 completed)。

会额外扣除改写积分,失败自动退回。

路径参数

字段类型说明
id必填字符串

响应201

字段类型说明
id字符串检测 id。
object字符串对象类型。
fixStatus字符串改写状态,受理后为 processing。
creditCost数字本次改写消耗的积分。
可能的错误
400该记录无需改写(无违规项),或已有一次改写在执行中
402积分不足
404记录不存在或属于别的站点

示例

bash
curl -X POST https://www.byerisk.com/api/v1/intl/id/text/checks/{id}/fix \
  -H "Authorization: Bearer $BYERISK_API_KEY"
json — 响应
{
  "success": true,
  "data": {
    "id": "string",
    "object": "intl_text_check",
    "fixStatus": "processing",
    "creditCost": 2
  }
}

图片检测

POST/v1/intl/id/image/checks

提交图片检测

提交一个公网可访问的图片地址做合规检测。

图片检测是同步完成的:这个接口返回时结果已经就绪,响应体就是完整的检测结果,

不需要再轮询。(GET {id} 保留供事后回查。)

**务必检查 status**:正常是 completed;引擎异常时是 failed(此时积分已自动退回,

labels 为空),这种情况仍然返回 201 而不是 5xx —— 记录本身创建成功了。

计费:2 积分/张。

请求体

字段类型说明
imageUrl必填字符串图片地址,必须公网可访问(我们的检测服务要能直接拉取)。没有自己的对象存储时,先调 POST /v1/intl/{country}/uploads/policy 拿直传凭证。
imageTitle必填字符串图片标题 / 文件名,用于在历史里认出这张图。
imageSize必填数字图片体积(字节)。(最小 1)
imageWidth数字图片宽度(像素)。
imageHeight数字图片高度(像素)。
vertical枚举内容行业声明。不影响本次画面判定(画面策略绑在账号侧配置上,与行业无关),只用于记录与历史回显。如实填写即可,不填留空。可选值:general通用beauty美妆个护health保健品food食品饮料fashion服饰
explainLocale枚举风险标签用哪种语言返回。同文案检测,与图中文字的语种无关。可选值:zh-CN中文id-ID印尼语默认 zh-CN

响应201

字段类型说明
id字符串检测 id。
object字符串对象类型。
status枚举务必检查:引擎异常时为 failed(积分已自动退回,labels 为空),此时仍返回 201。可选值:processing检测中completed已完成failed失败
image对象图片信息。
url字符串图片地址(你提交的那个)。
title字符串图片标题 / 文件名。
sizeBytes对象体积(字节)。
width对象宽度(像素)。
height对象高度(像素)。
vertical枚举提交时声明的行业。仅记录,不影响画面判定可选值:general通用beauty美妆个护health保健品food食品饮料fashion服饰
riskLevel枚举顶层结论。⚠️ 与文案检测的 safe/low/medium/high 不是同一套取值可选值:PASSREVIEWREJECT
labels数组<对象>命中的风险标签。无风险时为空数组。
description字符串风险标签,已按 explainLocale 本地化。
riskLevel枚举这条标签自身的档位。早期记录没有逐条档位,此时为 null(不会编一个出来)。可选值:PASSREVIEWREJECT
createdAt对象创建时间。
updatedAt对象最后更新时间。
可能的错误
400参数不合法
402积分不足

示例

bash
curl -X POST https://www.byerisk.com/api/v1/intl/id/image/checks \
  -H "Authorization: Bearer $BYERISK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "imageUrl": "https://cdn.example.com/products/serum-01.jpg",
    "imageTitle": "serum-01.jpg",
    "imageSize": 254112,
    "imageWidth": 1080,
    "imageHeight": 1080,
    "vertical": "general",
    "explainLocale": "zh-CN"
  }'
json — 响应
{
  "success": true,
  "data": {
    "id": "string",
    "object": "intl_image_check",
    "status": "processing",
    "image": {
      "url": "string",
      "title": "string",
      "sizeBytes": null,
      "width": null,
      "height": null
    },
    "vertical": "general",
    "riskLevel": "PASS",
    "labels": [
      {
        "description": "色情低俗",
        "riskLevel": "PASS"
      }
    ],
    "createdAt": null,
    "updatedAt": null
  }
}
GET/v1/intl/id/image/checks

图片检测历史

按创建时间倒序分页返回,仅含概览字段。

查询参数

字段类型说明
page字符串页码,从 1 开始。默认 1
pageSize字符串每页条数,上限 50。默认 20

响应200

字段类型说明
object字符串对象类型,恒为 list。
page数字当前页码。
pageSize数字每页条数。
total数字符合条件的总条数。
hasMore布尔是否还有下一页。
data数组<对象>本页数据。
id字符串检测 id。
object字符串对象类型。
status字符串状态。
image对象图片地址与标题。
vertical对象行业声明。
riskLevel枚举顶层结论。可选值:PASSREVIEWREJECT
labels数组<字符串>风险标签文字(列表不含逐条档位)。
createdAt对象创建时间。

示例

bash
curl "https://www.byerisk.com/api/v1/intl/id/image/checks" \
  -H "Authorization: Bearer $BYERISK_API_KEY"
json — 响应
{
  "success": true,
  "data": {
    "object": "list",
    "page": 1,
    "pageSize": 20,
    "total": 128,
    "hasMore": true,
    "data": [
      {
        "id": "string",
        "object": "intl_image_check",
        "status": "string",
        "image": null,
        "vertical": null,
        "riskLevel": "PASS",
        "labels": [
          "string"
        ],
        "createdAt": null
      }
    ]
  }
}
GET/v1/intl/id/image/checks/{id}

取图片检测结果

回查已提交的图片检测。

路径参数

字段类型说明
id必填字符串

响应200

字段类型说明
id字符串检测 id。
object字符串对象类型。
status枚举务必检查:引擎异常时为 failed(积分已自动退回,labels 为空),此时仍返回 201。可选值:processing检测中completed已完成failed失败
image对象图片信息。
url字符串图片地址(你提交的那个)。
title字符串图片标题 / 文件名。
sizeBytes对象体积(字节)。
width对象宽度(像素)。
height对象高度(像素)。
vertical枚举提交时声明的行业。仅记录,不影响画面判定可选值:general通用beauty美妆个护health保健品food食品饮料fashion服饰
riskLevel枚举顶层结论。⚠️ 与文案检测的 safe/low/medium/high 不是同一套取值可选值:PASSREVIEWREJECT
labels数组<对象>命中的风险标签。无风险时为空数组。
description字符串风险标签,已按 explainLocale 本地化。
riskLevel枚举这条标签自身的档位。早期记录没有逐条档位,此时为 null(不会编一个出来)。可选值:PASSREVIEWREJECT
createdAt对象创建时间。
updatedAt对象最后更新时间。
可能的错误
404记录不存在或属于别的站点

示例

bash
curl "https://www.byerisk.com/api/v1/intl/id/image/checks/{id}" \
  -H "Authorization: Bearer $BYERISK_API_KEY"
json — 响应
{
  "success": true,
  "data": {
    "id": "string",
    "object": "intl_image_check",
    "status": "processing",
    "image": {
      "url": "string",
      "title": "string",
      "sizeBytes": null,
      "width": null,
      "height": null
    },
    "vertical": "general",
    "riskLevel": "PASS",
    "labels": [
      {
        "description": "色情低俗",
        "riskLevel": "PASS"
      }
    ],
    "createdAt": null,
    "updatedAt": null
  }
}
DELETE/v1/intl/id/image/checks/{id}

删除图片检测记录

软删除,并异步清理已上传的图片文件。

路径参数

字段类型说明
id必填字符串

响应200

字段类型说明
id字符串被删除记录的 id。
object字符串对象类型。
deleted布尔恒为 true。
可能的错误
404记录不存在或属于别的站点

示例

bash
curl -X DELETE https://www.byerisk.com/api/v1/intl/id/image/checks/{id} \
  -H "Authorization: Bearer $BYERISK_API_KEY"
json — 响应
{
  "success": true,
  "data": {
    "id": "string",
    "object": "intl_text_check",
    "deleted": true
  }
}

视频检测

POST/v1/intl/id/video/checks

提交视频检测

提交一个公网可访问的视频地址做合规检测,立即返回 id,检测在后台异步进行。

轮询 GET {id},检测耗时约为视频时长的一半(最少 30 秒),建议每 5–10 秒轮询一次。

检测覆盖三个维度:画面(frames)、语音(audios)、口播文案(transcriptRisks

转写后走与文案检测同一套引擎)。

计费:按视频时长 1 积分/秒,提交即扣。请如实申报 videoDuration

请求体

字段类型说明
videoUrl必填字符串视频地址,必须公网可访问。没有自己的对象存储时先调直传凭证接口。
videoTitle必填字符串视频标题 / 文件名。
videoSize必填数字视频体积,单位 MB(不是字节)。上限 1024(1GB)。(取值 0.01–1024)
videoDuration必填数字视频时长(秒)。计费按它算(1 积分/秒),请如实申报。(最小 1)
videoWidth数字视频宽度(像素)。
videoHeight数字视频高度(像素)。
platform枚举发布平台。只决定口播文案用哪套平台规则集;不传按本站默认平台。可选值:tiktok_idTikTok 印尼shopee_idShopee 印尼tokopediaTokopedia
vertical枚举内容行业。只决定口播文案用哪些行业规则集:声明具体行业 = 通用集 + 该行业集;不声明或 general = 放宽到全部行业集(宁可多报)。画面与语音判定与它无关。可选值:general通用beauty美妆个护health保健品food食品饮料fashion服饰

响应201

字段类型说明
id字符串本次检测的 id,用于轮询结果。
object字符串对象类型。
status字符串当前状态。刚提交时为 processing。
可能的错误
402积分不足

示例

bash
curl -X POST https://www.byerisk.com/api/v1/intl/id/video/checks \
  -H "Authorization: Bearer $BYERISK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "videoUrl": "https://cdn.example.com/videos/promo-01.mp4",
    "videoTitle": "promo-01.mp4",
    "videoSize": 12.4,
    "videoDuration": 45,
    "videoWidth": 1080,
    "videoHeight": 1920,
    "platform": "tiktok_id",
    "vertical": "general"
  }'
json — 响应
{
  "success": true,
  "data": {
    "id": "cms8xhc5x0006sp59vrks7zkf",
    "object": "intl_text_check",
    "status": "processing"
  }
}
GET/v1/intl/id/video/checks

视频检测历史

按创建时间倒序分页返回,仅含概览字段。

查询参数

字段类型说明
page字符串页码,从 1 开始。默认 1
pageSize字符串每页条数,上限 50。默认 20
status枚举按状态过滤。可选值:processing检测中completed已完成failed失败

响应200

字段类型说明
object字符串对象类型,恒为 list。
page数字当前页码。
pageSize数字每页条数。
total数字符合条件的总条数。
hasMore布尔是否还有下一页。
data数组<对象>本页数据。
id字符串检测 id。
object字符串对象类型。
status字符串视频审核状态。
video对象视频地址、标题与时长。
vertical对象行业声明。
riskLevel枚举顶层结论。可选值:PASSREVIEWREJECT
labels数组<字符串>风险标签。
transcriptStatus对象口播转写状态。
createdAt对象创建时间。

示例

bash
curl "https://www.byerisk.com/api/v1/intl/id/video/checks" \
  -H "Authorization: Bearer $BYERISK_API_KEY"
json — 响应
{
  "success": true,
  "data": {
    "object": "list",
    "page": 1,
    "pageSize": 20,
    "total": 128,
    "hasMore": true,
    "data": [
      {
        "id": "string",
        "object": "intl_video_check",
        "status": "string",
        "video": null,
        "vertical": null,
        "riskLevel": "PASS",
        "labels": [
          "string"
        ],
        "transcriptStatus": null,
        "createdAt": null
      }
    ]
  }
}
GET/v1/intl/id/video/checks/{id}

取视频检测结果

每次调用会顺带向检测引擎推进一次轮询,所以直接轮询这个接口即可,不需要额外的状态接口。

⚠️ 轮询的终止条件是两个status 出终态(completed / failed),

并且 transcriptStatus 不再是 processing。口播转写通常晚于画面审核完成,

只看 status 会在口播还在转的时候就收工,永远拿不到 transcriptRisks

explainLocale 决定口播风险用哪种语言解释。它放在读侧而不是提交侧 ——

结果是异步出的,提交那一刻的语言选择到不了落库的时候。

路径参数

字段类型说明
id必填字符串

查询参数

字段类型说明
explainLocale枚举风险说明用哪种语言返回。不传按 zh-CN。可选值:zh-CN中文id-ID印尼语默认 zh-CN

响应200

字段类型说明
id字符串检测 id。
object字符串对象类型。
status枚举视频审核状态。⚠️ 它不是轮询的唯一终止条件 —— 还要看 transcriptStatus,口播转写通常晚于画面审核完成。可选值:processing检测中completed已完成failed失败
video对象视频信息。
url字符串视频地址。
title字符串视频标题 / 文件名。
sizeMb对象体积(MB)。
durationSeconds对象时长(秒)。
width对象宽度(像素)。
height对象高度(像素)。
platform枚举口播文案检测用的平台。可选值:tiktok_idTikTok 印尼shopee_idShopee 印尼tokopediaTokopedia
vertical枚举口播文案检测用的行业。可选值:general通用beauty美妆个护health保健品food食品饮料fashion服饰
riskLevel枚举顶层结论(画面 + 语音)。可选值:PASSREVIEWREJECT
labels数组<字符串>整体风险标签。
frames数组<对象>画面命中,带秒级时间点。
timeSeconds数字命中画面在视频中的时间点(秒)。
riskLevel枚举该画面的档位。可选值:PASSREVIEWREJECT
description字符串命中说明。
imageUrl对象命中画面的截图地址。短时签名 URL,会过期 —— 需要长期留存请自行转存。
ocrText对象画面中识别出的文字。
audios数组<对象>语音命中,带起止秒。
startSeconds数字命中片段起点(秒)。
endSeconds数字命中片段终点(秒)。
riskLevel枚举该片段的档位。可选值:PASSREVIEWREJECT
description字符串命中说明。
text对象命中片段的语音文字。
transcript对象口播全文转写。
transcriptStatus对象口播转写状态:null 未启用 | processing 转写中 | completed | failed | empty 无音轨。它是 processing 时说明口播风险还没出齐,请继续轮询。
transcriptRisks数组<对象>口播话术违规。走与文案检测同一套引擎,与画面 / 语音同等计入结论。
matchedText字符串命中的口播原文片段。
severity枚举严重度。可选值:highmediumlow
category对象风险类别,已本地化。
suggestion对象修改建议,已本地化。
legalRef对象条款出处,不随语言翻译。
replacement对象可直接替换 matchedText 的合规说法;为空表示只能删。
startSeconds数字命中所在句的起点(秒),可直接拿去 seek。
endSeconds数字命中所在句的终点(秒)。
sentence对象命中所在的完整句子,给你上下文。
source枚举判定来源。可选值:rulemodelcustom
createdAt对象创建时间。
updatedAt对象最后更新时间。
可能的错误
404记录不存在或属于别的站点

示例

bash
curl "https://www.byerisk.com/api/v1/intl/id/video/checks/{id}" \
  -H "Authorization: Bearer $BYERISK_API_KEY"
json — 响应
{
  "success": true,
  "data": {
    "id": "string",
    "object": "intl_video_check",
    "status": "processing",
    "video": {
      "url": "string",
      "title": "string",
      "sizeMb": null,
      "durationSeconds": null,
      "width": null,
      "height": null
    },
    "platform": "tiktok_id",
    "vertical": "general",
    "riskLevel": "PASS",
    "labels": [
      "string"
    ],
    "frames": [
      {
        "timeSeconds": 12,
        "riskLevel": "PASS",
        "description": "string",
        "imageUrl": null,
        "ocrText": null
      }
    ],
    "audios": [
      {
        "startSeconds": 0,
        "endSeconds": 0,
        "riskLevel": "PASS",
        "description": "string",
        "text": null
      }
    ],
    "transcript": null,
    "transcriptStatus": null,
    "transcriptRisks": [
      {
        "matchedText": "string",
        "severity": "high",
        "category": null,
        "suggestion": null,
        "legalRef": null,
        "replacement": null,
        "startSeconds": 0,
        "endSeconds": 0,
        "sentence": null,
        "source": "rule"
      }
    ],
    "createdAt": null,
    "updatedAt": null
  }
}
DELETE/v1/intl/id/video/checks/{id}

删除视频检测记录

软删除,并异步清理已上传的视频文件。

路径参数

字段类型说明
id必填字符串

响应200

字段类型说明
id字符串被删除记录的 id。
object字符串对象类型。
deleted布尔恒为 true。
可能的错误
404记录不存在或属于别的站点

示例

bash
curl -X DELETE https://www.byerisk.com/api/v1/intl/id/video/checks/{id} \
  -H "Authorization: Bearer $BYERISK_API_KEY"
json — 响应
{
  "success": true,
  "data": {
    "id": "string",
    "object": "intl_text_check",
    "deleted": true
  }
}

素材包批量检测

POST/v1/intl/id/batches

提交素材包批量检测

一次提交多条文案 + 多张图片 + 多个视频,统一跑检测并聚合结论。

文案 ≤10 条、图片 ≤20 张、视频 ≤10 个,单包总计 ≤40 项。

立即返回 id,各子项在后台并行检测。轮询 GET {id} 看进度:

progress.done / progress.total 是完成度,全部完成后 result 给出整包结论(PASS / REJECT)。

每个子项都带 checkId,可以拿去调对应的单项接口取完整明细。

计费:按各子项单价分别计费(文案按条、图片按张、视频按秒)。余额不足会在提交时整单拒绝。

请求体

字段类型说明
name必填字符串素材包名称,1–60 字符。
platform必填枚举发布平台,整包统一。可选值:tiktok_idTikTok 印尼shopee_idShopee 印尼tokopediaTokopedia
vertical必填枚举内容行业,整包统一。可选值:general通用beauty美妆个护health保健品food食品饮料fashion服饰
texts数组<字符串>文案子项,最多 10 条。不足 10 字符的会被丢弃而不是整包报错 —— 一次提交十条,因为其中一条太短就全被拒、而错误信息又说不清是哪条,不是好契约。
images数组<对象>图片子项,最多 20 张。
url必填字符串图片地址,公网可访问。
name必填字符串图片标题 / 文件名。
size必填数字图片体积(字节)。
width数字宽度(像素)。
height数字高度(像素)。
videos数组<对象>视频子项,最多 10 个。
url必填字符串视频地址,公网可访问。
name必填字符串视频标题 / 文件名。
size必填数字视频体积,单位 MB(与单条视频检测同口径,不是字节)。
duration必填数字视频时长(秒),计费按它算。
width数字宽度(像素)。
height数字高度(像素)。
explainLocale枚举风险说明用哪种语言返回。可选值:zh-CN中文id-ID印尼语默认 zh-CN

响应201

字段类型说明
id字符串本次检测的 id,用于轮询结果。
object字符串对象类型。
status字符串当前状态。刚提交时为 processing。
可能的错误
400素材包为空,或超出单次项数上限
402积分不足以覆盖整包成本
403素材包批量需要旗舰版及以上订阅

示例

bash
curl -X POST https://www.byerisk.com/api/v1/intl/id/batches \
  -H "Authorization: Bearer $BYERISK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Kampanye Ramadan · batch 1",
    "platform": "tiktok_id",
    "vertical": "beauty",
    "texts": [
      "string"
    ],
    "images": [
      {
        "url": "string",
        "name": "string",
        "size": 254112,
        "width": 0,
        "height": 0
      }
    ],
    "videos": [
      {
        "url": "string",
        "name": "string",
        "size": 12.4,
        "duration": 45,
        "width": 0,
        "height": 0
      }
    ],
    "explainLocale": "zh-CN"
  }'
json — 响应
{
  "success": true,
  "data": {
    "id": "cms8xhc5x0006sp59vrks7zkf",
    "object": "intl_text_check",
    "status": "processing"
  }
}
GET/v1/intl/id/batches

素材包列表

按创建时间倒序分页返回,含各包的进度与结论。会顺带推进少量进行中包的状态。

查询参数

字段类型说明
page字符串页码,从 1 开始。默认 1
pageSize字符串每页条数,上限 50。默认 20
explainLocale枚举风险说明用哪种语言返回(列表会顺带推进子项状态,可能在此刻落库)。可选值:zh-CN中文id-ID印尼语默认 zh-CN

响应200

字段类型说明
object字符串对象类型,恒为 list。
page数字当前页码。
pageSize数字每页条数。
total数字符合条件的总条数。
hasMore布尔是否还有下一页。
data数组<对象>本页数据。
id字符串素材包 id。
object字符串对象类型。
name字符串素材包名称。
status字符串整包状态。
counts对象各类型子项数量。
texts数字文案子项数。
images数字图片子项数。
videos数字视频子项数。
progress对象进度。
total数字子项总数。
done数字已完成的子项数。
percent数字完成百分比(0–100)。
result对象整包结论。
summary对象整包计数。
violation数字违规条数。
sceneHint数字场景提示条数。
createdAt对象创建时间。
finishedAt对象完成时间。

示例

bash
curl "https://www.byerisk.com/api/v1/intl/id/batches" \
  -H "Authorization: Bearer $BYERISK_API_KEY"
json — 响应
{
  "success": true,
  "data": {
    "object": "list",
    "page": 1,
    "pageSize": 20,
    "total": 128,
    "hasMore": true,
    "data": [
      {
        "id": "string",
        "object": "intl_batch",
        "name": "string",
        "status": "string",
        "counts": {
          "texts": 0,
          "images": 0,
          "videos": 0
        },
        "progress": {
          "total": 12,
          "done": 9,
          "percent": 75
        },
        "result": null,
        "summary": {
          "violation": 0,
          "sceneHint": 0
        },
        "createdAt": null,
        "finishedAt": null
      }
    ]
  }
}
GET/v1/intl/id/batches/{id}

取素材包进度与结果

每次调用会顺带推进一次子项状态刷新,直接轮询这个接口即可。items[].checkId 可用于取单项完整明细。

路径参数

字段类型说明
id必填字符串

查询参数

字段类型说明
explainLocale枚举风险说明用哪种语言返回。不传按 zh-CN。可选值:zh-CN中文id-ID印尼语默认 zh-CN

响应200

字段类型说明
id字符串素材包 id。
object字符串对象类型。
name字符串素材包名称。
platform枚举发布平台。可选值:tiktok_idTikTok 印尼shopee_idShopee 印尼tokopediaTokopedia
vertical枚举内容行业。可选值:general通用beauty美妆个护health保健品food食品饮料fashion服饰
status枚举整包状态。可选值:processing检测中completed已完成failed失败
progress对象进度。
total数字子项总数。
done数字已完成的子项数。
percent数字完成百分比(0–100)。
result枚举整包结论,全部子项完成后才有值。可选值:PASSREJECT
summary对象整包计数。
violation数字违规条数。
sceneHint数字场景提示条数。
items数组<对象>子项明细。
id字符串子项 id(不是检测 id)。
kind枚举子项类型。注意是 text 而不是内部的 script,与单项接口的路径一致。可选值:textimagevideo
checkId字符串对应的单项检测 id。拿它去调 /text|image|video/checks/{id} 取完整明细。
index数字子项在提交时的顺序下标。
status枚举子项状态。可选值:processing检测中completed已完成failed失败
riskLevel对象子项结论。文案是 safe/low/medium/high,图片视频是 PASS/REVIEW/REJECT。
summary对象子项计数。
violation数字违规条数。
sceneHint数字场景提示条数。
text字符串文案子项:原文。
riskCount数字文案子项:风险条数。
image对象图片子项:地址与标题。
video对象视频子项:地址、标题与时长。
labels数组<字符串>图片 / 视频子项:风险标签。
transcriptStatus对象视频子项:口播转写状态。
createdAt对象创建时间。
finishedAt对象完成时间。
可能的错误
404素材包不存在或属于别的站点

示例

bash
curl "https://www.byerisk.com/api/v1/intl/id/batches/{id}" \
  -H "Authorization: Bearer $BYERISK_API_KEY"
json — 响应
{
  "success": true,
  "data": {
    "id": "string",
    "object": "intl_batch",
    "name": "string",
    "platform": "tiktok_id",
    "vertical": "general",
    "status": "processing",
    "progress": {
      "total": 12,
      "done": 9,
      "percent": 75
    },
    "result": "PASS",
    "summary": {
      "violation": 0,
      "sceneHint": 0
    },
    "items": [
      {
        "id": "string",
        "kind": "text",
        "checkId": "string",
        "index": 0,
        "status": "processing",
        "riskLevel": null,
        "summary": {
          "violation": 0,
          "sceneHint": 0
        },
        "text": "string",
        "riskCount": 0,
        "image": null,
        "video": null,
        "labels": [
          "string"
        ],
        "transcriptStatus": null
      }
    ],
    "createdAt": null,
    "finishedAt": null
  }
}
DELETE/v1/intl/id/batches/{id}

删除素材包

软删除素材包及其全部子项检测记录,并异步清理已上传的图片 / 视频文件。

路径参数

字段类型说明
id必填字符串

响应200

字段类型说明
id字符串被删除记录的 id。
object字符串对象类型。
deleted布尔恒为 true。
可能的错误
404素材包不存在或属于别的站点

示例

bash
curl -X DELETE https://www.byerisk.com/api/v1/intl/id/batches/{id} \
  -H "Authorization: Bearer $BYERISK_API_KEY"
json — 响应
{
  "success": true,
  "data": {
    "id": "string",
    "object": "intl_text_check",
    "deleted": true
  }
}

自定义违禁词

POST/v1/intl/id/custom-rules

新增一条自定义违禁词

请求体

字段类型说明
keyword必填字符串要检测的词。印尼站请填印尼语词 —— 检测的是印尼语文案,中文词永远不会命中。(长度 0–100)
matchType枚举匹配方式:keyword=子串匹配(默认,任何位置出现都算)、phrase=词边界匹配。印尼语等以空格分词的语言建议用 phrase,子串匹配会让短词误伤更长的词。可选值:keyword子串匹配phrase词边界匹配默认 keyword
replacement字符串替换词。配了之后命中项会带 replacement,可用于一键精确替换;留空则仅提醒。(长度 0–100)
note字符串备注,仅自己可见。(长度 0–200)
enabled布尔是否启用。停用后保留数据但不参与检测。默认 true

响应201

字段类型说明
id字符串规则 id。
object字符串对象类型。
keyword字符串检测词。
matchType枚举匹配方式。可选值:keyword子串匹配phrase词边界匹配
replacement对象替换词;为空则仅提醒。
note对象备注,仅自己可见。
enabled布尔是否启用。
createdAt对象创建时间。
updatedAt对象最后更新时间。
可能的错误
400该词在本站点已存在,或已达套餐词库上限
403自定义违禁词是付费功能,当前订阅不可用

示例

bash
curl -X POST https://www.byerisk.com/api/v1/intl/id/custom-rules \
  -H "Authorization: Bearer $BYERISK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "keyword": "garansi uang kembali",
    "matchType": "keyword",
    "replacement": "kebijakan pengembalian berlaku",
    "note": "string",
    "enabled": false
  }'
json — 响应
{
  "success": true,
  "data": {
    "id": "string",
    "object": "intl_custom_rule",
    "keyword": "garansi uang kembali",
    "matchType": "keyword",
    "replacement": null,
    "note": null,
    "enabled": false,
    "createdAt": null,
    "updatedAt": null
  }
}
GET/v1/intl/id/custom-rules

列出本站点的全部自定义违禁词

按创建时间倒序,不分页。只返回本站点的词 —— 同一个词在不同站点各存一条,互不命中。

响应200

字段类型说明
object字符串对象类型,恒为 list。
data数组<对象>本站点的全部规则(词库规模不大,不分页)。
id字符串规则 id。
object字符串对象类型。
keyword字符串检测词。
matchType枚举匹配方式。可选值:keyword子串匹配phrase词边界匹配
replacement对象替换词;为空则仅提醒。
note对象备注,仅自己可见。
enabled布尔是否启用。
createdAt对象创建时间。
updatedAt对象最后更新时间。
total数字规则总数。

示例

bash
curl "https://www.byerisk.com/api/v1/intl/id/custom-rules" \
  -H "Authorization: Bearer $BYERISK_API_KEY"
json — 响应
{
  "success": true,
  "data": {
    "object": "list",
    "data": [
      {
        "id": "string",
        "object": "intl_custom_rule",
        "keyword": "garansi uang kembali",
        "matchType": "keyword",
        "replacement": null,
        "note": null,
        "enabled": false,
        "createdAt": null,
        "updatedAt": null
      }
    ],
    "total": 0
  }
}
PATCH/v1/intl/id/custom-rules/{id}

修改自定义违禁词

只更新传了的字段。

路径参数

字段类型说明
id必填字符串

请求体

字段类型说明
keyword字符串要检测的词。(长度 0–100)
replacement字符串替换词。(长度 0–100)
note字符串备注。(长度 0–200)
enabled布尔是否启用。

响应200

字段类型说明
id字符串规则 id。
object字符串对象类型。
keyword字符串检测词。
matchType枚举匹配方式。可选值:keyword子串匹配phrase词边界匹配
replacement对象替换词;为空则仅提醒。
note对象备注,仅自己可见。
enabled布尔是否启用。
createdAt对象创建时间。
updatedAt对象最后更新时间。
可能的错误
404规则不存在或属于别的站点

示例

bash
curl -X PATCH https://www.byerisk.com/api/v1/intl/id/custom-rules/{id} \
  -H "Authorization: Bearer $BYERISK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "keyword": "string",
    "replacement": "string",
    "note": "string",
    "enabled": false
  }'
json — 响应
{
  "success": true,
  "data": {
    "id": "string",
    "object": "intl_custom_rule",
    "keyword": "garansi uang kembali",
    "matchType": "keyword",
    "replacement": null,
    "note": null,
    "enabled": false,
    "createdAt": null,
    "updatedAt": null
  }
}
DELETE/v1/intl/id/custom-rules/{id}

删除自定义违禁词

物理删除,不可恢复。

路径参数

字段类型说明
id必填字符串

响应200

字段类型说明
id字符串被删除记录的 id。
object字符串对象类型。
deleted布尔恒为 true。
可能的错误
404规则不存在或属于别的站点

示例

bash
curl -X DELETE https://www.byerisk.com/api/v1/intl/id/custom-rules/{id} \
  -H "Authorization: Bearer $BYERISK_API_KEY"
json — 响应
{
  "success": true,
  "data": {
    "id": "string",
    "object": "intl_text_check",
    "deleted": true
  }
}
POST/v1/intl/id/custom-rules/bulk-import

批量导入违禁词

单次最多 2000 条。幂等友好:批内重复与库中已存在的词会被跳过而不是报错,

响应里分别给出 imported / skippedDuplicate / rejectedQuota 三个计数。

超出配额的部分会被拒收,已接受的部分照常写入。

请求体

字段类型说明
items必填数组<对象>要导入的词条,单次上限 2000 条。批内重复、库里已存在的会被自动跳过(在响应里分别计数),不会报错。
keyword必填字符串要检测的词。(长度 0–100)
replacement字符串替换词。(长度 0–100)
note字符串备注。(长度 0–200)

响应201

字段类型说明
object字符串对象类型。
total数字本次提交的词条总数。
imported数字实际写入的条数。
skippedDuplicate数字因批内重复或库中已存在而跳过的条数。
rejectedQuota数字因超出套餐配额而被拒收的条数。
可能的错误
403自定义违禁词是付费功能,当前订阅不可用

示例

bash
curl -X POST https://www.byerisk.com/api/v1/intl/id/custom-rules/bulk-import \
  -H "Authorization: Bearer $BYERISK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "items": [
      {
        "keyword": "string",
        "replacement": "string",
        "note": "string"
      }
    ]
  }'
json — 响应
{
  "success": true,
  "data": {
    "object": "intl_custom_rule_import_result",
    "total": 0,
    "imported": 0,
    "skippedDuplicate": 0,
    "rejectedQuota": 0
  }
}
GET/v1/intl/id/custom-rules/quota

查词库配额

返回已用条数与套餐上限。⚠️ **used 是账户级的**(含你在其他站点登记的词),isPaid 则是本站点的订阅状态 —— 会员按站点隔离,词库额度不隔离。

响应200

字段类型说明
object字符串对象类型。
used数字已用条数。配额是账户级的,跨站点共用一份 —— 含你在其他站点登记的词。
limit数字当前套餐的词库上限。免费版为 0。
isPaid布尔本站点当前是否为付费订阅。

示例

bash
curl "https://www.byerisk.com/api/v1/intl/id/custom-rules/quota" \
  -H "Authorization: Bearer $BYERISK_API_KEY"
json — 响应
{
  "success": true,
  "data": {
    "object": "intl_custom_rule_quota",
    "used": 12,
    "limit": 500,
    "isPaid": true
  }
}
GET/v1/intl/id/custom-rules/settings

查总开关状态

关闭时所有自定义词都不参与检测(数据保留)。开关是账户级的,不分站点。

响应200

字段类型说明
object字符串对象类型。
enabled布尔账户级总开关。关闭时所有自定义词都不参与检测(数据保留)。

示例

bash
curl "https://www.byerisk.com/api/v1/intl/id/custom-rules/settings" \
  -H "Authorization: Bearer $BYERISK_API_KEY"
json — 响应
{
  "success": true,
  "data": {
    "object": "intl_custom_rule_settings",
    "enabled": false
  }
}
PATCH/v1/intl/id/custom-rules/settings

切换总开关

与每条规则自身的 enabled 正交:总开关关掉时,逐条的 enabled 不生效。

请求体

字段类型说明
enabled必填布尔租户级总开关。关闭后所有自定义词都不参与检测(数据保留),与每条规则的 enabled 正交。开关本身不分国家站:它回答的是「这个账户要不要用自定义词库」。

响应200

字段类型说明
object字符串对象类型。
enabled布尔账户级总开关。关闭时所有自定义词都不参与检测(数据保留)。
可能的错误
403自定义违禁词是付费功能,当前订阅不可用

示例

bash
curl -X PATCH https://www.byerisk.com/api/v1/intl/id/custom-rules/settings \
  -H "Authorization: Bearer $BYERISK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "enabled": false
  }'
json — 响应
{
  "success": true,
  "data": {
    "object": "intl_custom_rule_settings",
    "enabled": false
  }
}

账户

GET/v1/intl/id/account

查账户余额与用量

返回本站点的积分余额、订阅方案和本月各类检测的调用次数。

⚠️ 积分与订阅按站点隔离:这里的余额不含你在其他站点的积分,反之亦然。

接入前建议先调一次确认额度 —— 否则只能靠 402 撞墙才知道余额不够。

用量统计含所有入口(网页、接口),不只是接口调用。

响应200

字段类型说明
object字符串对象类型。
country字符串本次调用所属的站点。
credits对象本站点的积分余额。积分按站点隔离,中文站的余额不在这里。
total数字本站点可用积分总额。
subscription数字订阅赠送部分。
activity数字活动赠送部分。
booster数字加油包部分。
expiringSoon对象7 天内即将过期的部分;没有则为 null。
subscription对象本站点的订阅档位。
usageThisMonth对象本月(自然月)本站点各类检测次数,含网页与接口全部入口。

示例

bash
curl "https://www.byerisk.com/api/v1/intl/id/account" \
  -H "Authorization: Bearer $BYERISK_API_KEY"
json — 响应
{
  "success": true,
  "data": {
    "object": "intl_account",
    "country": "id",
    "credits": {
      "total": 8420,
      "subscription": 0,
      "activity": 0,
      "booster": 0,
      "expiringSoon": null
    },
    "subscription": null,
    "usageThisMonth": null
  }
}

素材上传

POST/v1/intl/id/uploads/policy

获取素材直传凭证

只有在你没有公网可访问的素材存储时才需要这个接口。

如果素材已经在你自己的对象存储或 CDN 上,直接把 URL 填进检测接口即可,跳过这一步。

返回一份 POST Policy 直传凭证,用标准表单直传:

bash
curl -X POST "$host" \
  -F "key=$dir<你的文件名>" \
  -F "policy=$policy" \
  -F "OSSAccessKeyId=$accessKeyId" \
  -F "signature=$signature" \
  -F "file=@./promo-01.mp4"

上传成功后素材地址为 {cdnHost}/{key},把它填进检测接口的 videoUrl / imageUrl

凭证 5 分钟过期,且只允许写入你账户在本站点的专属目录前缀。

请求体

字段类型说明
kind必填枚举素材类型,决定体积上限:video 上限 1GB,image 上限 10MB。可选值:videoimage

响应201

字段类型说明
object字符串对象类型。
kind枚举素材类型。可选值:videoimage
host字符串直传的目标地址(表单 POST 到这里)。
cdnHost字符串上传成功后素材的访问域名,素材地址 = {cdnHost}/{key}
dir字符串允许写入的目录前缀。key 必须以它开头,否则会被拒收。
policy字符串上传策略(base64)。
accessKeyId字符串直传用的 AccessKeyId。
signature字符串策略签名。
maxSizeBytes数字该类型的体积上限(字节)。
expiresAt字符串凭证过期时间(ISO 8601),5 分钟后失效。

示例

bash
curl -X POST https://www.byerisk.com/api/v1/intl/id/uploads/policy \
  -H "Authorization: Bearer $BYERISK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "kind": "video"
  }'
json — 响应
{
  "success": true,
  "data": {
    "object": "intl_upload_policy",
    "kind": "video",
    "host": "string",
    "cdnHost": "string",
    "dir": "string",
    "policy": "string",
    "accessKeyId": "string",
    "signature": "string",
    "maxSizeBytes": 0,
    "expiresAt": "string"
  }
}