> ## Documentation Index
> Fetch the complete documentation index at: https://docs.userpilot.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Data Lookups

> The Lookups APIs allow you to retrieve metadata about various entities in your Userpilot account, such as user properties, company properties, features,.

The Lookups APIs allow you to retrieve metadata about various entities in your Userpilot account, such as user properties, company properties, features, events, and more. These endpoints help you understand the structure and available fields in your exported data.

***

## User & Company

Endpoints for retrieving user and company metadata, as well as segments.

| Endpoint                                               | Description              |
| ------------------------------------------------------ | ------------------------ |
| `/api/v1/analytics/exports/lookups/user_properties`    | Get user properties      |
| `/api/v1/analytics/exports/lookups/company_properties` | Get company properties   |
| `/api/v1/analytics/exports/lookups/segments`           | Get segments (paginated) |

***

## Features & Events

Endpoints for retrieving features, events, and event property metadata.

| Endpoint                                              | Description                                             |
| ----------------------------------------------------- | ------------------------------------------------------- |
| `/api/v1/analytics/exports/lookups/features_events`   | Get features & events                                   |
| `/api/v1/analytics/exports/lookups/events_properties` | Get trackable events' properties/attributes (paginated) |

***

## Experiences & UI

Endpoints for retrieving experiences, UI elements, surveys, resource center modules, and checklists.

| Endpoint                                                    | Description                    |
| ----------------------------------------------------------- | ------------------------------ |
| `/api/v1/analytics/exports/lookups/flows`                   | Get flows (experiences)        |
| `/api/v1/analytics/exports/lookups/banners`                 | Get banners                    |
| `/api/v1/analytics/exports/lookups/embeds`                  | Get embeds (banners and cards) |
| `/api/v1/analytics/exports/lookups/spotlights`              | Get spotlights                 |
| `/api/v1/analytics/exports/lookups/surveys`                 | Get surveys (with modules)     |
| `/api/v1/analytics/exports/lookups/resource_center_modules` | Get resource center modules    |
| `/api/v1/analytics/exports/lookups/checklists`              | Get checklists (with tasks)    |

***

## How to Use

All endpoints require authentication via your API key:

```bash theme={null}
curl --location 'https://appex.userpilot.io/api/v1/analytics/exports/lookups/user_properties' \
--header 'Authorization: Token {{API_KEY}}'
```

### Example Response

```json theme={null}
[
  {
    "display_name": "URL",
    "key": "url",
    "data_type": "string",
    ...
  }
]
```

## Pagination

Some endpoints (such as `events_properties` and `segments`) are paginated. The response includes a `cursor` object in the `metadata` section:

* `after`: Cursor for fetching the next set of results.
* `before`: Cursor for fetching previous results (if available).
* `limit`: Number of results per request.
* `total_count`: Total number of available records.

### Example Paginated Request

```bash theme={null}
curl --location 'https://appex.userpilot.io/api/v1/analytics/exports/lookups/events_properties?after_cursor=...' \
--header 'Authorization: Token {{API_KEY}}'
```

### Example Paginated Response

```json theme={null}
{
    "data": [ ... ],
    "metadata": {
        "cursor": {
            "after": "...",
            "before": null
        },
        "limit": 50,
        "total_count": 53
    }
}
```

<Note>
  * Always check if `cursor.after` exists in the response before making the next request.
  * If `cursor.after` is `null`, you have reached the last page of data.
  * To modify the number of results per request, use the `limit` parameter in your query string (default is 50).
</Note>
