Discover auth methods for an email

Overview

Email-first auth-method discovery for the login form. Given an email, it returns which sign-in methods the user can use (password and/or jumpcloud) and their preferred method. It also returns a JumpCloud SSO redirect URL when SSO is available. Unknown emails always return ["password"] so the endpoint cannot be used to enumerate accounts.

Prerequisites

  • This is a public endpoint — no authentication required.

Base URL

EnvironmentURL
Productionhttps://production-api.shoutaboutus.com
Developmenthttps://development-api.shoutaboutus.com

Endpoint

POST /api/v1/auth/discover

Authentication

  • No bearer token required.
  • This is a public route with no authentication; throttled at 10/min per IP.

Rate limit

  • 10 requests/min per IP.

Request body

  • Body:
FieldTypeRequiredDescription
emailstringyesemail rule
{
  "email": "[email protected]"
}

Response

  • data.methods (string[]) — subset/ordering of ["password", "jumpcloud"]. If sso_required, exactly ["jumpcloud"]; otherwise built from canUsePassword/canUseJumpCloud, falling back to ["password"] if empty. Unknown email falls back to ["password"].
  • data.preferred (string) — user.preferred_auth_method or "password" fallback ("password" for unknown email)
  • data.sso_url (string|null) — the absolute https://<base>/api/v1/auth/sso/jumpcloud/redirect URL when jumpcloud is in methods, else null

200 Both methods available · 200

{
  "data": {
    "methods": [
      "password",
      "jumpcloud"
    ],
    "preferred": "password",
    "sso_url": "https://production-api.shoutaboutus.com/api/v1/auth/sso/jumpcloud/redirect"
  }
}

200 SSO-only user · 200

{
  "data": {
    "methods": [
      "jumpcloud"
    ],
    "preferred": "jumpcloud",
    "sso_url": "https://production-api.shoutaboutus.com/api/v1/auth/sso/jumpcloud/redirect"
  }
}

200 Unknown email (no enumeration) · 200

{
  "data": {
    "methods": [
      "password"
    ],
    "preferred": "password",
    "sso_url": null
  }
}

Errors

StatusMeaning
422The request failed validation — the response names the fields
500Unexpected server error

Example request

curl --request POST \
  --url "https://production-api.shoutaboutus.com/api/v1/auth/discover" \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --data '{"email": "[email protected]"}'

Did this page help you?