Skip to main content
Restricted — requires a sponsorship program. See the Sponsorship API overview for access and auth.
Attaches an existing DSS member to a sponsored Premium seat. DSS does not create a new account here. If the email is unknown, the call returns account_requires_signup (409) with signup_url — send the member through normal signup, then Connect. When the account already exists: attaches the vessel by IMO (optional), turns on Premium, and starts billing the seat to you. The member is active on success.

Request body

Response

201 Created when a new seat is provisioned; 200 OK on an idempotent replay (an open seat already existed for this email — see below).
vessel_resolved: false is not an error. A 7-digit IMO that DSS hasn’t seen yet still yields a provisioned, Premium seat. Pass vessel_name to help, and DSS resolves and back-fills tracking asynchronously. Poll the seat on the roster if you want to confirm resolution.

Idempotency

Provisioning is idempotent per email within your program:
  • If the email already holds an open seat (active), the call returns that existing seat with 200 and does not create a second seat or a second bill.
  • Otherwise a new seat is created and returned with 201.
You may also send an optional Idempotency-Key header for your own tracing/retry safety:
The header is accepted for convenience, but the email is the primary idempotency key — an open seat for the same email is never duplicated, regardless of the header value.

Members with no vessel

vessel_imo is optional. A member who already has a DSS account but is between jobs, shoreside, or on a hull with no IMO still gets Premium — provision them without an IMO:
The seat comes back with vessel_resolved: false and no vessel_id. Everything else works normally: the member is Premium immediately and is billed to you from that moment. When they join a vessel, re-submit the same email with the IMO. That is treated as a vessel move — it attaches the vessel and starts tracking, and does not create a second seat or a second charge.
vessel_resolved: false also comes back when an IMO is supplied that we cannot validate. We do not create a placeholder vessel for an IMO we could not confirm, because tracking a member against a hull that may not exist is worse than reporting the vessel as unresolved. Re-submit once the IMO is correct.
Omitting vessel_imo is not the same as sending a wrong one. A malformed value is rejected with 422 rather than ignored — silently dropping a typo’d IMO would leave the member with no vessel and no signal that anything went wrong.

Errors