Eligible · Authentication Profile
Eligible Authentication
Authentication
Eligible secures its APIs with apiKey across 5 declared security schemes, as derived from its OpenAPI definitions.
BillingEligibilityHealthcareInsuranceClaims
Methods: apiKey
Schemes: 5
OAuth flows:
API key in: query, body, header
Security Schemes
api_key apiKey
· in: query (api_key)
api_key apiKey
· in: body (api_key)
authorization_bearer http
scheme: bearer
· in: header (Authorization)
session_token apiKey
· in: body (session_token)
publishable_key apiKey
· in: body (publishable_key)
Source
Authentication Profile
generated: '2026-08-14'
method: searched
source: >-
https://eligible.com/community/technical-features-faq/ (Eligible's published
Technical & Features FAQ) cross-read against the request layer of Eligible's own
first-party clients: rubygems.org eligible 3.0.3 (lib/eligible.rb) and
registry.npmjs.org eligible-node 1.2.9 (lib/http/client.js, lib/http/config.js).
docs: https://eligible.com/community/technical-features-faq/
note: >-
DERIVED FROM FIRST-PARTY CLIENT SOURCE, NOT FROM AN OPENAPI. Eligible publishes no
machine-readable specification, and its API reference sits behind an account login
(https://eligible.com/docs serves a "Sign In" page). Everything below is read out
of the vendor's own published SDKs and its own public FAQ, so it describes the
scheme Eligible actually implements; it is not a securityScheme block harvested
from a spec, and it is not a guess.
summary:
types: [apiKey]
api_key_in: [query, body, header]
oauth2_flows: []
oauth2: false
openid_connect: false
mutual_tls: false
bearer_token: true
schemes:
- name: api_key
type: apiKey
in: query
parameter: api_key
applies_to: GET, HEAD, DELETE
description: >-
On GET/HEAD/DELETE the client appends the account API key to the query string
as `api_key=<key>` (together with `test=true|false`). Confirmed in
Eligible::request in the Ruby gem.
source: rubygems:eligible@3.0.3 lib/eligible.rb
- name: api_key
type: apiKey
in: body
parameter: api_key
applies_to: POST, PUT
description: >-
On write methods the API key is merged into the JSON request body alongside
`test`, rather than sent as a parameter.
source: rubygems:eligible@3.0.3 lib/eligible.rb
- name: authorization_bearer
type: http
scheme: bearer
in: header
parameter: Authorization
description: >-
The Ruby client additionally sets `Authorization: Bearer <api_key>` on every
request. The same key value is used; this is a header carriage of the API key,
not a separate OAuth token, and there is no authorization server, token
endpoint, refresh flow or scope set anywhere in the client or the docs.
source: rubygems:eligible@3.0.3 lib/eligible.rb
- name: session_token
type: apiKey
in: body
parameter: session_token
description: >-
A short-lived alternative credential. `POST /session_tokens/create.json` mints
one and `POST /session_tokens/revoke.json` destroys it; when a session_token is
supplied the client does not require the account API key. Intended for
browser/mobile contexts where the long-lived key must not be shipped.
source: rubygems:eligible@3.0.3 lib/eligible/session_token.rb
- name: publishable_key
type: apiKey
in: body
parameter: publishable_key
description: >-
A separate, non-authenticating identifier. Eligible's own FAQ is explicit: "The
publishable key is used in certain libs for identifying the customer, but the
API key is used for authentication across all the API. In all cases, use the
API key unless prompted for the publishable key." Sending it where the API key
is expected is the documented cause of a 401.
source: https://eligible.com/community/technical-features-faq/
key_management:
issued_from: https://account.eligible.com/ ("Admin > API keys")
environments: [live, staging, sandbox]
rotation: >-
Keys are reset by the account holder from the admin console; Eligible documents
no programmatic key-rotation endpoint.
note: >-
Three distinct keys per account, one per environment. The environment is
additionally selected per request by the `test` parameter, which every client
sends on every call.
transport:
tls: required
certificate_pinning: true
pinning_note: >-
Unusually, both first-party clients PIN the SHA-1 fingerprint of the
gds.eligibleapi.com leaf certificate and refuse to connect on a mismatch (Ruby:
Eligible.fingerprints, 7 digests; Node: FINGERPRINTS, 5 digests). This is why the
SDKs ship a new version roughly every January — the pinned certificate rotates
and an un-upgraded client stops working. It is a real operational constraint for
any consumer and is not documented anywhere on the public site.
observed_response_headers:
strict-transport-security: max-age=63072000; includeSubDomains; preload
x-frame-options: DENY
x-content-type-options: nosniff
referrer-policy: strict-origin-when-cross-origin
cross-origin-opener-policy: same-origin
observed_on: https://gds.eligibleapi.com/v1.5/payers.json
failure_mode:
status: 401
content_type: application/json
body: Could not authenticate you. Please re-try with a valid API key.
probed: '2026-08-14'
note: >-
Observed anonymously. The body is a bare string served under an
application/json content type, not a JSON object — see errors/.