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

# Read a crew profile

> Contact details, experience, photo, and consented identity fields.

Once you have a `crew_unique_id` (from [your crew list](/guides/crew)), read their
profile. You always get the base profile; sensitive **identity** fields appear
only when the crew member has explicitly consented to share them with you.

<Info>**Requires** `crew:profile:read`. Identity fields additionally require `crew:profile:full:read` **and** the crew member's consent. Authenticated with your API key as a Bearer token over TLS; reads are not signed.</Info>

## Get a profile

```bash cURL theme={null}
curl -sS "$BASE/api/v2/employers/me/crew/crew_001/profile" \
  -H "Authorization: Bearer $CPK_KEY"
```

```json Response theme={null}
{
  "crew_unique_id": "crew_001",
  "name": "Alex Crew",
  "rank": "Chief Engineer",
  "nationality": "British",
  "languages": [{ "language": "English", "proficiency": "Native" }],
  "skills": ["MEOL", "AEC"],
  "years_experience": "12",
  "bio": "…",
  "email": "alex@example.com",
  "phone": "+447700900000",
  "country_code": "GB",
  "profile_photo_url": "https://partners.crewpass.co.uk/api/v2/employers/me/crew/crew_001/photo",
  "employment_history": [
    { "vessel_name": "M/Y Example", "role": "2nd Engineer",
      "started_at": "2022-01-01", "ended_at": "2024-06-01", "source": "self_reported" }
  ],

  "full_profile": true,
  "date_of_birth": "1990-04-12",
  "address": {
    "line1": null, "city": "Chester", "state": "England",
    "country": "GB", "postcode": "CH4 9GN",
    "full_address": "Chester, England, CH4 9GN, GB"
  },
  "passport": { "nationality": "British", "number": "123456789", "expiry": "2030-04-01" },
  "visas": [{ "type": "B1/B2", "country": "USA", "expiry": "2029-01-01" }]
}
```

### Base fields (always)

`name`, `rank`, `nationality`, `languages`, `skills`, `years_experience`, `bio`,
`email`, `phone`, `country_code`, `profile_photo_url`.

`phone` is returned in international (E.164) form, composing the dial code and the
national number (e.g. `+447700900000`). `country_code` is the ISO country code.

### Address

When present, `address` carries the structured parts (`line1`, `line2`, `city`,
`state`, `country`, `postcode`) plus `full_address`, a single-line composed
address. A crew member who supplied only a city/postcode (no street) will have
`line1: null` but a populated `full_address` — read `full_address` for display.

### Employment history `source`

Each employment row's `source` is either `self_reported` (the crew member entered
it) or `employer_verified` (an employer has confirmed it). It reflects the
verification level, not where the record was entered.

### Identity fields (consent + `full_profile: true`)

`date_of_birth`, `address`, `passport`, `visas`, and `employment_history`. When the
crew member hasn't consented to identity sharing, `full_profile` is `false` and
these fields are simply absent — the rest of the profile still returns. Don't treat
a missing identity field as an error.

## Photo

`profile_photo_url` points at a CrewPass-hosted photo proxy (never a raw storage
link). Fetch it the same way as any other `GET`, with the Bearer header:

```
GET /api/v2/employers/me/crew/crew_001/photo
```

It streams the image, or returns `404` if the crew member has no photo.

## Next

* [Documents & downloads](/guides/documents)
* [Check compliance](/guides/compliance)
