Image/Video Text Removal API
Updated: 2026-07-14
- Create video or image text removal tasks.
- Supports paginated task queries and batch task status queries.
- Tasks are processed asynchronously. After creating a task, the API returns
taskId; clients can poll taskStatus to get progress and result URLs.
https://video-translation.viitor.com
Authorization: Bearer vt_live_xxx
| Field | Type | Description |
|---|
code | Integer | 0 means success; non-zero means failure |
message | String | Response message |
data | Object / Array / Boolean | Business data |
| Value | Description |
|---|
1 | Created |
2 | Queued |
3 | Running |
4 | Finished |
5 | Failed |
6 | Aborted |
| Value | Description |
|---|
1 | Video |
2 | Image |
- Request URL:
https://video-translation.viitor.com/openapi/v1/video-text-removal/add - Method:
POST - Content-Type:
application/json
| Header | Required | Type | Description |
|---|
Content-Type | Yes | String | application/json;charset=UTF-8 |
Accept | Recommended | String | application/json;charset=UTF-8 |
Authorization | Yes | String | Bearer <API_KEY> |
| Field | Type | Required | Description |
|---|
url | String | Yes | Source video or image URL |
taskName | String | Yes | Task name. If it exceeds 50 characters, it is truncated |
mediaType | Integer | No | Media type: 1 video, 2 image. Default: 1 |
textDetectROI | Array | No | Text detection area. The service automatically removes detected text in the area |
fullEraseROI | Array | No | Full erasure area, used to remove subtitles, text, and watermarks |
At least one of textDetectROI and fullEraseROI must be provided. Both fields are two-dimensional arrays. Each child array represents one rectangular area. Coordinates follow the processing service convention and are usually passed as [x1, y1, x2, y2].
| Field | Type | Description |
|---|
userId | Long | User ID bound to the API Key |
taskId | String | Task ID |
mediaType | Integer | Media type |
curl -X POST "https://video-translation.viitor.com/openapi/v1/video-text-removal/add" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer vt_live_xxx" \
-d '{
"url": "https://cdn.example.com/video/source.mp4",
"taskName": "Text removal task 001",
"mediaType": 1,
"textDetectROI": [[100, 200, 800, 320]]
}'
{
"code": 0,
"message": "OK",
"data": {
"userId": 123456,
"taskId": "ViiTor_AI_50C7A13A74DC46D8B31EAEF3382895BA",
"mediaType": 1
}
}
- Request URL:
https://video-translation.viitor.com/openapi/v1/video-text-removal/pageList - Method:
POST - Headers: same as the create removal task endpoint
| Field | Type | Required | Description |
|---|
current | Integer | No | Current page. Defaults to server rules |
pageSize | Integer | No | Page size. Defaults to server rules |
taskName | String | No | Task name filter. Maximum 100 characters |
mediaType | Integer | No | Media type: 1 video, 2 image |
Successful record fields:
| Field | Type | Description |
|---|
taskId | String | Task ID |
mediaType | Integer | Media type |
duration | Long | Media duration |
targetVideoUrl | String | Result video URL |
targetImageUrl | String | Result image URL |
taskStatus | Integer | Task status |
errorCode | Integer | Error code |
taskName | String | Task name |
taskProgress | Integer | Task progress |
createTime | Long | Creation time |
curl -X POST "https://video-translation.viitor.com/openapi/v1/video-text-removal/pageList" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer vt_live_xxx" \
-d '{
"current": 1,
"pageSize": 10,
"mediaType": 1
}'
{
"code": 0,
"message": "OK",
"data": {
"current": 1,
"size": 10,
"total": 1,
"pages": 1,
"records": [
{
"taskId": "ViiTor_AI_50C7A13A74DC46D8B31EAEF3382895BA",
"mediaType": 1,
"duration": 30000,
"targetVideoUrl": "https://cdn.example.com/video/result.mp4",
"taskStatus": 4,
"errorCode": 0,
"taskName": "Text removal task 001",
"taskProgress": 100,
"createTime": 1720000000000
}
]
}
}
- Request URL:
https://video-translation.viitor.com/openapi/v1/video-text-removal/taskStatus - Method:
POST - Headers: same as the create removal task endpoint
| Field | Type | Required | Description |
|---|
taskId | String | Conditionally required | Single task ID. At least one of taskId and taskIds must be provided |
taskIds | Array | Conditionally required | Batch task IDs. Maximum 100 IDs |
On success, data is an array:
| Field | Type | Description |
|---|
taskId | String | Task ID |
mediaType | Integer | Media type |
taskStatus | Integer | Task status |
taskProgress | Integer | Task progress |
errorCode | Integer | Error code |
targetVideoUrl | String | Result video URL |
targetImageUrl | String | Result image URL |
updateTime | Long | Update time |
curl -X POST "https://video-translation.viitor.com/openapi/v1/video-text-removal/taskStatus" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer vt_live_xxx" \
-d '{
"taskIds": [
"ViiTor_AI_50C7A13A74DC46D8B31EAEF3382895BA"
]
}'
{
"code": 0,
"message": "OK",
"data": [
{
"taskId": "ViiTor_AI_50C7A13A74DC46D8B31EAEF3382895BA",
"mediaType": 1,
"taskStatus": 4,
"taskProgress": 100,
"errorCode": 0,
"targetVideoUrl": "https://cdn.example.com/video/result.mp4",
"updateTime": 1720000300000
}
]
}
| code | message | Description |
|---|
0 | OK | Success |
1103 | No Privilege | The account is not VIP or has no permission to call the API |
2001 | Invalid Parameter | Invalid parameter |
400001 | missing_api_key | Missing API Key |
400002 | invalid_api_key | Invalid API Key |
400003 | disabled_api_key | API Key is disabled |
400004 | expired_api_key | API Key has expired |