Skip to main content

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

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

It’s important to understand the difference between these two identifiers.
FieldDescriptionExample
externalIdYour app’s user identifieruser_abc123
idGetProfile’s internal UUID550e8400-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:
// 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)