Updated on 2025-11-26 GMT+08:00

Querying Keys

Function

When a device plays an encrypted HLS video, the device requests the key from the tenant management system. The system then queries its local cache for the key. If the key is not found, the system calls this API to query the key from VOD. For details about the application scenarios of this API, see the sample code for preventing video leakage through HLS encryption in VOD Best Practices.

Authorization Information

Each account has all the permissions required to call all APIs, but IAM users must be assigned the required permissions. For details about the required permissions, see Permissions Policies and Supported Actions.

URI

GET /v1.0/{project_id}/asset/ciphers

Table 1 Path Parameters

Parameter

Mandatory

Type

Description

project_id

Yes

String

Project ID. For details about how to obtain the project ID, see Obtaining a Project ID.

Table 2 Query Parameters

Parameter

Mandatory

Type

Description

asset_id

Yes

String

Media asset ID assigned by VOD. It can only be queried but cannot be modified.

Request Parameters

Table 3 Request header parameters

Parameter

Mandatory

Type

Description

X-Auth-Token

No

String

User token. This parameter is mandatory when token authentication is used.

It can be obtained by calling the IAM API used to obtain a user token. The value of X-Subject-Token in the response header is the user token.

Authorization

No

String

Authentication information. This parameter is mandatory for AK/SK authentication.

X-Sdk-Date

No

String

Time when a request is sent. This parameter is mandatory for AK/SK authentication.

Response Parameters

Status code: 200

Table 4 Response body parameters

Parameter

Type

Description

asset_id

String

Media asset ID assigned by VOD. It can only be queried but cannot be modified.

edk

String

Key ciphertext.

dk

String

Key plaintext.

Status code: 400

Table 5 Response body parameters

Parameter

Type

Description

error_code

String

Error code.

error_msg

String

Error description.

Example Requests

This example queries a key.

GET https://{endpoint}/v1.0/{project_id}/asset/ciphers?asset_id={asset_id}

Example Responses

Status code: 200

Returned when the request succeeded.

{
  "asset_id" : "06da0367af8f297ea3efc791e8b27157",
  "edk" : "02009800f00446c3aa6ad610bb121a602fa3091daca7a544ded4f514cae2c233cf51f3d88de64712242a8468042db19b4282e0d7196a8d4df6150169debb5d077527fad983e14174f1ab5430958ca4903187321f0a3406284bf938b64de95ddd3db438df9ddae98d347058969fd39be5049a0a5830396432303366352d313235362d346265322d626539642d38313164333363336630353200000000f9776c60d33706c68195bc64934f94ee28fbfdf03e5fbb65c5450599d6aa4807",
  "dk" : "4Q9KYgKbUChxocNYbteP3A=="
}

Status code: 400

Returned when the request failed.

{
  "error_code" : "VOD.10101",
  "error_msg" : "Unable to get the key because there is no encryption."
}

Status Codes

Status Code

Description

200

Returned when the request succeeded.

400

Returned when the request failed.

Error Codes

See Error Codes.