Nav · Authentication Profile

Nav Authentication

Authentication

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

Business CreditSmall BusinessFinancial-ServicesEmbedded FinanceLendingCredit ScoresCredit ReportingFinancing MarketplaceFintechPartner API
Methods: apiKey Schemes: 2 OAuth flows: API key in: header

Security Schemes

PartnerApiKey apiKey
· in: header ()
PartnerApiKeyLegacyGraphQL apiKey
· in: header ()

Source

Authentication Profile

nav-authentication.yml Raw ↑
generated: '2026-08-26'
method: searched
source: https://api-docs.nav.com/docs/rest-api/auth/partner-api-key
docs: https://api-docs.nav.com/docs/rest-api/auth/partner-api-key
checked: '2026-08-26'
derivation_note: >-
  Not derived by derive-authentication.py — Nav publishes no OpenAPI, so there are no
  securitySchemes to read. Every field below is transcribed from the published authentication and
  widget documentation.
summary:
  types: [apiKey]
  api_key_in: [header]
  oauth2_flows: []
  openid_connect: false
  mutual_tls: false
  self_serve_credentials: false
schemes:
- name: PartnerApiKey
  type: apiKey
  in: header
  parameter_name: Authorization
  scheme_note: >-
    Documented as `Type: apiKey`, `Header: Authorization` with the value `Bearer <api_key>`. It is a
    static bearer token, not an OAuth 2.0 access token — there is no authorization server, no token
    endpoint, no scopes and no refresh.
  example_header: 'Authorization: Bearer <api_key>'
  applies_to: All nine Nav Partner API operations under https://api.nav.com/v1
  provisioning: >-
    "API keys are provisioned by Nav during partner onboarding. Contact your Nav account manager to
    obtain, rotate, or revoke a key." There is no developer console, no self-serve key issuance and
    no documented programmatic rotation.
  rotation: manual, via Nav account manager
  errors:
  - status: 401
    meaning: API key is missing or invalid.
  - status: 403
    meaning: API key is valid but the operation is not permitted for this partner.
  source: https://api-docs.nav.com/docs/rest-api/auth/partner-api-key
- name: PartnerApiKeyLegacyGraphQL
  type: apiKey
  in: header
  parameter_name: x-api-key
  status: deprecated
  scheme_note: >-
    The deprecated GraphQL API used a different scheme: `x-api-key` plus an `x-partner-id` header.
    Recorded for partners still on the legacy integration; the GraphQL endpoint documented at
    https://api.nav.com/partners/graphql returned HTTP 404 when probed 2026-08-26 and the sandbox
    equivalent returned 503.
  additional_headers:
  - name: x-partner-id
    description: Partner ID, provided by Nav.
  source: https://api-docs.nav.com/docs/deprecated/graphql-schema
browser_session_model:
  name: Widget init token
  kind: single-use bearer token, browser-delivered
  minted_by: POST /v1/sso-token (server-side, with the partner API key)
  lifetime_seconds: 120
  single_use: true
  delivery: >-
    The partner's own backend authenticates its user, calls POST /v1/sso-token with that user's Nav
    accountId, and returns ONLY the token to the browser. The token is passed to the
    <nav-credit-widget> custom element via the `token` attribute or provideToken() in response to
    the navWidgetTokenRequest event.
  hard_rule_from_docs: >-
    "The API key must never appear in browser code." Nav states this explicitly and the widget
    architecture enforces it — the widget runs in a cross-origin iframe so Nav data never enters the
    partner's JavaScript context.
  additional_control: >-
    Widget-bearing origins must be registered with Nav before production. The allow list is itself
    an API surface (GET/PUT /v1/origins) and supports exact origins plus single-level wildcards
    (https://*.example.com matches one subdomain label only).
  reuse_failure_mode: >-
    Reusing a cached init token causes the widget to terminate with a SESSION_ERROR after a failed
    session exchange. See errors/nav-error-codes.yml.
  source: https://api-docs.nav.com/docs/widgets/getting-started
gaps:
  oauth2: >-
    No OAuth 2.0 or OpenID Connect anywhere on the Nav surface. No /.well-known/oauth-authorization-server,
    no /.well-known/openid-configuration (all 404 — see well-known/nav-well-known.yml). scopes/ is
    therefore not emitted for this provider: a static bearer key has no scope surface, and an empty
    OAuthScopes artifact would be a fabrication.
  key_prefix: >-
    Nav does not publish a key prefix convention (no lp_/sk_test_ style discriminator), so a partner
    cannot tell a sandbox key from a production key by inspection. The environment is selected by
    base URL (api.nav.com vs api.sandbox.nav.com), not by the credential.

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