Autopay · Authentication Profile

Autopay Authentication

Authentication

Every Autopay API is secured with a single mechanism: OAuth 2.0 client credentials against an Auth0-hosted authorization server, presented as a Bearer token. Credentials are issued by a human at Autopay and are bound to ONE operator — a partner integrating across several operators holds one client_id/client_secret pair per operator and must send the right pair per call.

Autopay secures its APIs with oauth2 across 1 declared security scheme, as derived from its OpenAPI definitions. OAuth 2.0 is offered via the clientCredentials flow(s).

ParkingParking PaymentsFleet ManagementPermitsParking OperatorsNorway
Methods: oauth2 Schemes: 1 OAuth flows: clientCredentials API key in:

Security Schemes

OAuth2 oauth2
· flows: clientCredentials

Source

Authentication Profile

Raw ↑
generated: '2026-09-06'
method: searched
source: https://developer.autopay.io/authentication/
docs: https://developer.autopay.io/authentication/
discovery: https://api-auth.autopay.io/.well-known/openid-configuration
summary:
  types:
  - oauth2
  oauth2_flows:
  - clientCredentials
  self_serve: false
  mfa_on_api: n/a
description: >-
  Every Autopay API is secured with a single mechanism: OAuth 2.0 client credentials against an
  Auth0-hosted authorization server, presented as a Bearer token. Credentials are issued by a
  human at Autopay and are bound to ONE operator — a partner integrating across several
  operators holds one client_id/client_secret pair per operator and must send the right pair
  per call.
schemes:
- name: OAuth2
  type: oauth2
  flows:
  - flow: clientCredentials
    tokenUrl: https://api-auth.autopay.io/oauth/token
    audience: https://api.autopay.io
    scopes: 3
    scopes_known:
    - customer_club
    - permit_booking
    - zone_status
  transport: 'Authorization: Bearer <access_token>'
  request:
    method: POST
    content_type: application/json
    body_parameters:
    - {name: client_id, type: string, required: true}
    - {name: client_secret, type: string, required: true}
    - {name: audience, type: string, required: true, fixed_value: https://api.autopay.io}
    - {name: grant_type, type: string, required: true, fixed_value: client_credentials}
    note: >-
      The token request body is JSON, not the application/x-www-form-urlencoded form RFC 6749
      specifies. A generic OAuth client library configured for form encoding will fail against
      this endpoint.
  response:
    fields:
    - {name: access_token, type: string}
    - {name: scope, type: string, description: The Autopay APIs reachable with this token.}
    - {name: expires_in, type: integer, description: Seconds until expiry; 86400 in the documented example.}
    - {name: token_type, type: string, fixed_value: Bearer}
  token_lifetime: 'Short-lived: "usually 10-24 hours". Read the real value from expires_in.'
  token_caching_required: true
  token_caching_note: >-
    "Generating excessive access tokens within the expiration time (i.e. requesting a new one
    for each request) may lead to termination of API access." Autopay enforces this
    contractually, not with a 429 — the penalty is loss of access. Any agent calling this API
    MUST cache the token for its full expires_in.
  errors:
  - {status: 401, body: '{"error": "access_denied", "error_description": "Unauthorized"}', cause: Invalid client_id or client_secret.}
  - {status: 401, body: '{"error_id":"authentication_error","message":"No access token present in header!"}', cause: Request to api.autopay.io with no Authorization header. Observed live 2026-09-06.}
  description: >-
    OAuth 2.0 Client Credentials against api-auth.autopay.io with audience
    https://api.autopay.io. Some endpoints additionally require a named scope on the token —
    permit_booking (Booking API), customer_club (Customer Club API), zone_status (Status API).
  sources:
  - https://developer.autopay.io/authentication/
  - https://api-auth.autopay.io/.well-known/openid-configuration
  - openapi/autopay-openapi.yml
authorization_server:
  issuer: https://api-auth.autopay.io/
  token_endpoint: https://api-auth.autopay.io/oauth/token
  jwks_uri: https://api-auth.autopay.io/.well-known/jwks.json
  id_token_signing_alg_values_supported: [RS256]
  discovery_document: well-known/autopay-openid-configuration.json
  probed: '2026-09-06'
  http_status: 200
  vendor: Auth0 (inferred from the audience-parameter token request and the discovery document shape; not stated by Autopay)
credential_issuance:
  self_serve: false
  process: >-
    "Contact your Autopay representative to acquire the Client Credentials (Client ID and
    Secret) for your application." There is no developer signup, no console and no key-rotation
    endpoint. The integrator must also register a Technical Contact Person with
    partner-support@autopay.io, naming the client_id(s) it applies to.
  rotation: not documented
  scoping: One credential pair per operator; a credential used against another operator's facilities returns an error.
token_claims_used_by_the_api:
  note: >-
    Several documented error ids reveal that Autopay reads tenancy claims out of the token
    rather than from the request — missing_tenant_id_token_error, missing_landlord_id_token_error,
    missing_operator_token_error and invalid_operator_id. The tenant, landlord and operator an
    agent acts as are fixed by the credential, not chosen per call.
outbound_authentication:
  note: >-
    Autopay also authenticates ITSELF to integrator-hosted callback endpoints. Supported methods
    are Basic, Bearer, API key (X-API-Key) and OAuth2 client credentials — see
    asyncapi/autopay-webhooks.yml.
gaps:
- No OAuth 2.0 Protected Resource Metadata (RFC 9728) is served on api.autopay.io.
- No dynamic client registration.
- No mTLS, no request signing, no key rotation endpoint.
- No documented scope reference page; the three scope names above are the only ones the reference mentions.

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/autopay-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.