API Docs Center

Image/Video Text Removal API



Updated: 2026-07-14

Overview

  • 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.

Base URL

https://video-translation.viitor.com


Authentication

Authorization: Bearer vt_live_xxx

Common Response Structure

FieldTypeDescription
codeInteger0 means success; non-zero means failure
messageStringResponse message
dataObject / Array / BooleanBusiness data

Task Status Enum

ValueDescription
1Created
2Queued
3Running
4Finished
5Failed
6Aborted

mediaType Enum

ValueDescription
1Video
2Image

1. Create Removal Task

Endpoint

  • Request URL: https://video-translation.viitor.com/openapi/v1/video-text-removal/add
  • Method: POST
  • Content-Type: application/json

HTTP Headers

HeaderRequiredTypeDescription
Content-TypeYesStringapplication/json;charset=UTF-8
AcceptRecommendedStringapplication/json;charset=UTF-8
AuthorizationYesStringBearer <API_KEY>

Request Body

FieldTypeRequiredDescription
urlStringYesSource video or image URL
taskNameStringYesTask name. If it exceeds 50 characters, it is truncated
mediaTypeIntegerNoMedia type: 1 video, 2 image. Default: 1
textDetectROIArrayNoText detection area. The service automatically removes detected text in the area
fullEraseROIArrayNoFull erasure area, used to remove subtitles, text, and watermarks

Area Format

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].

Successful data Fields

FieldTypeDescription
userIdLongUser ID bound to the API Key
taskIdStringTask ID
mediaTypeIntegerMedia type

Request Example

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]]
  }'

Successful Response Example

{
  "code": 0,
  "message": "OK",
  "data": {
    "userId": 123456,
    "taskId": "ViiTor_AI_50C7A13A74DC46D8B31EAEF3382895BA",
    "mediaType": 1
  }
}

2. Query Tasks by Page

  • Request URL: https://video-translation.viitor.com/openapi/v1/video-text-removal/pageList
  • Method: POST
  • Headers: same as the create removal task endpoint
FieldTypeRequiredDescription
currentIntegerNoCurrent page. Defaults to server rules
pageSizeIntegerNoPage size. Defaults to server rules
taskNameStringNoTask name filter. Maximum 100 characters
mediaTypeIntegerNoMedia type: 1 video, 2 image

Successful record fields:

FieldTypeDescription
taskIdStringTask ID
mediaTypeIntegerMedia type
durationLongMedia duration
targetVideoUrlStringResult video URL
targetImageUrlStringResult image URL
taskStatusIntegerTask status
errorCodeIntegerError code
taskNameStringTask name
taskProgressIntegerTask progress
createTimeLongCreation time

Request Example

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
  }'

Successful Response Example

{
  "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
      }
    ]
  }
}

3. Query Task Status

  • Request URL: https://video-translation.viitor.com/openapi/v1/video-text-removal/taskStatus
  • Method: POST
  • Headers: same as the create removal task endpoint
FieldTypeRequiredDescription
taskIdStringConditionally requiredSingle task ID. At least one of taskId and taskIds must be provided
taskIdsArrayConditionally requiredBatch task IDs. Maximum 100 IDs

On success, data is an array:

FieldTypeDescription
taskIdStringTask ID
mediaTypeIntegerMedia type
taskStatusIntegerTask status
taskProgressIntegerTask progress
errorCodeIntegerError code
targetVideoUrlStringResult video URL
targetImageUrlStringResult image URL
updateTimeLongUpdate time

Request Example

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"
    ]
  }'

Successful Response Example

{
  "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
    }
  ]
}

Common Error Codes

codemessageDescription
0OKSuccess
1103No PrivilegeThe account is not VIP or has no permission to call the API
2001Invalid ParameterInvalid parameter
400001missing_api_keyMissing API Key
400002invalid_api_keyInvalid API Key
400003disabled_api_keyAPI Key is disabled
400004expired_api_keyAPI Key has expired

© 2026 HighRas Limited