voyager

Voyager Auth Register

Changed on

Register this install for the signed-in user and one workspace; returns the device secret once.

Several eligible workspaces and no team_id: 200 {needs_team, teams} and nothing is written; the client asks and posts again. Any plan may register (no payment gate). A first Voyager use gets the user's personal workspace (VOY-565), and no team_id signs in to the default one instead of asking: Personal, unless the user holds a seat in exactly one Team, or Personal has no plan and never will while another workspace has one they can use (voyager_workspaces.membership.default_workspace). In a Voyager-billed workspace with auto-seating on, the member is seated after the response, never on the sign-in's critical path. An optional X-Voyager-Machine-Id header and the client IP are recorded on the registration for the Free plan's one-per-machine rule; neither can fail it.

post/voyager/auth/register

Request

  • Base URL
    https://api.moda.app/v1
  • URL
    https://api.moda.app/v1/voyager/auth/register
  • Auth
    HTTP bearer

Headers

Moda-Version'2026-04-12' | '2026-05-01'
Example:2026-05-01

Calendar-dated API version pin. New integrations should pin 2026-05-01 to opt into the newest response shapes. For back-compat the server also accepts requests with no header and resolves them to the current default (today: 2026-04-12); that default advances on each sunset date. Any unsupported value returns 400 unsupported_version.

Request body

id_tokenstring required
device_idstring uuid required

Random UUID v4 the install generated once and keeps.

device_namestring required
platform'darwin' | 'win32' | 'linux' required
app_versionstring required
team_idstring nullable

Workspace to bind (team_ id); required when needs_team.

sign_in_method'browser' | 'email_code'

How this sign-in was made: the browser (loopback) sign-in, or the CLI's email-code sign-in (VOY-1117).

Example request

{
  "platform": "darwin"
}

Response

Successful Response

object required

Changes