---
title: Update a User Profile
url: https://docs.kaltura.com/docs/events-collaboration/user-profile-api/user-profile-update-a-user-profile
---

## Update a User Profile

```
POST /api/v1/user-profile/update
Content-Type: application/json
Authorization: Bearer &lt;KS&gt;
```

```json
{
  "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:

```json
{
  "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.

```bash
# 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).
