Array · Authentication Profile

Array Authentication

Authentication

Array secures its APIs with apiKey across 4 declared security schemes, as derived from its OpenAPI definitions.

CompanyFintechEmbedded FinanceCredit DataIdentityBackground ChecksCredit MonitoringConsumer DataFinancial ServicesAPI
Methods: apiKey Schemes: 4 OAuth flows: API key in: header, query

Security Schemes

appKey apiKey
· in: query (appKey)
x-credmo-user-token apiKey
· in: header (x-credmo-user-token)
x-credmo-client-token apiKey
· in: header (x-credmo-client-token)
reportKey + displayToken apiKey
· in: query (reportKey, displayToken)

Source

Authentication Profile

array-authentication.yml Raw ↑
generated: '2026-08-10'
method: probed
source: https://embed.array.io/cms/array-web-component.js
docs: https://docs.array.com/docs
notes: >-
  Array publishes no OpenAPI publicly, so this profile was not derived from a spec. It was
  read from Array's own public embed loader (embed.array.io/cms/array-web-component.js,
  HTTP 200) and confirmed against live anonymous responses from https://array.io/api. The
  full authentication reference lives on docs.array.com, which is password-protected at
  every path, so scope and token-lifetime detail could not be captured.
summary:
  types:
  - apiKey
  api_key_in:
  - header
  - query
  oauth2_flows: []
  oauth2: false
  openid_connect: false
  mutual_tls: false
schemes:
- name: appKey
  type: apiKey
  in: query
  parameter: appKey
  description: >-
    Per-application public identifier, a 36-character UUID. Supplied as a query parameter on
    the embed loader script tag and as an appKey attribute on every array-* web component.
    The loader rejects any value whose length is not exactly 36. Public by design — it is
    visible in the page source of every site that embeds an Array component.
  evidence: >-
    embed.array.io/cms/array-web-component.js validates appKey length === 36 before init;
    array.com itself loads the script with ?appKey=<uuid>.
  sources:
  - https://embed.array.io/cms/array-web-component.js
- name: x-credmo-user-token
  type: apiKey
  in: header
  parameter: x-credmo-user-token
  description: >-
    Per-consumer user token, sent as a request header from the end user's device. The embed
    loader sends it on GET https://array.io/api/user/v2 to resolve the userId for the
    current session. Named for Credmo, the platform Array's credit stack originated from.
  evidence: >-
    Observed verbatim in the public loader's inferUserIdFromToken(), which issues
    fetch('<apiUrl>/api/user/v2') with headers x-credmo-user-token,
    x-array-web-component-referrer and x-array-web-component.
  sources:
  - https://embed.array.io/cms/array-web-component.js
- name: x-credmo-client-token
  type: apiKey
  in: header
  parameter: x-credmo-client-token
  description: >-
    Server-side client token, the counterpart to the user token, used when calls are made
    from the customer's backend rather than the consumer's device. Array's documentation
    states it must never be placed in website or mobile application source code.
  evidence: >-
    Documented by Array on docs.array.com (indexed publicly, page itself password-gated).
    NOT independently verified against a live response — recorded from the provider's own
    documentation text rather than a probe.
  confidence: medium
  sources:
  - https://docs.array.com/docs
- name: reportKey + displayToken
  type: apiKey
  in: query
  parameter: reportKey, displayToken
  description: >-
    Short-lived capability tokens returned by the credit-report order call and required to
    retrieve an assembled report. Both are mandatory query parameters on
    GET https://array.io/api/report/v2.
  evidence: >-
    GET https://array.io/api/report/v2 with no parameters returns HTTP 400 naming both as
    missing required query parameters.
  sources:
  - https://array.io/api/report/v2
gaps:
- No OAuth 2.0 or OpenID Connect surface is advertised; /.well-known/openid-configuration
  and /.well-known/oauth-authorization-server return 404 on every Array host.
- No published token lifetime, rotation, or revocation policy is publicly reachable.
- No scope or permission model is publicly documented, so no scopes/ artifact is emitted.
x-evidence:
- fetched: '2026-08-10'
  url: https://embed.array.io/cms/array-web-component.js
  http_status: 200
- fetched: '2026-08-10'
  url: https://array.io/api/report/v2
  http_status: 400
- fetched: '2026-08-10'
  url: https://array.io/.well-known/openid-configuration
  http_status: 404