Face · Standard API · eKYC Core
Index faces video
Indexes a frame from a video that passes portrait sanity into a collection, and returns the indexed image id together with the video id.
Request
Clients can provide image data to the TrustVision API by specifying the ID the video by using upload file API, or by sending the file data as base64-encoded text.
| Name | Type | Required | Description |
|---|---|---|---|
video | VideoData | Required | video to index face. Should use video has the face |
collection | string | Optional | index faces to this collection. case-sensitive |
- If you use
base64,labelandmetadata, omit parameterid. - If you use
id(resultidis returned from Upload File API), omit parameterbase64,labelandmetadata. - If not set collection, default collection will be used.
{
"video": {
"id": string,
"base64": string,
"label": string,
"metadata": string_json,
},
"collection": string,
}
Which each video's parameters contains:
| key | type | required | description |
|---|---|---|---|
id | string | Optional | ID of video is returned from API Upload |
base64 | string | Optional | base64 encoded text of video data |
label | string | Optional | label of the video as described at Label table |
metadata | string_json | Optional | key-value string, key should be string, value should be string, int, float, bool. Example "{\"id\":\"123456789\",\"type\":1}" |
Sample request
curl -X POST \
https://tv-staging.trustingsocial.com/api/v1/index_faces_video \
-H 'Authorization: TV <YOUR ACCESS KEY>:<CREATED SIGNATURE>' \
-H 'X-TV-Timestamp: 2019-04-21T18:00:15+07:00' \
-H 'Content-Type: application/json' \
-d \
'
{
"video": {
"id": "a4facba3-334b-41fb-97e3-4766cb70ae29"
}
}
'
Response
data.image.id is the frame that was indexed and data.video_id the video it came from. In case the request processing has been finished, the HTTP status code will be 200, and the data.status is either "success" or "failure" depending on whether the request has been successfully processed or not.
{
"data": {
"request_id": string,
"image": {
"id": string, // id of the image
"transformed_image_id": string // optional, just in case the image is transformed
},
"video_id": string, // id of the input video
"status": string, // "success" or "failure"
},
"errors": [
{
"code": string,
"message": string,
"detail": {
"field": string, // optional, which parameter is invalid.
... // any other information that can be useful for client
},
},
... // other errors
]
}
A successful index comes back like this:
{
"data": {
"status": "success",
"image": {
"id": "a4facba3-334b-41fb-97e3-4766cb70ae29"
},
"video_id": "c679b398-8dc3-4112-ab37-71b66f6d2e04",
"request_id": "dfdef016-e89b-4da4-ae17-5844f909c947"
}
}
Failure codes
If the data.status is "failure", the "errors" field will tell you why it failed.
In case of any other errors, the data field will be empty, and the server sends one of following HTTP status code with error code:
| HTTP code | Error code | Description |
|---|---|---|
401 | access_denied_exception | You are not authorized to perform the action. |
400 | invalid_parameter_exception | Input parameter violates a constraint. |
400 | request_time_too_skewed | The X-TV-Timestamp header is expired, need a newer one. |
404 | image_not_found_exception | The image ID is not found in DB. |
404 | request_not_found_exception | The request ID is not found when polling result by id |
408 | request_timeout_exception | Request takes too long to process |
429 | rate_limit_exception | The number of requests exceeded your throughput limit. |
500 | internal_server_error | Some unexpected error occurs while processing the request |
The codes above are the ones documented for this endpoint. Response errors on the Overview lists the codes for the eKYC Core surface as a whole — the two lists do not match on every endpoint.