Auth0Client

Build Status

An Elixir client for the Auth0 Management and Authentication APIs, built on Req.

This is a fork of techgaun/auth0_ex, named auth0_client throughout — the repository, the OTP application, the module namespace and the config key.

It is no longer drop-in compatible with the upstream: the HTTP client is Req rather than HTTPoison, every failure is a single Auth0Client.Error struct, and the deprecated Login, Rule and Blacklist modules are gone. Migrating from auth0_ex means renaming Auth0Ex to Auth0Client, renaming the :auth0_ex config key to :auth0_client, and reading Error handling.

Installation

def deps do
  [{:auth0_client, "~> 1.0"}]
end

The separate auth0_ex package on hex is the upstream this was forked from, and does not contain these changes.

Configuration

A domain, plus credentials for the Management API if you use it:

config :auth0_client,
  domain: System.get_env("AUTH0_DOMAIN"),
  mgmt_client_id: System.get_env("AUTH0_MGMT_CLIENT_ID"),
  mgmt_client_secret: System.get_env("AUTH0_MGMT_CLIENT_SECRET")

Tokens are fetched and renewed for you. Using only the Authentication API needs nothing but domain.

See Configuration for custom domains, pre-created tokens, timeouts and the rest.

Usage

Each Management resource is a module under Auth0Client.Management:

Auth0Client.Management.User.all(%{q: "email:*@example.com"})
#=> {:ok, [%{"user_id" => "auth0|abc123", ...}]}

Available resources: Action, Client, ClientGrant, Connection, CustomDomain, DeviceCredential, EmailProvider, Grant, Group, Guardian, Job, Key, Log, Organization, RefreshToken, ResourceServer, Role, Session, Tenant, Ticket, User, UserBlock.

The Authentication API lives under Auth0Client.Authentication.

Guides

Configuration Every setting, and what it does
Logging users in Authorization code flow, PKCE, passwordless, signup, logout
Multi-factor authentication Configuring factors, enrolling users, completing an MFA login
Managing users User CRUD, search, sessions, bulk import and export
Roles and permissions RBAC, and tracing where a user's access came from
Organizations B2B — members, org-scoped roles, invitations
Applications and credentials Clients, Private Key JWT, client grants
Connections and provisioning Identity providers, SCIM, directory sync
Actions Extending the login flow
Custom domains and keys Branded login domains, signing-key rotation
Error handling Return shapes, Auth0Client.Error, rate limiting

API coverage

This library covers a subset of the Auth0 API, and does not wrap endpoints Auth0 has deprecated or retired. See CHANGELOG.md for what changed in each release, and ROADMAP.md for what is implemented, what is missing, and what is deliberately excluded.

Comparison with other Auth0 libraries

Two other hex packages do the same job — calling Auth0's APIs from your server. Compared as of July 2026; this library moves, so treat its column as a snapshot and check ROADMAP.md for current coverage. auth0_ex is the upstream this was forked from.

Auth0 features

this library auth0_api auth0_ex
Users — CRUD, search, blocks ✅ ✅ ✅
Tickets — password change, email verification ✅ ✅ ✅
Roles and permissions (RBAC) ✅ ✅ —
Organizations (B2B), groups ✅ ✅ —
Clients and grants ✅ ✅ ✅
Connections ✅ ✅ ✅
Actions ✅ ✅ —
MFA (Guardian) ✅ ✅ —
Custom domains, signing keys ✅ ✅ —
Jobs — bulk import/export ✅ ✅ ✅
Logs, log streams ✅ ✅ ✅
Branding, prompts, email templates — ✅ —
Attack protection, anomaly — ✅ —
Sessions, refresh tokens ✅ ✅ —
Login flows — auth code, PKCE, passwordless ✅ — ✅
Machine-to-machine tokens ✅ ✅ ✅

Library qualities

this library auth0_api auth0_ex
Management resource groups 22 ~44 13 ¹
HTTP client Req HTTPoison HTTPoison
Single error struct ✅ — —
Response headers preserved ✅ — —
Retry-After on 429 ✅ auto-retry ² —
Token cache renews before expiry ✅ — ³ —
Single-flight token fetch ✅ — —
Cached token redacted from inspect ✅ — —
Last release 2026-07 2025-12 2024-03

¹ Includes rule and blacklist, which Auth0 has deprecated in favour of Actions. ² Retries internally and sleeps the calling process, rather than handing the delay back to you. ³ Treats a token as valid until five seconds past its stated expiry.

Also on hex, for different jobs

None of these call the Management API, so they complement this library rather than replace it:

Which to use

This library does not verify incoming tokens. Auth0Client.Authentication.jwks/0 fetches your tenant's key set, but performs no signature verification and pulls in no crypto library. Pair it with one of the packages above if you need to authenticate requests. That separation is deliberate — verifying a token on the request path is cryptographic work that belongs in a library built for it, and neither Management API package attempts it.

If you need Management API breadth, use auth0_api. It covers roughly twice the surface, including branding, attack protection, email templates and several 2025-era additions. This library covers the resources most applications actually reach for, and spends its effort on the transport instead: one error struct that carries the response headers, and a management token cache designed for concurrent callers.

Authors