文字商标检测的生命周期管理。

历史列表

GET /ip/trademark/text/histories

查询参数

参数类型必填说明
pageinteger✅页码,从 1 开始
pageSizeinteger✅每页条数
cURLPython
curl -X GET "https://api.trohub.com/v2/ip/trademark/text/histories?page=1&pageSize=20" -H "Authorization: Bearer YOUR_API_KEY"
import requests

url = "https://api.trohub.com/v2/ip/trademark/text/histories?page=1&pageSize=20"
headers = {"Authorization": "Bearer YOUR_API_KEY"}

r = requests.get(url, headers=headers)
print(r.json())

响应示例

{
  "ok": true,
  "message": "成功",
  "data": {
    "items": [
      {
        "taskID": "3f2b1c4d5e6f47a8b9c0d1e2f3a4b5c6",
        "title": "2026 秋季批次 A",
        "status": "completed",
        "source": "string",
        "imageCount": 1,
        "thumbs": [
          "string"
        ],
        "counts": {
          "high": 0,
          "mid": 0,
          "low": 0
        },
        "failReason": "string",
        "createdAt": "2026-10-19T12:00:00+08:00",
        "updatedAt": "2026-10-19T12:00:00+08:00"
      }
    ],
    "total": 1,
    "page": 1,
    "pageSize": 20
  }
}

响应字段

参数类型必填说明
itemsarray<TextCheckHistoryItem>❌—
items[].taskIDstring❌—
items[].titlestring❌本次检测的名称;可通过 PUT /ip/trademark/text/{taskID}/name 修改
items[].statusstring❌queued / processing / completed / failed
items[].sourcestring❌web(控制台提交)/ api(接口提交)
items[].imageCountinteger❌本次检测提交的图片张数(0 = 纯文字检测)
items[].thumbsarray<string>❌提交图缩略图地址(可直接访问,有有效期);无图片时为空数组
items[].countsTextCheckCounts❌各风险档的词数(按词统计,不按商标记录)
items[].counts.highinteger❌高风险档的词数;同一个词命中多条记录时按一个词计
items[].counts.midinteger❌中风险档的词数;同一个词命中多条记录时按一个词计
items[].counts.lowinteger❌低风险档的词数;同一个词命中多条记录时按一个词计
items[].failReasonstring❌失败原因(有值时返回)
items[].createdAtstring❌创建时间(RFC 3339)
items[].updatedAtstring❌更新时间(RFC 3339)
totalinteger❌历史记录总条数(不是本页条数)
pageinteger❌—
pageSizeinteger❌—

可能的错误

HTTP错误码说明
401UNAUTHORIZED_AUTH_REQUIRED缺少 API Key、Key 无效或被封禁(HTTP 401),错误码 UNAUTHORIZED_AUTH_REQUIRED。
429BUSINESS_RATE_LIMIT_EXCEEDED / RATE_LIMITER_UNAVAILABLE请求频率或并发数超限(HTTP 429),错误码 BUSINESS_RATE_LIMIT_EXCEEDED。 限流校验不可用时返回 503(RATE_LIMITER_UNAVAILABLE)。 限流是动态的:额度由「你的 API 档位 × 接口所属的桶」决定, 所以同一个接口对不同调用者可能是不同的数值,这里不给出固定数字。 两处可以看到实际生效值: 1. 每次响应的 X-RateLimit-* 响应头(当次生效的次数、窗口、命中哪一档额度); 2. GET /v2/quota/mine(带 API Key,返回你每个额度的生效值); 另有 GET /v2/quota/config(公开)给出未分档的基线额度。 计数口径:按账号计 —— 同一账号下的所有 API Key 共享同一份额度, 多开一个 Key 不会获得额外配额。接口桶是分开计数的(例如「提交检测」与 「轮询结果」是两个桶),所以轮询不会吃掉提交的额度。
500INTERNAL_ERROR_UNKNOWN服务器内部错误(HTTP 500),错误码 INTERNAL_ERROR_UNKNOWN

改名

PUT /ip/trademark/text/{taskID}/name

请求参数

参数类型必填说明
taskIDstring✅检测 ID。提交时若传了 clientRequestId,这里也可以填该值,两者指向同一条检测。
titlestring❌—

请求示例

{
  "title": "2026 秋季批次 A"
}
cURLPython
curl -X PUT "https://api.trohub.com/v2/ip/trademark/text/TASK_ID/name" -H "Authorization: Bearer YOUR_API_KEY" -H "Content-Type: application/json" -d '{"title":"2026 秋季批次 A"}'
import requests

url = "https://api.trohub.com/v2/ip/trademark/text/TASK_ID/name"
headers = {"Authorization": "Bearer YOUR_API_KEY"}
payload = {
  "title": "2026 秋季批次 A"
}

r = requests.put(url, headers={**headers, "Content-Type": "application/json"}, json=payload)
print(r.json())

响应示例

{
  "ok": true,
  "message": "成功",
  "data": {
    "title": "2026 秋季批次 A"
  }
}

响应字段

参数类型必填说明
titlestring❌—

删除一条

DELETE /ip/trademark/text/{taskID}

查询参数

参数类型必填说明
taskIDstring✅检测 ID。提交时若传了 clientRequestId,这里也可以填该值,两者指向同一条检测。
cURLPython
curl -X DELETE "https://api.trohub.com/v2/ip/trademark/text/TASK_ID" -H "Authorization: Bearer YOUR_API_KEY"
import requests

url = "https://api.trohub.com/v2/ip/trademark/text/TASK_ID"
headers = {"Authorization": "Bearer YOUR_API_KEY"}

r = requests.delete(url, headers=headers)
print(r.json())

响应示例

{
  "ok": true,
  "message": "成功",
  "data": {
    "ok": true,
    "message": "string",
    "data": "string"
  }
}

响应字段

参数类型必填说明
okboolean❌—
messagestring❌固定 "成功";删除类接口为 "Deleted successfully"。
dataobject❌—

批量删除

POST /ip/trademark/text/batch-delete

请求参数

参数类型必填说明
taskIDsarray<string>✅—

请求示例

{
  "taskIDs": [
    "string"
  ]
}
cURLPython
curl -X POST "https://api.trohub.com/v2/ip/trademark/text/batch-delete" -H "Authorization: Bearer YOUR_API_KEY" -H "Content-Type: application/json" -d '{"taskIDs":["string"]}'
import requests

url = "https://api.trohub.com/v2/ip/trademark/text/batch-delete"
headers = {"Authorization": "Bearer YOUR_API_KEY"}
payload = {
  "taskIDs": [
      "string"
  ]
}

r = requests.post(url, headers={**headers, "Content-Type": "application/json"}, json=payload)
print(r.json())

响应示例

{
  "ok": true,
  "message": "成功",
  "data": {
    "deleted": 0,
    "notFound": [
      "string"
    ]
  }
}

响应字段

参数类型必填说明
deletedinteger❌—
notFoundarray<string>❌未找到或不属于本账号的 ID。