Skip to main content
This guide covers the admin API for registering and managing external-login providers. Hub members use these providers to authenticate — see Log in with an external provider for the member-facing flow. Requires: a real user (JWT) session with team_owner role. API keys cannot manage provider configs.

The callback URL

Every provider config exposes a callback_url in its read response. This is the URL you must register in the external provider’s developer console as an allowed redirect URI. The callback URL has this form:
Register this exact URL in the provider console (Google Cloud Console, Facebook App Dashboard, your company IdP, etc.) before testing the login flow.

Register a Google provider

Google is the only provider that can auto-create member accounts on first login without additional configuration (verified email required). A generic_oidc provider can also auto-create accounts for new members whose email belongs to a company domain the hub has verified — see the Verified-Domain SSO guide. Facebook and generic_oauth2 never auto-create accounts regardless of domain configuration. Prerequisites:
  • A Google Cloud project with the OAuth consent screen configured.
  • OAuth 2.0 credentials (client ID + secret) for a “Web application”.
  • The callback_url from Step 1 registered as an “Authorised redirect URI” in Google Console.
Response (201):
client_secret is write-only — it is AES-256-GCM encrypted at rest and never returned. The client_secret_set: true flag confirms a secret is stored. Google’s authorization, token, and JWKS endpoints are hardcoded platform constants — you do not supply them.

Register a Facebook provider

Facebook members cannot auto-create accounts. They must connect their Facebook identity while already logged in, then use Facebook to log in on subsequent visits. Prerequisites:
  • A Facebook App (facebook.com/developers) with “Facebook Login” product added.
  • The callback_url added to “Valid OAuth Redirect URIs” in the Facebook App Dashboard.
Facebook’s Graph API endpoints are hardcoded platform constants.

Register a generic OIDC provider

Use this for company SSO (Okta, Auth0, Azure AD, Keycloak, etc.) or any standards-compliant OIDC Identity Provider. By default, generic OIDC members cannot auto-create accounts — they must connect while logged in first. Exception: if the hub has a Verified Domain configured, new members whose email matches a verified domain can have accounts created automatically on first login (connect-first: the platform never merges into an existing account). Prerequisites:
  • The callback_url registered as a redirect URI in your IdP.
  • Your IdP’s discovery URL (typically https://your-idp.example.com/.well-known/openid-configuration).
Security constraints enforced at write time:
  • issuer must not be https://accounts.google.com or any other platform-trusted issuer. Generic configs claiming a trusted issuer are rejected (prevents token-forging attacks).
  • All URL fields (discovery_url, authorize_url, token_url, userinfo_url, jwks_uri) are SSRF-validated: HTTPS-only, no loopback, no private IPs, no cloud metadata endpoints.
You can supply individual endpoint URLs (authorize_url, token_url, jwks_uri) instead of discovery_url if your IdP does not expose a discovery document. If discovery_url is supplied, it takes precedence and the individual fields are populated from it at runtime — supply only the ones your IdP does not include in its discovery document.

Register a generic OAuth2 provider

Use for providers that do not support OIDC (no id_token) but expose a userinfo-style endpoint.
claim_map is optional. Use it when the provider’s userinfo response uses non-standard claim names. Keys are the standard member.dev field names (sub, email, email_verified, name); values are the corresponding claim names in the provider’s userinfo response. The sub field is required.

Provider config attributes reference

issuer, discovery_url, authorize_url, token_url, userinfo_url, jwks_uri, scopes, and claim_map are ignored for pre-canned providers (google, facebook) — their endpoints are hardcoded platform constants.

List providers

Returns all providers including disabled ones.

Retrieve a provider


Update a provider (PATCH)

PATCH is partial — only supply the fields you want to change.

Delete a provider

Soft-deletes the config. Existing member logins linked to this provider will fail (no existing link to resolve against). Returns 204 No Content.

Common errors