Skip to main content
View as Markdown

User CRUD - Content Management

User CRUD​

Create a User​

POST /service/user/action/add
curl -X POST "$KALTURA_SERVICE_URL/service/user/action/add" \
-d "ks=$KALTURA_KS" \
-d "format=1" \
-d "user[objectType]=KalturaUser" \
-d "user[id]=jane.doe@example.com" \
-d "user[firstName]=Jane" \
-d "user[lastName]=Doe" \
-d "user[email]=jane.doe@example.com" \
-d "user[type]=0"
ParameterTypeRequiredDescription
user[objectType]stringYesAlways KalturaUser
user[id]stringYesUnique user identifier
user[firstName]stringNoFirst name
user[lastName]stringNoLast name
user[email]stringNoEmail address
user[type]integerNo0 = USER (default), 200 = GROUP
user[isAdmin]booleanNoGrant admin privileges
user[roleIds]stringNoComma-separated role IDs to assign
user[tags]stringNoComma-separated tags

Response: Full KalturaUser object with status=1 (ACTIVE):

{
"id": "jane.doe@example.com",
"partnerId": 976461,
"screenName": "Jane Doe",
"fullName": "Jane Doe",
"firstName": "Jane",
"lastName": "Doe",
"email": "jane.doe@example.com",
"type": 0,
"status": 1,
"isAdmin": false,
"roleIds": "",
"roleNames": "",
"loginEnabled": false,
"tags": "",
"createdAt": 1718467200,
"updatedAt": 1718467200,
"objectType": "KalturaUser"
}

Get a User​

curl -X POST "$KALTURA_SERVICE_URL/service/user/action/get" \
-d "ks=$KALTURA_KS" \
-d "format=1" \
-d "userId=jane.doe@example.com"
ParameterTypeRequiredDescription
userIdstringYesUser ID to retrieve

Returns the full KalturaUser object. Returns INVALID_USER_ID if the user does not exist.

List Users​

curl -X POST "$KALTURA_SERVICE_URL/service/user/action/list" \
-d "ks=$KALTURA_KS" \
-d "format=1" \
-d "filter[objectType]=KalturaUserFilter" \
-d "filter[statusEqual]=1" \
-d "filter[orderBy]=-createdAt" \
-d "pager[pageSize]=50" \
-d "pager[pageIndex]=1"

Filter fields (KalturaUserFilter):

FieldDescription
idEqualExact user ID match
idInComma-separated list of user IDs
statusEqualFilter by status (0, 1, 2)
statusInComma-separated status values
typeEqualFilter by type (0 = USER, 200 = GROUP)
isAdminEqualFilter by admin flag
firstNameStartsWithFirst name prefix match
lastNameStartsWithLast name prefix match
emailStartsWithEmail prefix match
tagsMultiLikeOrTags (OR match)
roleIdsEqualFilter by assigned role ID
loginEnabledEqualFilter by login-enabled status
createdAtGreaterThanOrEqualUnix timestamp minimum
createdAtLessThanOrEqualUnix timestamp maximum
orderBy+createdAt, -createdAt, +updatedAt, -updatedAt

Response:

{
"totalCount": 42,
"objects": [
{
"id": "jane.doe@example.com",
"firstName": "Jane",
"lastName": "Doe",
"status": 1,
"objectType": "KalturaUser"
}
],
"objectType": "KalturaUserListResponse"
}

Update a User​

curl -X POST "$KALTURA_SERVICE_URL/service/user/action/update" \
-d "ks=$KALTURA_KS" \
-d "format=1" \
-d "userId=jane.doe@example.com" \
-d "user[objectType]=KalturaUser" \
-d "user[firstName]=Janet" \
-d "user[title]=Engineering Lead" \
-d "user[company]=Acme Corp"
ParameterTypeRequiredDescription
userIdstringYesUser to update
user[objectType]stringYesAlways KalturaUser
user[firstName]stringNoUpdated first name
user[lastName]stringNoUpdated last name
user[email]stringNoUpdated email
user[roleIds]stringNoUpdated role assignments
user[isAdmin]booleanNoUpdate admin status
user[tags]stringNoUpdated tags

Fields not included remain unchanged. The id field cannot be changed after creation.

Response: Full updated KalturaUser object.

Delete a User​

curl -X POST "$KALTURA_SERVICE_URL/service/user/action/delete" \
-d "ks=$KALTURA_KS" \
-d "format=1" \
-d "userId=jane.doe@example.com"
ParameterTypeRequiredDescription
userIdstringYesUser ID to delete

Soft-deletes the user (status changes to 2). The user object is returned with the updated status.

Cascade behavior: Deleting a KalturaUser soft-deletes all associated User Profiles across all app instances. Delete user profiles explicitly first if you need to control the order.