Skip to main content
View as Markdown

CRUD Operations - Authentication

AppToken CRUD Operations​

appToken.add — Create a Token​

POST /api_v3/service/appToken/action/add
ParameterTypeRequiredDescription
ksstringYesAdmin KS
appToken[objectType]stringYesKalturaAppToken
appToken[hashType]stringNoSHA256 (recommended), SHA1, SHA512, MD5. Default: SHA1. Immutable after creation.
appToken[sessionType]intNo0=USER (recommended), 2=ADMIN
appToken[sessionDuration]intNoMax session duration in seconds (0 = account default)
appToken[sessionPrivileges]stringNoPrivileges to bake in (e.g., sview:*,list:*)
appToken[sessionUserId]stringNoFixed user ID for all sessions created from this token
appToken[description]stringNoHuman-readable label
appToken[expiry]intNoUnix timestamp when token expires (0 = never)
curl -X POST "$KALTURA_SERVICE_URL/service/appToken/action/add" \
-d "ks=$KALTURA_KS" \
-d "format=1" \
-d "appToken[objectType]=KalturaAppToken" \
-d "appToken[hashType]=SHA256" \
-d "appToken[sessionType]=0" \
-d "appToken[sessionDuration]=86400" \
-d "appToken[sessionPrivileges]=sview:*,list:*" \
-d "appToken[description]=My integration token"

Response:

{
"id": "1_abc123def4",
"token": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2",
"partnerId": 123456,
"status": 2,
"sessionType": 0,
"sessionDuration": 86400,
"sessionPrivileges": "sview:*,list:*",
"sessionUserId": "",
"hashType": "SHA256",
"description": "My integration token",
"expiry": 0,
"createdAt": 1700000000,
"updatedAt": 1700000000,
"objectType": "KalturaAppToken"
}

The response includes id (token ID) and token (the secret value — store securely on your backend server only). The token field is a hex string whose length depends on the hash algorithm (64 characters for SHA256).

appToken.get — Retrieve a Token​

POST /api_v3/service/appToken/action/get
ParameterTypeRequiredDescription
ksstringYesAdmin KS
idstringYesThe AppToken ID

Returns the full KalturaAppToken object. The token field is included only for the account admin.

curl -X POST "$KALTURA_SERVICE_URL/service/appToken/action/get" \
-d "ks=$KALTURA_KS" \
-d "format=1" \
-d "id=$APP_TOKEN_ID"

Response:

{
"id": "1_abc123def4",
"token": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2",
"partnerId": 123456,
"status": 2,
"sessionType": 0,
"sessionDuration": 86400,
"sessionPrivileges": "sview:*,list:*",
"sessionUserId": "",
"hashType": "SHA256",
"description": "My integration token",
"expiry": 0,
"createdAt": 1700000000,
"updatedAt": 1700000000,
"objectType": "KalturaAppToken"
}

appToken.list — List All Tokens​

POST /api_v3/service/appToken/action/list
ParameterTypeRequiredDescription
ksstringYesAdmin KS
filter[statusEqual]intNoFilter by status (2=ACTIVE)
filter[hashTypeEqual]stringNoFilter by hash type
filter[sessionTypeEqual]intNoFilter by session type
filter[idEqual]stringNoFilter by specific token ID
pager[pageSize]intNoResults per page (default 30)
pager[pageIndex]intNoPage number (1-based)
curl -X POST "$KALTURA_SERVICE_URL/service/appToken/action/list" \
-d "ks=$KALTURA_KS" \
-d "format=1" \
-d "filter[statusEqual]=2" \
-d "pager[pageSize]=10"

Response:

{
"objects": [
{
"id": "1_abc123def4",
"partnerId": 123456,
"status": 2,
"sessionType": 0,
"sessionDuration": 86400,
"sessionPrivileges": "sview:*,list:*",
"hashType": "SHA256",
"description": "My integration token",
"expiry": 0,
"createdAt": 1700000000,
"updatedAt": 1700000000,
"objectType": "KalturaAppToken"
}
],
"totalCount": 1,
"objectType": "KalturaAppTokenListResponse"
}

The token field is included in list results only for the account admin.

appToken.update — Modify a Token​

POST /api_v3/service/appToken/action/update
ParameterTypeRequiredDescription
ksstringYesAdmin KS
idstringYesThe AppToken ID
appToken[objectType]stringYesKalturaAppToken
appToken[description]stringNoUpdated description
appToken[sessionDuration]intNoUpdated max session duration
appToken[sessionPrivileges]stringNoUpdated privileges
appToken[sessionUserId]stringNoUpdated fixed user ID

hashType and sessionType are set at creation and locked. To use a different hash algorithm or session type, create a new token.

curl -X POST "$KALTURA_SERVICE_URL/service/appToken/action/update" \
-d "ks=$KALTURA_KS" \
-d "format=1" \
-d "id=$APP_TOKEN_ID" \
-d "appToken[objectType]=KalturaAppToken" \
-d "appToken[description]=Updated integration token" \
-d "appToken[sessionDuration]=43200"

Response: The updated KalturaAppToken object:

{
"id": "1_abc123def4",
"partnerId": 123456,
"status": 2,
"sessionType": 0,
"sessionDuration": 43200,
"sessionPrivileges": "sview:*,list:*",
"hashType": "SHA256",
"description": "Updated integration token",
"createdAt": 1700000000,
"updatedAt": 1700001000,
"objectType": "KalturaAppToken"
}

appToken.delete — Revoke a Token​

POST /api_v3/service/appToken/action/delete
ParameterTypeRequiredDescription
ksstringYesAdmin KS
idstringYesThe AppToken ID to delete
curl -X POST "$KALTURA_SERVICE_URL/service/appToken/action/delete" \
-d "ks=$KALTURA_KS" \
-d "format=1" \
-d "id=$APP_TOKEN_ID"

Response: Empty response on success. The token's status changes to 3 (DELETED).

Immediately revokes the token. Existing KS sessions already issued from this token remain valid until their TTL expires; revoke those with session.end if needed.