Skip to main content
Read GET /api/config before rendering sign-in options. Successful sign-in returns { token, user, expires }; send the Man0 token as Authorization: Bearer <token> on account requests.

Passkeys

Request /api/auth/passkey/options with { "mode": "create" } or { "mode": "login" }. Keep the returned challenge id and pass options to SimpleWebAuthn’s browser helper.
Here request is your JSON POST helper under https://api.man0.space/api. Registration uses startRegistration and /auth/passkey/register. The browser sends its configured origin; use the origin/RP allowed by the backend.

Email and OAuth

For email, POST { email } to /api/auth/email/start, then POST the returned id and six-digit code to /api/auth/email/verify. For OAuth, open /api/oauth/{provider}/start?origin=<your-origin>&mode=auth in a popup. The callback sends an oauth message with ok and the authentication payload. Check the message origin and close the popup after consuming the result. mode=link uses the profile-linking flow. Telegram is a linking provider. The same OAuth operations also have /api/auth/oauth and /oauth aliases.

Policy acceptance

GET /api/policy returns the current hash, sections and checks. After the user reviews them, POST { policy: hash, terms: true, privacy: true } to /api/consent with the Man0 token. Protected account reads use that token. Workflow writes, media generation and NEAR execution require current consent as well. DELETE /api/auth revokes the authentication session; payment authorization uses a separate Compose spending key.