Refersion · Authentication Profile

Refersion Authentication

Authentication

Refersion authenticates the REST API and the inbound order-tracking webhook with a static public/secret key PAIR sent as two custom request headers. There is no OAuth 2.0, no OpenID Connect, no bearer token, no mutual TLS and no token exchange of any kind. Note that the published OpenAPI declares NO `securitySchemes` and NO `security` block — the credentials are modelled as ordinary required header PARAMETERS, so automated tooling that reads only securitySchemes will conclude this API is unauthenticated. That is a real defect in the contract, not a gap in this profile.

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

Affiliate MarketingInfluencer MarketingE-CommerceReferral TrackingCommission ManagementShopify
Methods: Schemes: 2 OAuth flows: API key in:

Security Schemes

Refersion-Public-Key apiKey
· in: header ()
Refersion-Secret-Key apiKey
· in: header ()

Source

Authentication Profile

Raw ↑
generated: '2026-08-13'
method: searched
source: >-
  https://www.refersion.dev/reference/order-tracking-overview and the provider-published OpenAPI
  embedded in the ReadMe reference pages (harvested to
  openapi/_original/refersion-rest-api-readme-harvest.json)
name: Refersion Authentication
description: >-
  Refersion authenticates the REST API and the inbound order-tracking webhook with a static
  public/secret key PAIR sent as two custom request headers. There is no OAuth 2.0, no OpenID
  Connect, no bearer token, no mutual TLS and no token exchange of any kind. Note that the
  published OpenAPI declares NO `securitySchemes` and NO `security` block — the credentials are
  modelled as ordinary required header PARAMETERS, so automated tooling that reads only
  securitySchemes will conclude this API is unauthenticated. That is a real defect in the
  contract, not a gap in this profile.
schemes:
- name: Refersion-Public-Key
  type: apiKey
  in: header
  required: true
  description: >-
    Public half of the key pair, identifying the Refersion account. Example prefix published in the
    spec is `pub_`. Also used alone, client-side, as `r.pubKey` in the refersion.js tracking
    snippet.
  example_prefix: pub_
  spec_component: '#/components/parameters/Refersion-Public-Key'
- name: Refersion-Secret-Key
  type: apiKey
  in: header
  required: true
  description: >-
    Secret half of the key pair. Server-side only — it never appears in any documented client-side
    snippet.
  example_prefix: sec_
  spec_component: '#/components/parameters/Refersion-Secret-Key'
applies_to:
- surface: REST API v2
  base_url: https://api.refersion.com/v2
  headers:
  - Refersion-Public-Key
  - Refersion-Secret-Key
  - Content-Type
  note: All 15 published operations require both keys plus Content-Type application/json.
- surface: Inbound order-tracking webhook
  base_url: https://inbound-webhooks.refersion.com
  headers:
  - Refersion-Public-Key
  - Refersion-Secret-Key
  docs: https://www.refersion.dev/reference/webhook-tracking
- surface: Client-side tracking (refersion.js)
  headers: []
  note: Public key only, assigned to r.pubKey in the browser. The secret key is never exposed here.
- surface: GraphQL API
  base_url: https://api.refersion.com/graphql
  note: >-
    Documented as available but the endpoint returns HTTP 403 {"message":"Forbidden"} to an
    anonymous POST, so the credential form could not be confirmed by probe. The overview page
    documents no auth mechanism of its own.
  probed:
    url: https://api.refersion.com/graphql
    http_status: 403
    checked: '2026-08-13'
key_management:
  location: Account > Settings > Refersion API
  url: https://www.refersion.com/base/settings/integrations/api
  self_service: true
  rotation: >-
    Merchants may use an existing key set or create a new set from the dashboard. No documented
    programmatic rotation, no expiry, no scoping and no per-key permissioning.
  scopes: none
  expiry: none
failure_modes:
- status: 401
  body: '{"error": "Invalid API credentials (error 2)."}'
  description: >-
    Unauthorized — API keys are incorrect. Defined once as
    #/components/responses/401_Error and $ref'd by every operation.
gaps:
- The OpenAPI declares no securitySchemes / security, only header parameters.
- No OAuth 2.0 or OIDC; therefore no scopes artifact is produced for this provider.
- Keys are long-lived, unscoped and account-wide — a leaked pair grants the full API surface.
- The dedicated /reference/authentication docs page exists but is an unedited ReadMe placeholder.