# Get Profile
> Source: /api-reference/members/me/profile/get-profile
> Retrieve the authenticated member profile
> Endpoint: GET /members/me/profile

## Overview [#overview]

Returns the member's profile information including:
- Personal details (date of birth, gender, nationality)
- Social media links
- Travel preferences (airlines, seat preferences, frequent flyer programs)
- Bio and timezone settings
- Language preference

<Note>
  The profile is automatically created when a member is provisioned via `/members/me/auth/validate`.
  If the member has not set any profile fields, an empty profile with just `updatedAt` is returned.
</Note>

## Prerequisites [#prerequisites]

The member must be provisioned first by calling `POST /members/me/auth/validate`. 

If the member is not provisioned, you'll receive a 403 error:

```json
{
  "statusCode": 403,
  "error": "MEMBER_NOT_PROVISIONED",
  "message": "Member not provisioned. Call POST /members/me/auth/validate first."
}
```

## Authentication [#authentication]

Requires a valid Clerk JWT token in the Authorization header.

<RequestExample>

```bash cURL
curl -X GET "http://localhost:3000/v1/members/me/profile" \
  -H "Authorization: Bearer YOUR_CLERK_JWT"
```

```typescript TypeScript
const response = await fetch('http://localhost:3000/v1/members/me/profile', {
  method: 'GET',
  headers: {
    'Authorization': 'Bearer YOUR_CLERK_JWT'
  }
});

const profile = await response.json();
```

```javascript Bruno
// From: /bruno/Members (Surface)/Me/Profile/Get Profile.bru
GET {{host}}/members/me/profile
Authorization: Bearer {{clerkJwt}}
```

</RequestExample>

## Response [#response]

Returns the member's profile with comprehensive preference settings. Each field represents a different aspect of the member's travel and lifestyle preferences that can be used to personalize their Journey experience.

### Personal Information [#personal-information]

<ResponseField name="dateOfBirth" type="string" optional>
  Date of birth in YYYY-MM-DD format
</ResponseField>

<ResponseField name="gender" type="string" optional>
  Gender identity
</ResponseField>

<ResponseField name="nationality" type="string" optional>
  Nationality
</ResponseField>

<ResponseField name="timezone" type="string" optional>
  IANA timezone (e.g., "America/Los_Angeles")
</ResponseField>

<ResponseField name="language" type="string" optional>
  Preferred language code (ISO 639-1)
</ResponseField>

<ResponseField name="bio" type="string" optional>
  Member biography (max 500 characters)
</ResponseField>

### Social Media Links [#social-media-links]

<ResponseField name="socialLinks" type="object" optional>
  Social media profile links
  
  <Expandable title="properties">
    <ResponseField name="linkedin" type="string" optional>
      LinkedIn profile URL
    </ResponseField>
    
    <ResponseField name="instagram" type="string" optional>
      Instagram handle or URL
    </ResponseField>
    
    <ResponseField name="twitter" type="string" optional>
      Twitter/X handle or URL
    </ResponseField>
    
    <ResponseField name="facebook" type="string" optional>
      Facebook profile URL
    </ResponseField>
  </Expandable>
</ResponseField>

### Travel Preferences [#travel-preferences]

<ResponseField name="travelPreferences" type="object" optional>
  Travel preference settings
  
  <Expandable title="properties">
    <ResponseField name="preferredAirlines" type="string[]" optional>
      List of preferred airline names
    </ResponseField>
    
    <ResponseField name="frequentFlyerPrograms" type="object[]" optional>
      Frequent flyer membership details
      
      <Expandable title="properties">
        <ResponseField name="airline" type="string" required>
          Airline name
        </ResponseField>
        
        <ResponseField name="number" type="string" required>
          Membership number
        </ResponseField>
      </Expandable>
    </ResponseField>
    
    <ResponseField name="seatPreference" type="string" optional>
      Seat preference: "window", "aisle", or "middle"
    </ResponseField>
    
    <ResponseField name="mealPreference" type="string" optional>
      Meal preference
    </ResponseField>
    
    <ResponseField name="travelClass" type="string" optional>
      Preferred travel class: "economy", "premium_economy", "business", or "first"
    </ResponseField>
    
    <ResponseField name="travelCompanions" type="string[]" optional>
      Names of common travel companions
    </ResponseField>
    
    <ResponseField name="passportCountry" type="string" optional>
      Passport country (ISO code)
    </ResponseField>
  </Expandable>
</ResponseField>

### Hotel Stay Preferences [#hotel-stay-preferences]

<ResponseField name="stayPreferences" type="object" optional>
  Hotel stay preferences
  
  <Expandable title="properties">
    <ResponseField name="roomType" type="string" optional>
      Preferred room type
    </ResponseField>
    
    <ResponseField name="floorPreference" type="string" optional>
      Preferred floor level
    </ResponseField>
    
    <ResponseField name="bedType" type="string" optional>
      Preferred bed type
    </ResponseField>
    
    <ResponseField name="pillowType" type="string" optional>
      Preferred pillow type
    </ResponseField>
    
    <ResponseField name="roomLocation" type="string" optional>
      Preferred room location
    </ResponseField>
    
    <ResponseField name="smokingRoom" type="boolean" optional>
      Whether smoking room is preferred
    </ResponseField>
    
    <ResponseField name="accessibilityNeeds" type="string[]" optional>
      List of accessibility requirements
    </ResponseField>
    
    <ResponseField name="minibarStocked" type="boolean" optional>
      Whether minibar should be stocked
    </ResponseField>
    
    <ResponseField name="newspaperDelivery" type="string" optional>
      Preferred newspaper for delivery
    </ResponseField>
  </Expandable>
