## 接口地址

[https://as.dun.163.com/v1/digital/callback/query](https://as.dun.163.com/v1/digital/callback/query)

## 接口描述

接口功能，在离线接口获取数据结果之后避免网络原因等数据丢失，可以在数字阅读解决方案查询接口获取数据，查询时限为30天内数据，建议您使用POST请求, 且仅接受 application/x-www-form-urlencoded 编码格式。

## 接口请求频率

单次调用支持查询最多100条数据，QPS限制1s最多查询100个taskid。

## 请求参数

请求公共参数详细见 [请求公共参数](/help/documents/477203617247420416)

| 参数名称  |  类型 | 是否必选 | 最大长度 | 描述 |
|-----------|-------|------|------|-------|
| version | String | Y | 4 | 接口版本，当前版本为 v1.1 |
|taskIds| json数组|Y|4|单次查询支持最多查询100条数据|

## 响应结果

响应字段如下，响应通用字段已省略，详细见 [响应通用字段](/help/documents/439201277949382656)：

### result 数据结构

| 参数名称 | 类型 | 描述 |
|----------|------|------|
| antispam | json对象 | 内容安全检测结果 |
| anticheat | json对象 | 反作弊检测结果 |

### antispam 数据结构

| 参数名称 | 类型 | 描述 |
|----------|------|------|
| taskId | String | 数据请求标识，可以根据该标识查询融媒体数据最新结果 |
| dataId | String | 调用融媒体检测时传递的dataId字段 |
| callback | String | 调用检测时传递的callback字段 |
| checkStatus | Number  | 检测状态, 1:检测中 2:检测成功 3:检测失败 |
| result | Number  | 检测结果, 0:无结果（检测失败）1:正常 2:异常 3：疑似  |
|resultType |Number |审核类型，1:机器检测，2:审核|
|censorSource |Number|审核来源,0:易盾人审，1:用户人审，2:易盾机审|
|censorRound |Number|审核轮数，1：第1轮人审，2：第2轮人审，3：第3轮人审，4：第4轮人审，5：第5轮人审，未设置审核模式默认返回0|
| censorLabels | json数组  | 支持在智能审核系统自定义标签分类信息 |
| evidences | json对象  | 机审证据信息 |
| reviewEvidences | json对象  | 人审证据信息，接入人工审核后，参考人审证据信息 |


### censorLabels 数据结构

| 参数名称 | 类型 | 描述 |
|----------|------|------|
| code | String | 在智能审核系统配置自定义标签之后会生成一个唯一的标签编号 |
| desc | String | 在智能审核系统配置自定义标签备注 |
| customCode | String | 自定义的标签code |

### evidences 数据结构

| 参数名称 | 类型 | 描述 |
|----------|------|------|
| texts | json数组 | 文本证据信息 |
| images | json数组 | 图片证据信息 |
| audios | json数组 | 语音证据信息 |
| videos | json数组 | 视频证据信息 |
| audiovideos | json数组 | 语音视频证据信息 |
| files | json数组 | 文档证据信息 |

#### texts 数据结构

| 参数名称 | 类型 | 描述 |
|----------|------|------|
| dataId | String | 提交检测时标识的数据id |
| action | Number | 检测结果，0：通过，1：嫌疑，2：不通过 |
| labels | json数组 | 分类信息 详细数据与文本在线检测labels数据结构一致 |
| field | String | 数据来源字段名。当数据来自提交接口的 title 或 content 时，此字段值为 title 或 content，当数据来自提交接口扩展字段时，此字段值为扩展字段名 |

labels 数据结构

| 参数名称 | 类型 | 描述 |
|----------|------|------|
| label | Number | 分类信息，100：色情，200：广告，260：广告法，300：暴恐，400：违禁，500：涉政，600：谩骂，700：灌水，900：其他 |
| level | Number | 分类级别，0：通过， 1：嫌疑，2：不通过 |
| details | json对象	 | 其他信息 |

details 数据结构

| 参数名称 | 类型 | 描述 |
|----------|------|------|
| hint | json数组 | 线索信息，用于定位文本中有问题的部分，辅助人工审核 |


#### images 数据结构

| 参数名称 | 类型 | 描述 |
|----------|------|------|
| name | String | 图片标识 |
| dataId | String | 提交检测时标识的数据id |
| status | Number | 图片检测状态码，定义为：0：检测成功，610：图片下载失败，620：图片格式错误，630：其它 |
| action | Number | 检测结果，0：通过，1：嫌疑，2：不通过 |
| labels | json数组 |  分类信息 |
| field | String | 数据来源字段名。当数据来自提交接口的 title 或 content 时，此字段值为 title 或 content，当数据来自提交接口扩展字段时，此字段值为扩展字段名 |

labels 数据结构

| 参数名称 | 类型 | 描述 |
|----------|------|------|
| label | Number | 分类信息，100：色情，110：性感低俗，200：广告，210：二维码，260：广告法，300：暴恐，400：违禁，500：涉政，900：其他 |
| level | Number | 分类级别，0：通过，1：嫌疑，2：不通过 |
| rate | Number | 置信度分数，0-1之间取值，1为置信度最高，0为置信度最低。若level为正常，置信度越大，说明正常的可能性越高。若level为不确定或确定，置信度越大，说明垃圾的可能性越高 |


#### audios 数据结构

| 参数名称 | 类型 | 描述 |
|----------|------|------|
| dataId | String | 提交检测时标识的数据id |
| asrStatus | Number | 音频翻译结果，2：检测中，3：检测完成，4：检测失败 |
| asrResult | Number | 音频翻译检测失败原因，1：文件格式错误，2：文件下载失败，3：解析失败，4：音频流不存在 |
| action | Number | 检测结果，0：通过，1：嫌疑，2：不通过 |
| labels | json数组 | 分类信息 |
| field | String | 数据来源字段名。当数据来自提交接口的 title 或 content 时，此字段值为 title 或 content，当数据来自提交接口扩展字段时，此字段值为扩展字段名 |

labels 数据结构

| 参数名称 | 类型 | 描述 |
|----------|------|------|
| label | Number | 分类信息，100：色情，200：广告，260：广告法，300：暴恐，400：违禁，500：涉政，600：谩骂 |
| level | Number | 分类级别，0：通过，1：嫌疑，2：不通过 |
| details | json对象	 | 其他信息 |

details 数据结构

| 参数名称 | 类型 | 描述 |
|----------|------|------|
| hint | Number | 线索信息，用于定位文本中有问题的部分，辅助人工审核 |
| hitType | Number | 命中检测器类型：10：用户名单 11:IP名单 12:设备名单 30:敏感词 110:IP地区限制 130:声纹检测 |

hint  数据结构

| 参数名称 | 类型 | 描述 |
|----------|------|------|
| value | String | 命中的敏感词或者声纹检测的分值 |
| segments | json数组 | 命中敏感词或者声纹检测的音频时间点 |

segments  数据结构

| 参数名称 | 类型 | 描述 |
|----------|------|------|
| startTime | Number | 最近开始时间点，单位毫秒 |
| endTime | Number | 最近结束时间点，单位毫秒 |


#### videos 数据结构

| 参数名称 | 类型 | 描述 |
|----------|------|------|
| dataId | String | 提交检测时标识的数据id |
| status | Number | 视频处理状态码，定义为：0：检测成功，110：请求重复，120：参数错误，130：解析错误，140：数据类型错误 |
| level | Number | 视频级别信息，分为0:正常，1：不确定，2：确定，其中不确定的建议人工复审 |
| evidences | json对象数组 | 证据信息数组 |
| field | String | 数据来源字段名。当数据来自提交接口的 title 或 content 时，此字段值为 title 或 content，当数据来自提交接口扩展字段时，此字段值为扩展字段名 |

evidences 数据结构

| 参数名称 | 类型 | 描述 |
|----------|------|------|
| beginTime | Number | 证据开始相对时间，单位为毫秒，调用方获取后可自行格式化为可视化时间，如：149000 转换为"00:02:29" |
| endTime | Number | 证据结束相对时间，单位为毫秒，调用方获取后可自行格式化为可视化时间，如：149000 转换为"00:02:29" |
| type | Number | 1：图片，2：视频 |
| url | String | 证据信息 |
| labels | json对象数组 | 证据结果数组 |

labels 数据结构

| 参数名称 | 类型 | 描述 |
|----------|------|------|
| label | Number | 分类信息，100：色情，110：性感；200：广告，210：二维码，260：广告法，300：暴恐，400：违禁，500：涉政，1020：黑屏，1030：挂机 |
| level | Number | 级别信息，分为1：不确定，2：确定 |
| rate | Number | 分数 |


#### audiovideos 数据结构

| 参数名称 | 类型 | 描述 |
|----------|------|------|
| dataId | String | 提交检测时标识的数据id |
| result | Number | 检测结果 0:无结果（检测失败）, 1:正常 2:异常 3:嫌疑 |
| evidences | json对象 | 证据信息数组 |
| field | String | 数据来源字段名。当数据来自提交接口的 title 或 content 时，此字段值为 title 或 content，当数据来自提交接口扩展字段时，此字段值为扩展字段名 |

evidences 数据结构

| 参数名称 | 类型 | 描述 |
|----------|------|------|
| audio | json对象 | 语音证据信息，结构与audios数组元素一致 |
| video | json对象 | 语音证据信息，结构与videos数组元素一致 |

#### files 数据结构

| 参数名称 | 类型 | 描述 |
|----------|------|------|
| dataId | String | 提交检测时标识的数据id |
| result | Number | 检测结果 0:无结果（检测失败）, 1:正常 2:异常 3:嫌疑 |
| failureReason | Number | 检测失败原因 |
| evidences | json对象 | 证据信息数组 |
| field | String | 数据来源字段名。当数据来自提交接口的 title 或 content 时，此字段值为 title 或 content，当数据来自提交接口扩展字段时，此字段值为扩展字段名 |

failureReason 说明

| 错误码  | 描述 |
|----------|------|
| 1000  | 文档大小超过上限 |
| 1001 | 文档格式不支持 |
| 1002 | 文档下载失败 |
| 2000 | 文档内容提取失败 |
| 2001 | 文档内容提取超时 |
| 3000 | 文档检测失败 |
| 3001 | 文档文本检测失败 |
| 3002 | 文档图片检测失败 |

evidences 数据结构

| 参数名称 | 类型 | 描述 |
|----------|------|------|
| texts | json对象数组 | 文本证据信息 |
| images | json对象数组 | 图片证据信息 |

texts 数据结构

| 参数名称 | 类型 | 描述 |
|----------|------|------|
| taskId | String | 当前分段检测数据标识 |
| sequence | Number | 当前文本在原始文档中的分段（5000字符/段）序号 |
| startText | String | 每段文本的起始20个字符 |
| endText | String | 每段文本的结尾20个字符 |
| action | Number | 检测结果，0：通过，1：嫌疑，2：不通过 |
| labels | json对象数组 | 分类信息 详细数据与文本在线检测labels数据结构一致 |

images 数据结构

| 参数名称 | 类型 | 描述 |
|----------|------|------|
| taskId | String | 当前图片检测数据标识 |
| sequence | Number | 当前图片在原始文档中的序号 |
| imageUrl | String | 图片下载地址 |
| level | Number | 分类级别，0：正常，1：不确定，2：确定 |
| labels | json对象数组 |  分类信息 详细数据与图片在线检测labels数据结构一致 |

### reviewEvidences 数据结构

| 参数名称 | 类型 | 描述 |
|----------|------|------|
| reason | String | 判定原因 |
| remark | String | 备注信息 |
| detail | json数组 | 人审证据详细信息 |

detail 数据结构

| 参数名称 | 类型 | 描述 |
|----------|------|------|
| texts | json数组 | 文本证据信息 |
| images | json数组 | 图片证据信息 |
| audios | json数组 | 语音证据信息 |
| videos | json数组 | 视频证据信息 |
| audiovideos | json数组 | 语音视频证据信息 |
| files | json数组 | 文档证据信息 |

texts 数据结构

| 参数名称 | 类型 | 描述 |
|----------|------|------|
| dataId | String | 提交检测时标识的数据id |
| field | String | 数据来源字段名。当数据来自提交接口的 title 或 content 时，此字段值为 title 或 content，当数据来自提交接口扩展字段时，此字段值为扩展字段名 |
|reviseContent |	String | 	修订后的文本内容 |
| censorResult | Number | 字段审核模式下的人工审核结果，1:正常 2:异常   |
| reasons | TextReason 数组 | 文本判定原因 | 

TextReason 数据结构

| 参数名称 | 类型 | 描述 |
|----------|------|------|
| text | String | 人审标注文本 |
| reason | String | 文本判定原因 |

images 数据结构

| 参数名称 | 类型 | 描述 |
|----------|------|------|
| dataId | String | 提交检测时标识的数据id |
| field | String | 数据来源字段名。当数据来自提交接口的 title 或 content 时，此字段值为 title 或 content，当数据来自提交接口扩展字段时，此字段值为扩展字段名 |
| censorResult | Number | 字段审核模式下的人工审核结果，1:正常 2:异常   |
| reasons | ImageReason 数组 | 图片判定原因 |

ImageReason 数据结构

| 参数名称 | 类型 | 描述 |
|----------|------|------|
| url | String | 人审标注图片url |
| reason | String | 图片判定原因 |

audios 和 videos 数据结构

| 参数名称 | 类型 | 描述 |
|----------|------|------|
| dataId | String | 提交检测时标识的数据id |
| field | String | 数据来源字段名。当数据来自提交接口的 title 或 content 时，此字段值为 title 或 content，当数据来自提交接口扩展字段时，此字段值为扩展字段名 |
| censorResult | Number | 字段审核模式下的人工审核结果，1:正常 2:异常   |
| reasons | AudioVideoReason 数组 | 判定原因 |

audiovideos 数据结构

| 参数名称 | 类型 | 描述 |
|----------|------|------|
| dataId | String | 提交检测时标识的数据id |
| field | String | 数据来源字段名。当数据来自提交接口的 title 或 content 时，此字段值为 title 或 content，当数据来自提交接口扩展字段时，此字段值为扩展字段名 |
| censorResult | Number | 字段审核模式下的人工审核结果，1:正常 2:异常   |
| videos | AudioVideoReason 数组 | 视频证据信息 |
| audios | AudioVideoReason 数组 | 音频证据信息 |

AudioVideoReason 数据结构

| 参数名称 | 类型 | 描述 |
|----------|------|------|
| url | String | 人审标音频或视频url |
| startTime | Number | 标注开始时间点，单位毫秒 |
| endTime | Number | 标注结束时间点，单位毫秒 |
| reason | String | 判定原因 |

files 数据结构

| 参数名称 | 类型 | 描述 |
|----------|------|------|
| dataId | String | 提交检测时标识的数据id |
| field | String | 数据来源字段名。当数据来自提交接口的 title 或 content 时，此字段值为 title 或 content，当数据来自提交接口扩展字段时，此字段值为扩展字段名 |
| censorResult | Number | 字段审核模式下的人工审核结果，1:正常 2:异常   |
| texts | TextReason 数组（见上文） | 文本证据信息 |
| images | ImageReason 数组（见上文） | 图片证据信息 |

### anticheat 数据结构

| 参数名称 | 类型 | 描述 |
|----------|------|------|
| taskId| String | 本次请求数据标识，可以根据该标识查询数据最新结果 |
| action | Number | 检测结果，0：通过，10：嫌疑，20：不通过 |
| hitInfo | 数组 | 命中信息，其中hitType类型为int，含义是命中类型，详见 <a href="https://support.dun.163.com/documents/2018041901?locale=zh-cn&docId=490705415386509312" target="black">hitType返回码及含义表</a> 。 |

## 响应示例
查询结果返回如下
```json
{
  "code": 200,
  "msg": "ok",
  "result": [
    {
      "antispam": {
        "taskId": "a56d264d8a4649dfaa5595fa93363a56",
        "dataId": "81016504",
        "callback": "xxx",
        "result": 2,
        "checkStatus": 2,
        "resultType": 1,
        "censorSource": 2,
        "evidences": {
          "texts": [
            {"action":2,"dataId":"xxx","labels":[{"label":200,"level":2,"details":{"hint":[]}}],"field":"title"},
            {"action":2,"dataId":"xxx","labels":[{"label":200,"level":2,"details":{"hint":[]}}],"field":"content"}
          ],
          "images": [
            {"name":"xxx","dataId":"xxx","status":0,"action":2,"labels":[{"label":100,"level":2,"rate":1.0}],"field":"content"}
          ],
          "audios": [
            {
              "action":2,
              "asrStatus":3,
              "asrResult":0,
              "dataId":"bad-audio",
              "labels":[{"label":500,"level":2,"details":{"hint":[{"value":"为何渴望回归中国","segments":[{"startTime":0,"endTime":8}]}],"hitType":30}}],
              "field":"content"
            }
          ],
          "videos": [
            {
              "dataId": "bad-video",
              "status": 0,
              "level": 2,
              "evidences": [
                {
                  "type": 1,
                  "url": "https://illegal-video.nosdn.127.net/xxx.jpg",
                  "beginTime": 5000,
                  "endTime": 5000,
                  "labels": [ { "label": 400, "level": 2, "rate": 1.0 } ]
                }
              ],
              "field": "content"
            }
          ],
          "audiovideos": [
            {
              "dataId": "bad-video",
              "result": 2,
              "evidences": {
                "audio": {
                  "action": 0,
                  "asrStatus": 3,
                  "asrResult": 0,
                  "labels": []
                },
                "video": {
                  "status": 0,
                  "level": 2,
                  "evidences": [
                    {
                      "type": 1,
                      "url": "https://illegal-video.nosdn.127.net/36e87656738e4a379b4c15ff7fa8dfdf_1606874137263.jpg",
                      "beginTime": 5000,
                      "endTime": 5000,
                      "labels": [ { "label": 400, "level": 2, "rate": 1.0 } ]
                    }
                  ]
                }
              },
              "field": "content"
            }
          ],
          "files": [
            {
              "dataId": "bad-file",
              "result": 2,
              "evidences": {
                "texts": [
                  {
                    "taskId": "5eb773f887b54c08b433a9498dd20c0d",
                    "sequence": 0,
                    "startText": "\n\n\n\n\n\n\n\n\n\n",
                    "endText": "\n\n\n\n\n\n\n\n\n\n",
                    "action": 0,
                    "labels": [ { "label": 0, "level": 0 } ]
                  }
                ],
                "images": [
                  {
                    "taskId": "59ab4ea3e06442ce965c79d6192ec42a",
                    "sequence": 0,
                    "imageUrl": "https://yidun-antispam.nos-eastchina1.126.net/59ab4ea3e06442ce965c79d6192ec42a?Signature=nxFs3kh%2FgvBricm8mq7j%2BgyeDO2QWsKbxC26s2QdqYg%3D&Expires=1609466135&NOSAccessKeyId=a681ebcbcd5646a488d275c33acb16bd",
                    "level": 1,
                    "labels": [ { "label": 400, "level": 1, "rate": 0.98845863 }
                    ]
                  }
                ]
              },
              "resultType": 1,
              "field": "content"
            }
          ]
        }
      },
      "anticheat": {
        "action": 20,
        "taskId": "a56d264d8a4649dfaa5595fa93363a56",
        "hitInfo": {
          "hitType": 3
        }
      }
    }
  ]
}
```

当获取人工审核离线结果时，输出示例如下：
```json
{
  "code": 200,
  "msg": "ok",
  "result": [
    {
      "antispam": {
        "taskId": "0c32b124e4bd43c69ed0e832c1ee1cb5",
        "dataId": "242365478655main",
        "callback": "callback",
        "result": 2,
        "checkStatus": 2,
        "resultType": 2,
        "censorSource": 1,
        "censorRound": 1,
        "censorLabels": [
          {
            "code": "在智能系统配置自定义标签之后会生成一个唯一的标签",
            "desc": "备注",
            "customCode":"9000"
          }
        ],
        "reviewEvidences": {
          "reason": "其他",
          "remark": "备注",
          "detail": {
            "texts": [
              {
                "field": "title",
                "dataId": "0c32b124e4bd43c69ed0e832c1ee1cb5",
                "reasons": [
                  {
                    "text": "itle",
                    "reason": "aaa"
                  }
                ]
              },
              {
                "field": "content",
                "dataId": "sample-text"
              }
            ],
            "images": [
              {
                "field": "content",
                "dataId": "sample-image",
                "reasons": [
                  {
                    "url": "https://yidun-antispam.nos-eastchina1.126.net/xxx",
                    "reason": "sss"
                  }
                ]
              }
            ],
            "audios": [
              {
                "field": "content",
                "dataId": "bad-audio",
                "reasons": [
                  {
                    "url": "https://yidun-antispam.nos-eastchina1.126.net/xxx",
                    "startTime": 29,
                    "endTime": 33
                  },
                  {
                    "url": "https://yidun-antispam.nos-eastchina1.126.net/xxx",
                    "startTime": 2,
                    "endTime": 29
                  }
                ]
              }
            ],
            "videos": [
              {
                "field": "content",
                "dataId": "bad-video",
                "reasons": [
                  {
                    "url": "http://illegal-video.nosdn.127.net/xxx",
                    "startTime": 0,
                    "endTime": 0,
                    "reason": "xxx"
                  }
                ]
              }
            ],
            "audiovideos": [
              {
                "field": "content",
                "dataId": "good-video",
                "videos": [
                  { "url": "http://illegal-video.nosdn.127.net/xxx", "startTime": 0, "endTime": 0, "reason": "aaa" },
                  { "url": "http://illegal-video.nosdn.127.net/xxx", "startTime": 0, "endTime": 0, "reason": "bb" }
                ],
                "audios": [
                  { "url": "http://illegal-video.nosdn.127.net/xxx", "startTime": 0, "endTime": 0, "reason": "fdfd" }
                ]
              }
            ],
            "files": [
              {
                "field": "content",
                "dataId": "xxx",
                "texts": [
                  { "text": "想到了", "reason": "a" },
                  { "text": "布的张", "reason": "bb" }
                ],
                "images": [
                  { "url": "https://yidun-antispam.nos-eastchina1.126.net/xxx", "reason": "tt" }
                ]
              }
            ]
          }
        }
      }
    }
  ]
}
```


当无最新离线结果需要获取时，输出示例如下：
```json
{
    "code": 200,
    "msg": "ok",
    "result":[]
}
```