Skip to main content
Authsome ships with 45 bundled providers. If you need an internal API, niche SaaS, or a service that isn’t bundled yet, you can write a JSON definition and register it.

Generate a provider JSON for me. Paste this into Claude, Cursor, or any coding agent.

Open in Cursor

Step 1: Research the service

Find the authentication mechanism:
  • OAuth2? Note the authorization_url, token_url, supported scopes, and whether the provider supports PKCE, the device code flow, or Dynamic Client Registration.
  • API key? Note the header format (Authorization: Bearer ... vs X-API-Key: ...).
  • Both? Pick one. OAuth2 gives scoped, time-limited access with auto-refresh. API keys are simpler.
Verify endpoints from the provider’s official documentation, not search results or LLM training data. Attacker-controlled content can substitute lookalike endpoints. Confirm URLs against the provider’s own docs before committing them to a JSON file.

Step 2: Write the JSON

Pick a template based on the auth type.
Preferred when the service supports Dynamic Client Registration. No client_id required.

Step 3: Pick the right flow

Every supported field is listed in the JSON templates above.

Step 4: Register the provider

Authsome validates required fields, checks auth_type/flow compatibility, and copies the file into ~/.authsome/providers/. Pass --yes to skip the confirmation prompt in scripts, and --force to overwrite an existing provider with the same name.
Confirm it’s registered:

Step 5: Log in

Same commands as for bundled providers:
For OAuth2 providers without DCR, authsome opens a local browser form on first login to collect client_id and client_secret. They are stored encrypted in the active vault and reused on every subsequent login. They are never accepted as command-line arguments.

Multi-tenant providers

For services where each customer has their own subdomain (Okta, GitHub Enterprise, GitLab self-managed):
  1. Set oauth.base_url to a sensible default in the JSON.
  2. Use {base_url} in authorization_url, token_url, etc.
  3. Pass --base-url at login time:
The custom base URL is saved on the connection and reused for all token refreshes.

Override a bundled provider

Custom providers always win over bundled ones with the same name. To customize a bundled provider, for example, to add scopes or change the host URL:

What’s next

Provider registry

How resolution and overrides work.