Hevy · Authentication Profile

Hevy Authentication

Authentication

Hevy declares 2 security scheme(s) across its OpenAPI definitions.

CompanyFitnessHealthWorkout TrackingStrength TrainingConsumer AppsMobileQuantified SelfPersonal TrainingHealth Data
Methods: Schemes: 2 OAuth flows: API key in:

Security Schemes

api-key apiKey
· in: header ()
oauth2

Source

Authentication Profile

Raw ↑
generated: '2026-08-27'
method: searched
source: >-
  https://api.hevyapp.com/docs (Swagger UI; the OpenAPI document is embedded in
  /docs/swagger-ui-init.js) + https://github.com/hevyapp/hevy-gpt + live probes of
  https://api.hevyapp.com/v1/workouts and https://hevy.com/oauth/authorize on 2026-08-27.
summary: >-
  Hevy runs two distinct authenticated surfaces. The public REST API on api.hevyapp.com takes a
  per-account UUID API key in an `api-key` request header, issued to Hevy Pro subscribers from the web
  app at https://hevy.com/settings?developer. Hevy's own ChatGPT Custom GPT calls a different host,
  hevy.com/api/v1, over OAuth 2.0 — the authorization endpoint https://hevy.com/oauth/authorize is
  live (307 to /login when unauthenticated) — but Hevy publishes no OAuth client registration flow,
  token endpoint, or scope reference, so OAuth is in practice a first-party-only surface.
schemes:
- id: api-key-header
  type: apiKey
  in: header
  name: api-key
  format: uuid
  applies_to: https://api.hevyapp.com (all 22 operations)
  declared_as_security_scheme: false
  declared_note: >-
    IMPORTANT SPEC GAP — the published OpenAPI declares NO `components.securitySchemes` and no
    `security` block anywhere. The key is modelled instead as a `required: true` header PARAMETER
    named `api-key` (schema type string, format uuid) repeated on all 22 operations. Functionally
    identical for a human reader; invisible to any tool that reads securitySchemes, including
    most codegen and every scorer that checks "securitySchemes defined + applied". Our overlay
    (overlays/hevy-public-api-overlay.yaml) proposes the missing ApiKeyAuth scheme.
  issuance:
    self_serve: true
    url: https://hevy.com/settings?developer
    gate: Hevy Pro subscription required
    probed:
    - url: https://hevy.com/settings?developer
      status: 200
      note: 302/307s to /login?postLoginPath=%2Fsettings%3Fdeveloper%3D for anonymous callers.
  rotation_documented: false
  expiry_documented: false
  scopes: none
  transport: HTTPS only (TLSv1.3 observed)
  failure:
    status: 401
    body: InvalidApiKey
    media_type: text/html; charset=utf-8
    note: >-
      Observed live 2026-08-27 with a syntactically valid but unissued UUID. The body is the bare
      string `InvalidApiKey` with a text/html content type — not JSON, not RFC 9457, and not declared
      anywhere in the OpenAPI (no operation declares a 401). See errors/hevy-problem-types.yml.
- id: oauth2-gpt-action
  type: oauth2
  flow: authorization_code
  applies_to: https://hevy.com/api/v1 (6 operations, Hevy's own ChatGPT Custom GPT)
  authorization_endpoint: https://hevy.com/oauth/authorize
  token_endpoint: null
  token_endpoint_note: >-
    Not published. Probed https://hevy.com/oauth/token and https://hevy.com/api/oauth/token on
    2026-08-27 — both 404. The value lives only in the GPT's private action configuration.
  scopes_documented: false
  dynamic_client_registration: false
  discovery:
    oauth_authorization_server: 404
    oauth_protected_resource: 404
    openid_configuration: 404
    note: >-
      No RFC 8414 / RFC 9728 / OIDC discovery document on any Hevy host — see
      well-known/hevy-well-known.yml. A third-party agent cannot self-onboard to this surface.
  evidence:
  - url: https://hevy.com/oauth/authorize
    status: 307
    location: /login?postLoginPath=%2Foauth%2Fauthorize
    checked: '2026-08-27'
  - url: https://github.com/hevyapp/hevy-gpt
    status: 200
    note: 'README "#### Authentication" section for the api.hevyapp.com action reads simply: OAuth.'
    checked: '2026-08-27'
mtls: false
openid_connect: false
signed_requests: false
cors:
  allow_origin: '*'
  allow_headers: Origin, X-Requested-With, Content-Type, Accept, api-key
  allow_methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
  method: probed
  note: >-
    Observed on the live 401 from api.hevyapp.com. The API key is a bearer-equivalent secret and the
    API sets Access-Control-Allow-Origin `*`, so browser-side use of a Hevy key exposes it to any
    origin; keys belong on a server.
agent_notes: >-
  For an autonomous agent the only reachable door is the api-key header, and it cannot be obtained
  programmatically — a human must hold a Hevy Pro subscription and copy the key out of the web app.
  There is no OAuth flow an arbitrary client can complete, no scopes, and no way to issue a
  reduced-privilege credential: one key grants full read AND write over the whole account.

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.
All 92 tools →

Call it yourself

curl for this page
This security artifact
curl "https://apis.io/api/v1/security/hevy-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.