---
title: List User Profiles
url: https://docs.kaltura.com/docs/events-collaboration/user-profile-api/user-profile-list-user-profiles
---

## List User Profiles

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

```json
{
  "filter": {
    "appGuidIn": ["app-guid"],
    "attendanceStatus": "registered"
  },
  "pager": {
    "offset": 0,
    "limit": 100
  },
  "orderBy": "-createdAt",
  "includeTotalCount": true
}
```

Deleted profiles are **always excluded** from list results — this is hardcoded and cannot be overridden with a status filter.

### 10.1 Filter Fields

All filter fields are optional. Provided fields are AND'd together.

| Field | Type | Description |
|-------|------|-------------|
| `idIn` | string[] | Filter by profile IDs. Invalid IDs silently ignored. |
| `appGuidIn` | string[] | Filter by app GUIDs |
| `userIdIn` | string[] | Filter by user IDs. Email addresses (containing `@`) are matched case-insensitively. Non-email IDs are matched case-sensitively. |
| `status` | string | `enabled` or `disabled` (deleted always excluded) |
| `attendanceStatus` | string | Filter by current attendance status |
| `regOriginIn` | string[] | Filter by registration origins |
| `previousAttendanceStatus` | string | Filter by previous status |
| `userRegistrationType` | string | Filter by requested attendance type |
| `attendanceType` | string | Filter by confirmed attendance type |
| `allowedAttendanceType` | string | Filter by allowed attendance type |
| `createdAtGreaterThanOrEqual` | string | ISO 8601 minimum creation date |
| `createdAtLessThanOrEqual` | string | ISO 8601 maximum creation date |
| `updatedAtGreaterThanOrEqual` | string | ISO 8601 minimum update date |
| `updatedAtLessThanOrEqual` | string | ISO 8601 maximum update date |

> **Deprecated:** The `regOrigin` (singular) filter field still works but is superseded by `regOriginIn` (array). If both are provided, `regOriginIn` takes precedence.

### 10.2 Pager

| Field | Type | Default | Description |
|-------|------|---------|-------------|
| `offset` | integer | 0 | Number of records to skip |
| `limit` | integer | 50 | Maximum records to return |

### 10.3 Sorting

Use `orderBy` with a field name. Prefix with `-` for descending order:

- `"createdAt"` — oldest first
- `"-createdAt"` — newest first
- `"-updatedAt"` — recently updated first

### 10.4 Total Count

Set `"includeTotalCount": true` (default) to include the total number of matching records. Set to `false` for faster queries — `totalCount` returns `-1` when disabled.

**Response:**

```json
{
  "objects": [
    {
      "id": "...",
      "appGuid": "...",
      "userId": "user@example.com",
      "profileData": {"name": "Jane Doe"},
      "eventData": {"attendanceStatus": "registered"},
      "objectType": "UserProfile",
      ...
    }
  ],
  "totalCount": 250
}
```

```bash
# List all registered users for an event app
curl -X POST "$KALTURA_USER_PROFILE_URL/user-profile/list" \
  -H "Authorization: Bearer $KALTURA_KS" \
  -H "Content-Type: application/json" \
  -d "{
    \"filter\": {
      \"appGuidIn\": [\"$APP_GUID\"],
      \"attendanceStatus\": \"registered\"
    },
    \"pager\": {\"offset\": 0, \"limit\": 100},
    \"orderBy\": \"-createdAt\"
  }"
```
