Sign in
In the admin: open Sign in, enter your email and password, and select Sign in. If you do not have an account, select Create an account. With the API: send a flat JSON body. The response contains an access token and a refresh token. Keep both private; send the access token as a bearer credential on admin requests.Forgot your password
In the admin: select Forgot password? on Sign in. On the Forgot your password? page, enter the email you sign in with and select Send reset link. The confirmation is the same for every email address: it does not reveal whether an account exists. The link works once and expires after one hour. Too many requests show an inline error; you can request up to five links per hour from one IP address. With the API: this is a public request; it needs no bearer token. A valid request returns202 Accepted with an empty body, even when the email is unknown. A malformed email returns 422; exceeding the limit returns 429.
Reset your password
In the admin: open the emailed link. It goes tohttps://app.member.dev/reset-password#<token>. The token is after #, in the URL fragment; the page removes it from the address bar after opening. On Choose a new password, enter a password of at least eight characters, confirm it, and select Reset password. If the link has expired or was already used, select Request a new link. A password validation error leaves the link valid so you can correct the password and retry. After success, all existing sessions are signed out; select Sign in and use the new password. The reset itself does not sign you in.
With the API: copy only the token after # from the emailed link. Send it with the new password in a flat body. Success is 204 No Content. An unknown, expired, or used token returns 410 with code password_reset_expired; a short password returns 422 with a pointer to /password and leaves the token available for a retry. Too many attempts return 429.
Requesting another link does not cancel an earlier one. Redeeming any one of them expires the rest.
errors array. For example, an expired link returns an error with status: "410" and code: "password_reset_expired"; validation errors identify the field with source.pointer. See Error handling.
From the CLI, use mio auth forgot-password --email <addr>, then mio auth reset-password --token '<the emailed link>', and then mio login. The reset command prompts for the new password or reads MIO_PASSWORD; it sends no API key. See Forgot your password?. These commands land in the mio release after v0.24.0.
Reference: Reset Password
Change a password while signed in
In the admin: open Account in the sidebar, then the Password section. Enter Current password, New password (at least eight characters), and Confirm new password. Select Change password. The admin shows Password changed and signs out your other sessions. If you no longer know the current password, select Reset via email instead. See Your account and team. With the API: send your platform access token and a flat body. A successful200 response is a fresh TokenResponse with access_token, refresh_token, expires_in, and token_type. Replace your stored tokens with the new pair; older refresh tokens stop working. In the admin browser, the refresh token is rotated in an HttpOnly cookie. Older access tokens expire on their normal short schedule.
422 with code incorrect_password. An invalid new password returns 422 with a pointer to /new_password. A missing or invalid access token returns 401; a team API key returns 403; too many attempts return 429.
Reference: Change Password