Update a User Profile - User Profile
Update a User Profile
POST /api/v1/user-profile/update
Content-Type: application/json
Authorization: Bearer <KS>
{
"id": "profile-id",
"eventData": {
"attendanceStatus": "attended"
},
"profileData": {
"name": "Jane Doe",
"company": "Updated Corp"
}
}
| Field | Type | Required | Description |
|---|---|---|---|
id | string | Yes | Profile ID to update |
status | string | No | Update status |
profileData | object | No | Replace profile data |
loginData | object | No | Update login tracking |
eventData | object | No | Update attendance data |
appData | object | No | Update app-specific data |
The partnerId, appGuid, userId, and timestamp fields cannot be modified.
Response: The updated full user profile object:
{
"id": "6620a1b2c3d4e5f6a7b8c9d0",
"partnerId": 123456,
"appGuid": "app-guid-from-registry",
"userId": "user@example.com",
"status": "enabled",
"profileData": {
"name": "Jane Doe",
"company": "Updated Corp"
},
"eventData": {
"regOrigin": "registration",
"attendanceStatus": "attended",
"previousAttendanceStatus": "confirmed",
"statusUpdateTime": "2025-06-16T14:00:00.000Z",
"firstAttendedStatusTime": "2025-06-16T14:00:00.000Z",
"isRegistered": false
},
"appData": {},
"createdAt": "2025-06-15T10:30:00.000Z",
"updatedAt": "2025-06-16T14:00:00.000Z",
"objectType": "UserProfile"
}
Merge Behavior
eventData and loginData are shallow-merged with the existing values. Updating eventData.attendanceStatus preserves the existing regOrigin, userRegistrationType, etc. You only need to send the fields you want to change.
profileData and appData are replaced entirely — send the complete object, not just the fields you want to change.
# Mark a user as "attended"
curl -X POST "$KALTURA_USER_PROFILE_URL/user-profile/update" \
-H "Authorization: Bearer $KALTURA_KS" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"$PROFILE_ID\",
\"eventData\": {
\"attendanceStatus\": \"attended\"
}
}"
When attendanceStatus changes, previousAttendanceStatus and statusUpdateTime are automatically updated. On the first transition to attended, participated, or participatedPostEvent, firstAttendedStatusTime is recorded (once only).