Wger · Authentication Profile
Wger Authentication
Authentication
Wger secures its APIs with apiKey, http, and oauth2 across 5 declared security schemes, as derived from its OpenAPI definitions. OAuth 2.0 is offered via the authorizationCode flow(s).
Sports And FitnessPublic APIsFitnessNutritionHealthOpen-SourceSelf-HostedWorkout TrackingDjangoREST
Methods: apiKey, http, oauth2
Schemes: 5
OAuth flows: authorizationCode
API key in: cookie, header
Security Schemes
tokenAuth apiKey
· in: header (Authorization)
jwtAuth http
scheme: bearer
headlessJwtAuth http
scheme: bearer
oidcAuth oauth2
· flows: authorizationCode
cookieAuth apiKey
· in: cookie (sessionid)
Source
Authentication Profile
generated: '2026-08-27'
method: searched
source: https://wger.readthedocs.io/en/latest/api/api.html
docs: https://wger.readthedocs.io/en/latest/api/api.html
spec: openapi/wger-openapi.yml
note: >-
Derived from the securitySchemes in openapi/wger-openapi.yml (fetched from
https://wger.de/api/v2/schema) and upgraded from the wger "Using the API"
documentation. The API tries credentials in the order Token -> Bearer JWT ->
session cookie. System-wide reference data (exercises, ingredients, units,
muscles, equipment) is readable with no credential at all.
anonymous_access:
supported: true
scope: >-
System-wide/community data: /api/v2/exercise*, /api/v2/ingredient*,
/api/v2/muscle/, /api/v2/equipment/, /api/v2/exercisecategory/,
/api/v2/language/, /api/v2/license/, /api/v2/public-templates/ and the
setting-*unit reference endpoints.
source: https://wger.readthedocs.io/en/latest/api/api.html
summary:
types:
- apiKey
- http
- oauth2
api_key_in:
- cookie
- header
oauth2_flows:
- authorizationCode
schemes:
- name: tokenAuth
type: apiKey
in: header
parameter: Authorization
prefix: 'Token '
description: >-
Permanent personal API key. Minted from the web UI at
/en/user/api-key (User settings -> API key). Intended for personal
scripts and long-running integrations; shown once.
docs: https://wger.readthedocs.io/en/latest/api/api.html
sources:
- openapi/wger-openapi.yml
- https://wger.readthedocs.io/en/latest/api/api.html
- name: jwtAuth
type: http
scheme: bearer
bearerFormat: JWT
description: >-
Short-lived JWT access token (10 minutes in the Docker default) paired
with a long-lived refresh token (120 days). Lifetimes are configurable
per instance via ACCESS_TOKEN_LIFETIME / REFRESH_TOKEN_LIFETIME.
Recommended mechanism for apps.
token_endpoints:
refresh: POST /api/v2/token/refresh
verify: POST /api/v2/token/verify
rotation: >-
Refresh rotates both tokens; the previous refresh token is blacklisted
immediately.
docs: https://wger.readthedocs.io/en/latest/api/api.html
sources:
- openapi/wger-openapi.yml
- https://wger.readthedocs.io/en/latest/api/api.html
- name: headlessJwtAuth
type: http
scheme: bearer
bearerFormat: JWT
description: >-
Access token issued by the django-allauth headless endpoints. wger
deliberately has no credentials-to-JWT endpoint because it would bypass
2FA; a refresh token comes from POST /allauth/app/v1/auth/login (with a
partial-login + X-Session-Token / requires_mfa step through
POST /allauth/app/v1/auth/2fa/authenticate when 2FA is enabled), or from
the web API key page.
upstream_spec: https://docs.allauth.org/en/latest/headless/openapi-specification/
sources:
- openapi/wger-openapi.yml
- https://wger.readthedocs.io/en/latest/api/api.html
- name: oidcAuth
type: oauth2
description: >-
wger can act as an OAuth2/OIDC provider itself (django-oauth-toolkit), so
other applications can let their users sign in with a wger account and
call the API on their behalf. Off by default unless the instance
configures it; enabled on wger.de.
flows:
- flow: authorizationCode
authorizationUrl: https://wger.de/identity/o/authorize
tokenUrl: https://wger.de/identity/o/api/token
scopes: 2
pkce: S256
discovery: https://wger.de/.well-known/openid-configuration
jwks_uri: https://wger.de/.well-known/jwks.json
userinfo_endpoint: https://wger.de/identity/o/api/userinfo
revocation_endpoint: https://wger.de/identity/o/api/revoke
device_authorization_endpoint: https://wger.de/identity/o/api/device/code
grant_types:
- authorization_code
- client_credentials
- refresh_token
- 'urn:ietf:params:oauth:grant-type:device_code'
docs: https://wger.readthedocs.io/en/latest/administration/oauth2_provider.html
sources:
- openapi/wger-openapi.yml
- https://wger.de/.well-known/openid-configuration
- name: cookieAuth
type: apiKey
in: cookie
parameter: sessionid
description: >-
The Django session cookie a logged-in browser already carries. Used by
wger's own web UI and by the browsable API.
sources:
- openapi/wger-openapi.yml
Work with this as data
Every security artifact here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for security posture
4 MCP tools reach this
find_securityBrowse and filter every security artifact in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This security artifact
curl "https://apis.io/api/v1/security/wger-authentication"
All security posture
curl "https://apis.io/api/v1/security?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.