Skip to main content
Once you have a crew_unique_id (from your crew list), read their profile. name and rank always return; four further blocks are each gated on their own scope and the crew member’s consent for it — a block is simply absent from the response when either is missing.
Requires crew:profile:read. The contact block (email, phone, country_code) additionally requires crew:contact:read; the professional block (nationality, languages, skills, bio, years_experience, profile_photo_url) requires crew:professional:read; employment_history requires crew:experience:read; the personal block (date_of_birth, address, passport, visas) requires crew:personal:read. crew:profile:full:read is a legacy alias for crew:experience:read + crew:personal:read together. Each also needs the crew member’s consent. Authenticated with your API key as a Bearer token over TLS; reads are not signed.

Get a profile

cURL
Response

Base fields (always)

name, rank. Everything else sits in one of the four scope-gated blocks below.

Contact block (crew:contact:read)

email, phone, country_code. 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.

Professional block (crew:professional:read)

nationality, languages, skills, years_experience, bio and profile_photo_url. This is the old base profile in full, minus name / rank (which need only crew:profile:read) and the contact fields above.

Employment history (crew:experience:read)

employment_history only. Each 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.

Personal block (crew:personal:read)

date_of_birth, address, passport, visas. address, when present, 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. full_profile is true only when both crew:experience:read and crew:personal:read are effective for this crew member (the old crew:profile:full:read bundle — employment history plus the personal block). When a block isn’t effective, its fields are simply absent — the rest of the profile still returns. Don’t treat a missing field as an error.

Photo

profile_photo_url is part of the professional block: it’s only set when crew:professional:read is effective, and 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:
It streams the image, or returns 404 if the crew member has no photo, or crew:professional:read isn’t effective.

Next