Query API
Actively query video file moderation results. Supports results from the last 3 days.
Poll this endpoint to actively query video file moderation results. Query every 30 seconds. Results are available for up to 3 days.
Requirements
| Item | Specification |
|---|---|
| Protocol | HTTP or HTTPS |
| Method | POST |
| Encoding | UTF-8 |
| Format | All request and response parameters use JSON |
Timeout
- Recommended timeout: 7s
- Internal processing timeout is 3s with one automatic retry. Normal request latency is approximately 5ms.
Request
Request URL
| Cluster | Request URL | Supported Products |
|---|---|---|
| Beijing Video | http://api-video-bj.fengkongcloud.com/video/query/v4 | Chinese Video File |
| Shanghai Video | http://api-video-sh.fengkongcloud.com/video/query/v4 | Chinese Video File |
| Singapore Video | http://api-video-xjp.fengkongcloud.com/video/query/v4 | Chinese Video File, English Video File, Arabic Video File |
Request Parameters
| Parameter | Type | Required | Max Length | Description |
|---|---|---|---|---|
accessKey | string | Yes | 20 | Company key for authentication, provided by ISHUMEI when the service is activated. |
btId | string | Yes | 64 | Client-side unique request identifier. |
Response
Response Parameters
Parameters other than
code,message, andrequestIdare only guaranteed to be returned whencodeis1100.
| Parameter | Type | Required | Description |
|---|---|---|---|
requestId | string | Yes | Unique ISHUMEI request identifier. |
code | int32 | Yes | Response code. See Response Codes. |
message | string | Yes | Response message corresponding to the code. See Response Codes. |
btId | string | Yes | Client-side unique request identifier. |
riskLevel | string | Yes | Overall risk level. PASS: normal (allow), REVIEW: suspicious (manual review), REJECT: violation (block). |
auxInfo | object | Yes | Auxiliary information. See auxInfo Object. |
frameDetail | array | No | Frame image risk details. Returned when risky frames exist or returnAllImg=1. See frameDetail Array. |
audioDetail | array | No | Audio segment risk details. Returned when risky segments exist or returnAllAudio=1. See audioDetail Array. |
tokenProfileLabels | array | No | Account attribute labels. Returned only when tokenId is provided and the labeling service is enabled. See Token Labels. |
tokenRiskLabels | array | No | Account risk labels. Returned only when tokenId is provided and the labeling service is enabled. See Token Labels. |
Response Codes
| Code | Message | Description |
|---|---|---|
1100 | Success | The request completed successfully. |
1101 | Video processing | The video is still being processed. |
1901 | QPS limit exceeded | The request rate limit has been exceeded. |
1902 | Invalid parameters | One or more request parameters are invalid. |
1903 | Service failure | An internal service error occurred. |
1905 | Invalid content format | The content to be moderated does not meet format requirements. |
9101 | Unauthorized operation | The provided accessKey does not have permission for this operation. |
auxInfo Object
auxInfo Object| Parameter | Type | Required | Description |
|---|---|---|---|
billingAudioDuration | float | Yes | Audio duration (in seconds) in the current video for billing purposes. If the audio track duration differs from the video duration, billing is based on the actual audio track duration (may be 0 if no audio track exists). |
billingImgNum | int32 | Yes | Number of captured frame images in the current video for billing purposes. |
frameCount | int32 | Yes | Number of returned video frames. When returnAllImg=0, this is the risk frame count; when returnAllImg=1, this is the total count. |
time | float | Yes | Video duration in seconds. |
frameDetail Array
frameDetail ArrayEach element in the array represents a captured frame with the following fields:
| Parameter | Type | Required | Description |
|---|---|---|---|
imgUrl | string | Yes | URL of the captured frame image. |
requestId | string | Yes | Unique ISHUMEI request identifier for this frame. |
riskLevel | string | Yes | Risk level. PASS: normal, REVIEW: suspicious, REJECT: violation. |
riskLabel1 | string | Yes | Level 1 risk label. Returns normal when riskLevel is PASS. |
riskLabel2 | string | Yes | Level 2 risk label. Empty when riskLevel is PASS. |
riskLabel3 | string | Yes | Level 3 risk label. Empty when riskLevel is PASS. |
riskDescription | string | Yes | Risk description. Returns "Normal" when riskLevel is PASS. Format: "Level 1 label: Level 2 label: Level 3 label". Returns "Hit custom list" when a user-defined list is matched. |
allLabels | array | Yes | List of all risk labels. See Frame allLabels. |
auxInfo | object | Yes | Frame auxiliary information. See Frame auxInfo. |
riskDetail | object | Yes | Risk detail information. See Frame riskDetail. |
imgText | string | No | OCR text content of the frame. Returned only when ADVERT or IMGTEXTRISK is passed. |
time | float | No | Timestamp of this frame relative to the video start, in seconds. |
businessLabels | array | No | Business label list. See Frame businessLabels. |
Frame allLabels
allLabelsEach element in the allLabels array:
| Parameter | Type | Required | Description |
|---|---|---|---|
riskLevel | string | No | Risk level: PASS, REVIEW, or REJECT. |
riskLabel1 | string | No | Level 1 risk label. |
riskLabel2 | string | No | Level 2 risk label. |
riskLabel3 | string | No | Level 3 risk label. |
riskDescription | string | No | Risk description. Returns "Normal" when riskLevel is PASS. Format: "Level 1: Level 2: Level 3". For reference only — do not use this value for programmatic logic. |
probability | float | No | Confidence score between 0 and 1. Higher values indicate greater confidence. |
riskDetail | object | No | Risk detail information. See Frame riskDetail. |
Frame auxInfo
auxInfo| Parameter | Type | Required | Description |
|---|---|---|---|
similarity | float | Yes | Similarity between the current frame and the previous frame. The first frame is compared against a pure black background image. Value range: 0–1 (closer to 1 = more similar). |
qrContent | string | No | QR code URL detected in the image. |
Frame riskDetail
riskDetail| Parameter | Type | Required | Description |
|---|---|---|---|
riskSource | int32 | Yes | Risk source: 1000 (no risk), 1001 (text risk), 1002 (visual image risk). |
face_num | int32 | No | Number of faces detected. |
person_num | int32 | No | Number of persons detected. |
faces | array | No | Names and positions of politically sensitive individuals in the image. Up to 10 entries (highest probability selected if more than 10). See Face Object. |
objects | array | No | Detected objects/logos with names and positions. See Object Info. |
ocrText | object | No | OCR text content. Present when imgType includes IMGTEXTRISK or ADVERT. Contains text (string): recognized text in the image. |
matchedLists | array | No | Matched custom list information. Returned only when a custom list is hit. See Matched Lists. |
riskSegments | array | No | High-risk content segments. Present when political, terrorism, prohibited, competitive, or advertising law content is detected. See Risk Segments. |
persons | array | No | Person names and positions. When "person - multiple persons" label is hit, the array contains multiple elements (up to 10, highest probability selected). See Person Object. |
Face Object
| Parameter | Type | Required | Description |
|---|---|---|---|
id | string | No | Identifier. The same person at the same position has the same ID across different labels. If the same person appears N times, N IDs are assigned. |
name | string | No | Person name. |
face_ratio | float | No | Face-to-image ratio (0–1). Higher values indicate a larger face proportion. |
probability | float | No | Confidence score (0–1). |
location | array | No | Face position coordinates [x1, y1, x2, y2] representing the top-left and bottom-right corners. Example: [207, 522, 340, 567] where 207=top-left X, 522=top-left Y, 340=bottom-right X, 567=bottom-right Y. |
Object Info
| Parameter | Type | Required | Description |
|---|---|---|---|
id | string | No | Object/logo identifier. The same object at the same position has the same ID across different labels. |
name | string | No | Object name. |
probability | float | No | Confidence score (0–1). |
qrContent | string | No | QR code URL detected in the image. |
location | array | No | Object position coordinates [x1, y1, x2, y2] representing the top-left and bottom-right corners. |
Matched Lists
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | No | Name of the matched list. |
words | array | No | Sensitive word information from the matched list. |
words[].word | string | No | The matched sensitive word. |
words[].position | array | No | Position of the sensitive word. |
Risk Segments
| Parameter | Type | Required | Description |
|---|---|---|---|
segment | string | No | High-risk content segment. |
position | array | No | Position of the high-risk content segment (0-indexed). |
Person Object
| Parameter | Type | Required | Description |
|---|---|---|---|
id | string | No | Identifier. The same person has the same ID across different labels. If the same person appears N times, N IDs are assigned. |
person_ratio | float | No | Person-to-image ratio (0–1). Higher values indicate a larger person proportion. |
probability | float | No | Confidence score (0–1). |
location | array | No | Person position coordinates. |
Frame businessLabels
businessLabelsEach element in the businessLabels array:
| Parameter | Type | Required | Description |
|---|---|---|---|
businessLabel1 | string | Yes | Level 1 business label. |
businessLabel2 | string | Yes | Level 2 business label. |
businessLabel3 | string | Yes | Level 3 business label. |
businessDescription | string | Yes | Business label description. Format: "Level 1: Level 2: Level 3". |
probability | float | Yes | Confidence score (0–1). |
confidenceLevel | int32 | No | Confidence level (0–2). Higher values indicate greater confidence. |
businessDetail | object | No | Business label details. May contain face_num, person_num, faces, objects, and persons with the same structure as described in Frame riskDetail. |
audioDetail Array
audioDetail ArrayEach element in the array represents an audio segment with the following fields:
| Parameter | Type | Required | Description |
|---|---|---|---|
audioUrl | string | Yes | URL of the audio segment. |
requestId | string | Yes | Unique ISHUMEI request identifier for this segment. |
riskLevel | string | Yes | Risk level: PASS, REVIEW, or REJECT. |
riskLabel1 | string | Yes | Level 1 risk label. Returns normal when riskLevel is PASS. |
riskLabel2 | string | Yes | Level 2 risk label. Empty when riskLevel is PASS. |
riskLabel3 | string | Yes | Level 3 risk label. Empty when riskLevel is PASS. |
riskDescription | string | Yes | Risk description. Format: "Level 1: Level 2: Level 3". Returns "Hit custom list" when matched. |
allLabels | array | Yes | List of all risk labels. See Audio allLabels. |
audioText | string | No | Recognized text content of this audio segment. |
audioStarttime | float | No | Audio segment start time relative to the audio beginning, in seconds. |
audioEndtime | float | No | Audio segment end time relative to the audio beginning, in seconds. |
businessLabels | array | No | Business label list. See Audio businessLabels. |
Audio allLabels
allLabelsEach element in the allLabels array:
| Parameter | Type | Required | Description |
|---|---|---|---|
riskLevel | string | No | Risk level: PASS, REVIEW, or REJECT. |
riskLabel1 | string | No | Level 1 risk label. |
riskLabel2 | string | No | Level 2 risk label. |
riskLabel3 | string | No | Level 3 risk label. |
riskDescription | string | No | Risk description. For reference only — do not use for programmatic logic. |
probability | float | No | Confidence score (0–1). |
riskDetail | object | No | Risk detail information. See Audio riskDetail. |
Audio riskDetail
riskDetail| Parameter | Type | Required | Description |
|---|---|---|---|
riskSource | int32 | Yes | Risk source: 1000 (no risk), 1001 (text risk), 1003 (audio voice risk). |
audioText | string | No | Recognized text content of this segment. |
matchedLists | array | No | Matched custom list information. See Matched Lists. |
riskSegments | array | No | High-risk content segments. Present when political, terrorism, prohibited, competitive, or advertising law content is detected. See Risk Segments. |
Audio businessLabels
businessLabelsEach element in the businessLabels array:
| Parameter | Type | Required | Description |
|---|---|---|---|
businessLabel1 | string | Yes | Level 1 business label. |
businessLabel2 | string | Yes | Level 2 business label. |
businessLabel3 | string | Yes | Level 3 business label. |
businessDescription | string | Yes | Business label description. Format: "Level 1: Level 2: Level 3". |
probability | float | Yes | Confidence score (0–1). |
confidenceLevel | int32 | No | Confidence level (0–2). Higher values indicate greater confidence. |
businessDetail | object | No | Business label details. |
businessDetail.riskSource | int32 | No | Risk source: 1000 (no risk), 1001 (text risk), 1003 (audio voice risk). |
businessDetail.audioText | string | No | Recognized text content. |
businessDetail.matchedLists | array | No | Matched custom list information. See Matched Lists. |
businessDetail.riskSegments | array | No | High-risk content segments. See Risk Segments. |
Token Labels
Both tokenProfileLabels and tokenRiskLabels share the same structure:
| Parameter | Type | Required | Description |
|---|---|---|---|
label1 | string | No | Level 1 label. |
label2 | string | No | Level 2 label. |
label3 | string | No | Level 3 label. |
description | string | No | Label description. |
timestamp | int32 | No | Label timestamp. 13-digit Unix timestamp in milliseconds. |
Examples
Request Example
{
"accessKey": "YOUR_ACCESS_KEY",
"btId": "1639824316368"
}Response Example
{
"audioDetail": [
{
"allLabels": [
{
"probability": 0.998463273048401,
"riskDescription": "Abuse: Personal attack: Severe personal attack",
"riskDetail": {
"audioText": "Recognized audio text content...",
"riskSource": 1001
},
"riskLabel1": "abuse",
"riskLabel2": "renshengongji",
"riskLabel3": "zhongdurenshengongji",
"riskLevel": "REJECT"
}
],
"audioEndtime": 20,
"audioStarttime": 10,
"audioText": "Recognized audio text content...",
"audioUrl": "http://example.com/audio_segment_a0001.wav",
"businessLabels": [],
"requestId": "edaa113581ec1c18df7b44c86d36ae3b_a0001",
"riskDescription": "Abuse: Personal attack: Severe personal attack",
"riskDetail": {
"audioText": "Recognized audio text content...",
"riskSource": 1001
},
"riskLabel1": "abuse",
"riskLabel2": "renshengongji",
"riskLabel3": "zhongdurenshengongji",
"riskLevel": "REJECT"
},
{
"allLabels": [
{
"probability": 0.857458027460472,
"riskDescription": "Politics: State institution: State institution",
"riskDetail": {
"audioText": "Recognized audio text content...",
"riskSource": 1001
},
"riskLabel1": "politics",
"riskLabel2": "guojiajigou",
"riskLabel3": "guojiajigou",
"riskLevel": "REJECT"
}
],
"audioEndtime": 40,
"audioStarttime": 30,
"audioText": "Recognized audio text content...",
"audioUrl": "http://example.com/audio_segment_a0003.wav",
"businessLabels": [],
"requestId": "edaa113581ec1c18df7b44c86d36ae3b_a0003",
"riskDescription": "Politics: State institution: State institution",
"riskDetail": {
"audioText": "Recognized audio text content...",
"riskSource": 1001
},
"riskLabel1": "politics",
"riskLabel2": "guojiajigou",
"riskLabel3": "guojiajigou",
"riskLevel": "REJECT"
}
],
"auxInfo": {
"billingAudioDuration": 85,
"billingImgNum": 2,
"frameCount": 2,
"time": 85
},
"btId": "1666684506188",
"code": 1100,
"frameDetail": [
{
"allLabels": [
{
"probability": 0.665125370025635,
"riskDescription": "Politics: Political symbols: Party emblem",
"riskDetail": {
"ocrText": {
"text": "2022/10/25 09:05"
},
"riskSource": 1002
},
"riskLabel1": "politics",
"riskLabel2": "zhengzhixiangzheng",
"riskLabel3": "danghui",
"riskLevel": "REJECT"
}
],
"auxInfo": {
"similarity": 0.4765625
},
"businessLabels": [
{
"businessDescription": "Face: Face pose: Frontal face",
"businessDetail": {},
"businessLabel1": "face",
"businessLabel2": "renlianzitai",
"businessLabel3": "zhenglian",
"confidenceLevel": 1,
"probability": 0.450656906102068
},
{
"businessDescription": "Face: Face type: Real person",
"businessDetail": {
"face_num": 1,
"faces": [
{
"face_ratio": 0.00227673095650971,
"id": "f7bf8842f80a5a2192781064bd69e776",
"location": [352, 237, 381, 278],
"name": "Example Person",
"probability": 0.499512671029603
}
]
},
"businessLabel1": "face",
"businessLabel2": "renlianleixing",
"businessLabel3": "zhenren",
"confidenceLevel": 2,
"probability": 0.979977369308472
}
],
"imgText": "2022/10/25 09:05",
"imgUrl": "http://example.com/frame_v81.jpg",
"requestId": "edaa113581ec1c18df7b44c86d36ae3b_v81",
"riskDescription": "Politics: Political symbols: Party emblem",
"riskDetail": {
"ocrText": {
"text": "2022/10/25 09:05"
},
"riskSource": 1002
},
"riskLabel1": "politics",
"riskLabel2": "zhengzhixiangzheng",
"riskLabel3": "danghui",
"riskLevel": "REJECT",
"time": 81
}
],
"message": "Success",
"requestId": "66fb85e3149bb9e13d6c72161cc6c6cf",
"riskLevel": "REJECT"
}Updated 12 days ago