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

# Profiles

> Understanding user profiles in GetProfile

## What is a Profile?

A profile is GetProfile's representation of a user. It stores:

* **Identity**: External ID (your app's user identifier)
* **Traits**: Structured attributes extracted from conversations
* **Summary**: AI-generated natural language description
* **Metadata**: Creation time, last update, summary version

## Profile Structure

```typescript theme={null}
interface Profile {
  id: string; // Internal UUID
  externalId: string; // Your app's user ID
  summary: string | null;
  summaryVersion: number;
  summaryUpdatedAt: Date | null;
  createdAt: Date;
  updatedAt: Date;
}
```

## External ID vs Profile ID

<Warning>
  It's important to understand the difference between these two identifiers.
</Warning>

| Field        | Description                | Example                                |
| ------------ | -------------------------- | -------------------------------------- |
| `externalId` | Your app's user identifier | `user_abc123`                          |
| `id`         | GetProfile's internal UUID | `550e8400-e29b-41d4-a716-446655440000` |

When making requests to the proxy, you always use your **external ID** via the `X-GetProfile-Id` header. GetProfile maps this to the internal profile ID automatically.

## Profile Creation

Profiles are created automatically when a user makes their first request:

```typescript theme={null}
// First request with a new user ID
const response = await client.chat.completions.create(
  {
    model: "gpt-5",
    messages: [{ role: "user", content: "Hello!" }],
  },
  {
    headers: {
      "X-GetProfile-Id": "new-user-123", // Profile created automatically
    },
  }
);
```

## Profile Summary

The summary is a natural language description of the user, generated by analyzing their traits and memories:

```
Alex is an experienced software engineer who prefers concise,
technical explanations. They work primarily with Python and
have been exploring distributed systems.
```

Summaries are regenerated when:

* High-priority traits change (name, language, expertise)
* Enough time has passed since the last update (configurable)
