Requires
crew:compliance:read. Authenticated with your API key as a Bearer token over TLS; reads are not signed. It’s a read-only POST with an empty JSON body.What feeds compliance
Three kinds of requirement are checked, and each shows up in the response:- Role certificates (
source: "explicit") — the specific certificates the crew member’s position requires (e.g. Advanced Fire Fighting for a senior role). - STCW basic safety training (
source: "stcw") — the standard safety modules (Personal Survival, Fire Prevention, First Aid, Personal Safety…), each with its own status and expiry. - Medical (
source: "medical") — the ENG1 (or equivalent) seafarer medical: its fitness category and expiry. CrewPass never exposes the doctor or clinic.
Get a compliance snapshot
cURL
?vessel_id=<ves_…>
(from their fleet row) so the snapshot is for the right position.
Response
Reading the result
Start withoverall_status:
overall_status | Meaning |
|---|---|
compliant | Everything met, nothing expiring within 90 days. |
at_risk | All met, but at least one requirement expires soon. |
non_compliant | At least one requirement is missing, expired, or rejected. |
no_role | The crew member has no assigned role to check against. |
requirements[]is the actionable list — each role/STCW/medical requirement with itsstatus(met·expiring·expired·missing·pending), thedocument_idthat satisfies it (for role certificates), anddays_until_expiry.stcwbreaks out the basic-safety modules and overall percentage.medicalgives the fitness category and expiry only.
overall_status is
non_compliant, or at_risk with a next_expiry_date inside your renewal window.
Next
- Documents & downloads — pull the certificate behind a requirement.
- Webhooks — get a
crew.compliance.changedevent instead of polling.