</ResponseField>

### Dining Preferences [#dining-preferences]

<ResponseField name="diningPreferences" type="object" optional>
  Dining and food preferences
  
  <Expandable title="properties">
    <ResponseField name="dietaryRestrictions" type="string[]" optional>
      List of dietary restrictions
    </ResponseField>
    
    <ResponseField name="allergies" type="string[]" optional>
      List of food allergies
    </ResponseField>
    
    <ResponseField name="cuisinePreferences" type="string[]" optional>
      Preferred cuisine types
    </ResponseField>
    
    <ResponseField name="mealTiming" type="string" optional>
      Preferred meal timing
    </ResponseField>
    
    <ResponseField name="favoriteRestaurant" type="string" optional>
      Favorite restaurant name
    </ResponseField>
    
    <ResponseField name="favoriteTable" type="string" optional>
      Favorite table or seating preference
    </ResponseField>
  </Expandable>
</ResponseField>

### Experience Preferences [#experience-preferences]

<ResponseField name="experiencePreferences" type="object" optional>
  Experience and activity preferences
  
  <Expandable title="properties">
    <ResponseField name="spaServices" type="string[]" optional>
      Preferred spa services
    </ResponseField>
    
    <ResponseField name="activityInterests" type="string[]" optional>
      Activity and interest preferences
    </ResponseField>
    
    <ResponseField name="specialOccasions" type="object[]" optional>
      Special occasions to remember
      
      <Expandable title="properties">
        <ResponseField name="type" type="string" required>
          Type of occasion (e.g., "birthday", "anniversary")
        </ResponseField>
        
        <ResponseField name="date" type="string" required>
          Date of the occasion
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

### Communication Preferences [#communication-preferences]

<ResponseField name="communicationPrefs" type="object" optional>
  Communication preferences
  
  <Expandable title="properties">
    <ResponseField name="email" type="boolean" optional>
      Email notifications enabled
    </ResponseField>
    
    <ResponseField name="sms" type="boolean" optional>
      SMS notifications enabled
    </ResponseField>
    
    <ResponseField name="push" type="boolean" optional>
      Push notifications enabled
    </ResponseField>
    
    <ResponseField name="language" type="string" optional>
      Preferred communication language
    </ResponseField>
  </Expandable>
</ResponseField>

### Additional Information [#additional-information]

<ResponseField name="additionalInfo" type="object" optional>
  Flexible key-value storage for client-specific data (only returned when `fields=additionalInfo` query parameter is included)
</ResponseField>

<ResponseField name="updatedAt" type="string" required>
  ISO 8601 timestamp of last profile update
</ResponseField>

<ResponseExample>

```json 200 Response - Empty Profile
{
  "updatedAt": "2024-04-20T10:30:00Z"
}
```

```json 200 Response - Complete Profile
{
  "dateOfBirth": "1990-01-15",
  "gender": "male",
  "nationality": "United States",
  "timezone": "America/Los_Angeles",
  "language": "en",
  "bio": "Frequent traveler and points enthusiast who loves discovering unique accommodations around the world.",
  "socialLinks": {
    "linkedin": "https://linkedin.com/in/johndoe",
    "instagram": "@johndoe_travels",
    "twitter": "@johndoe_adventures",
    "facebook": "john.doe.travels"
  },
  "travelPreferences": {
    "preferredAirlines": ["United", "Delta", "American"],
    "frequentFlyerPrograms": [
      {
        "airline": "United",
        "number": "UA123456789"
      },
      {
        "airline": "Delta",
        "number": "DL987654321"
      }
    ],
    "seatPreference": "aisle",
    "mealPreference": "vegetarian",
    "travelClass": "business",
    "travelCompanions": ["Jane Doe", "Bob Smith"],
    "passportCountry": "US"
  },
  "stayPreferences": {
    "roomType": "suite",
    "floorPreference": "high",
    "bedType": "king",
    "pillowType": "memory foam",
    "roomLocation": "city view",
    "smokingRoom": false,
    "accessibilityNeeds": ["hearing accessible", "visual accessible"],
    "minibarStocked": true,
    "newspaperDelivery": "Financial Times"
  },
  "diningPreferences": {
    "dietaryRestrictions": ["vegetarian"],
    "allergies": ["shellfish", "peanuts"],
    "cuisinePreferences": ["Italian", "Japanese", "Mediterranean"],
    "mealTiming": "early dinner",
    "favoriteRestaurant": "Nobu",
    "favoriteTable": "corner table with view"
  },
  "experiencePreferences": {
    "spaServices": ["deep tissue massage", "facial", "aromatherapy"],
    "activityInterests": ["wine tasting", "cultural tours", "hiking", "cooking classes"],
    "specialOccasions": [
      {
        "type": "birthday",
        "date": "1990-01-15"
      },
      {
        "type": "anniversary",
        "date": "2020-06-12"
      }
    ]
  },
  "communicationPrefs": {
    "email": true,
    "sms": true,
    "push": false,
    "language": "en"
  },
  "updatedAt": "2024-04-20T10:30:00Z"
}
```

</ResponseExample>

## Related Endpoints [#related-endpoints]

- [Update Profile](/api-reference/members/me/profile/update-profile) - Update profile fields
- [Validate Auth](/api-reference/members/auth/validate) - Provision member account
