PEXA · Authentication Profile

Pexa Authentication

Authentication

PEXA secures its APIs with oauth2 and mutualTLS across 3 declared security schemes, as derived from its OpenAPI definitions. OAuth 2.0 is offered via the clientCredentials and authorizationCode flow(s).

Real-EstateAustraliaConveyancingProperty SettlementLand RegistryTitlePropTechMortgageDigital SigningWebhook
Methods: oauth2, mutualTLS Schemes: 3 OAuth flows: clientCredentials, authorizationCode API key in:

Security Schemes

oauth2 oauth2
· flows: clientCredentials
oauth2 oauth2
· flows: authorizationCode, clientCredentials
oauth2 oauth2
· flows: authorizationCode, clientCredentials

Source

Authentication Profile

Raw ↑
generated: '2026-07-26'
method: searched
source:
- https://developer.pexa.com.au/Exchange/docs/documentation/ (Authentication, Authentication Compliance)
- https://developer.pexa.com.au/Projects/docs/documentation/
- https://developer.pexa.com.au/Webhooks/docs/definitions/webhooks/
- https://www.pexa.com.au/pexa-apis/
- https://auth.pexa.com.au/.well-known/openid-configuration
- openapi/pexa-notification-service-openapi.yaml
- openapi/pexa-projects-api-v4-openapi.yaml
- openapi/pexa-standalone-discharge-experience-api-openapi.yaml
docs: https://developer.pexa.com.au/Exchange/docs/documentation/
summary:
  types:
  - oauth2
  - mutualTLS
  oauth2_flows:
  - clientCredentials
  - authorizationCode
  api_key_in: []
  statement: >-
    "We authenticate our APIs using industry best practices, either through OAuth2.0 or Mutual TLS."
    - https://www.pexa.com.au/pexa-apis/
  token_lifetime: 12 hours
  transport: PEXA only accepts TLS v1.2 protocol (or above)
  header: 'Authorization: Bearer <access_token>'
access_gate:
  self_serve: false
  requirement: signed PEXA API Agreement
  process:
  - Register at https://www.pexa.com.au/pexa-apis/ - PEXA validates the details
  - Once validated and approved, PEXA emails the test access details
  - Plan and design, build and test, production readiness, go live
  - Credential requests and re-issues via apisupport@pexa.com.au
  authorization_code_extra: PEXA also requires your redirect_uri before issuing authorization-code credentials
  portal_signup: disabled in the developer portal build (hideSignUp true; AWS Cognito identity)
authorization_servers:
- environment: production
  issuer: https://auth.pexa.com.au/
  authorization_endpoint: https://auth.pexa.com.au/authorize
  token_endpoint: https://auth.pexa.com.au/oauth/token
  revocation_endpoint: https://auth.pexa.com.au/oauth/revoke
  jwks_uri: https://auth.pexa.com.au/.well-known/jwks.json
  discovery: https://auth.pexa.com.au/.well-known/openid-configuration
  discovery_status: 200
  shape: Auth0
  token_endpoint_auth_methods_supported: [client_secret_basic, client_secret_post, private_key_jwt, none]
  code_challenge_methods_supported: [S256, plain]
  document: well-known/pexa-openid-configuration.json
- environment: test
  issuer: https://auth-tst.pexalabs.com.au/
  authorization_endpoint: https://auth-tst.pexalabs.com.au/authorize
  token_endpoint: https://auth-tst.pexalabs.com.au/oauth/token
  discovery: https://auth-tst.pexalabs.com.au/.well-known/openid-configuration
  discovery_status: 200
  document: well-known/pexa-openid-configuration-test.json
flows:
- flow: clientCredentials
  audience: machine-to-machine integrations
  parameters: [grant_type=client_credentials, client_id, client_secret, scope]
  note: >-
    Scope is required on the token request and is declared per endpoint in the developer portal.
    The documented example scope is au_pub_tst_pexa_conversation_api_v2_read.
- flow: authorizationCode
  audience: business-to-consumer - an individual user authenticating with their own PEXA credentials
  parameters: [client_id, response_type=code, redirect_uri, scope, 'then grant_type=authorization_code + code + client_secret']
  note: >-
    Prompts the user to log into PEXA with their individual login, password and multi-factor
    authentication at the start of every session.
- flow: mutualTLS
  audience: alternative to OAuth 2.0 for API authentication
  note: >-
    Offered as an alternative on the API integration page, with certificate error guidance in the
    Exchange documentation. Not declared as a securityScheme in any shipped contract.
- flow: private_key_jwt (outbound)
  audience: webhook delivery in HMAC_OAUTH mode
  note: >-
    In HMAC_OAUTH mode PEXA authenticates ITSELF to the customer's token endpoint, signing the client
    assertion with an AWS KMS RSA key using PS256. Claims: iss/sub = clientId, aud = authUrl,
    exp = now + 10 minutes, iat, jti (random UUID). client_secret is the alternative. Optional mTLS
    applies to both the token request and the delivery.
schemes:
- name: oauth2
  type: oauth2
  flows:
  - flow: clientCredentials
    tokenUrl: https://auth.pexa.com.au/oauth/token
    scopes: 5
  sources:
  - openapi/pexa-notification-service-openapi.yaml
- name: oauth2
  type: oauth2
  flows:
  - flow: authorizationCode
    authorizationUrl: https://host.kubernetes.internal/auth/realms/pexa/protocol/openid-connect/auth
    tokenUrl: https://host.kubernetes.internal/auth/realms/pexa/protocol/openid-connect/token
    scopes: 3
  - flow: clientCredentials
    tokenUrl: https://host.kubernetes.internal/auth/realms/pexa/protocol/openid-connect/token
    scopes: 3
  sources:
  - openapi/pexa-projects-api-v4-openapi.yaml
  spec_defect: >-
    The Projects v4 document ships an internal Keycloak URL (host.kubernetes.internal) as its
    authorization and token endpoint. The real endpoints are https://auth.pexa.com.au/oauth/token
    (production) and https://auth-tst.pexalabs.com.au/oauth/token (test).
- name: oauth2
  type: oauth2
  flows:
  - flow: authorizationCode
    authorizationUrl: "https://'{{auth2_env}}'/authorize"
    tokenUrl: "https://'{{auth2_env}}'/oauth/token"
  - flow: clientCredentials
    tokenUrl: "https://'{{auth2_env}}'/oauth/token"
  sources:
  - openapi/pexa-standalone-discharge-experience-api-openapi.yaml
  spec_defect: >-
    The Standalone Discharge document ships unresolved templates ({{auth2_env}}, {{api_scope}})
    rather than real endpoint URLs and scope names.
compliance_requirements:
- PEXA only accepts TLS v1.2 protocol
- The OAuth 2.0 flow implementation must be secure
- Client id and client secret must be securely stored and encrypted, and must not be accessible to
  software users or other parties
- The token request process must be executed securely and must not be interceptable
- The access token must be stored securely and encrypted
notes:
- No API-key authentication exists anywhere in the estate.
- No anonymous or public endpoint exists - even /health requires a token.
- >-
  The production OIDC discovery document advertises many Auth0 grant types (password, implicit,
  device_code, token-exchange, jwt-bearer). Only client_credentials and authorization_code are
  documented for PEXA API integrators; the rest are tenant defaults, not offered contracts.

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/pexa-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 email required.

A second provider on the same verified email joins the account you already have.