> ## Documentation Index
> Fetch the complete documentation index at: https://docs.narrativebanking.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Quickstart

> Validate a Narrative SDK tenant integration in a minimal integration path.

<Info>
  This page is intentionally minimal. If you need the full embedded implementation flow, use [SDK integration](/sdk/integration). If you need authentication pattern selection or token lifecycle guidance, use [Authentication](/sdk/authentication). If you need Azure OIDC sign-in or request-level API auth handling, use [Authentication guide](/sdk/api-auth). If you want installable client libraries first, use [SDKs](/sdk/sdks). If you need field-by-field settings, use [Configuration reference](/sdk/configuration).
</Info>

## Success criteria

| Checkpoint                | What success looks like                                                                 |
| ------------------------- | --------------------------------------------------------------------------------------- |
| Loader is reachable       | The browser can load `nsdk-loader.js` from `NSDK_BASE_URL`.                             |
| Embed Token can be minted | Your backend returns a fresh short-lived token for the current tenant user.             |
| SDK container renders     | The embedded widget mounts without config or token errors.                              |
| Core capabilities work    | Authentication recovery and Coach/Money/Growth experiences load without runtime errors. |

<Steps>
  <Step title="Confirm the three prerequisites">
    You need a Connected App, a backend token route, and a frontend page where the SDK can mount.
  </Step>

  <Step title="Render one SDK container">
    Add a single mount target and load the SDK script.

    ```html theme={null}
    <div id="nsdk-container" data-nsdk="true" data-nsdk-widget="insights"></div>
    <script>
      (function (w, d, s, u, n) {
        w[n] = w[n] || function () { (w[n].q = w[n].q || []).push(arguments) }
        var js = d.createElement(s); js.async = true; js.src = u
        d.head.appendChild(js)
      })(window, document, 'script', '<NSDK_BASE_URL>/nsdk-loader.js', 'NSDK')
    </script>
    ```
  </Step>

  <Step title="Attach a fresh Embed Token">
    Fetch a short-lived token from your backend and set it on the container.

    ```js theme={null}
    const { embed_token } = await fetch('/your-embed-token-endpoint').then((r) => r.json())
    document.getElementById('nsdk-container')?.setAttribute('data-nsdk-token', embed_token)
    ```
  </Step>

  <Step title="Validate capability loading">
    Confirm sign-in state, then verify Coach, Money, and Growth surfaces can each render expected user-facing data.
  </Step>
</Steps>

<Check>
  If the container renders and core capability checks pass, your baseline integration is ready.
</Check>

## Where to go next

<Columns cols={2}>
  <Card title="SDKs" icon="https://mintcdn.com/narrative-b13c445c/qi6sqKB_OLTe8ty2/SVG/frontend-shell.svg?fit=max&auto=format&n=qi6sqKB_OLTe8ty2&q=85&s=13c676d362a2a3a7a60bfa0fae245ad6" href="/sdk/sdks" width="64" height="64" data-path="SVG/frontend-shell.svg">
    Install official JavaScript and Python SDKs before wiring custom HTTP clients.
  </Card>

  <Card title="Integration guide" icon="https://mintcdn.com/narrative-b13c445c/qi6sqKB_OLTe8ty2/SVG/integration-plug.svg?fit=max&auto=format&n=qi6sqKB_OLTe8ty2&q=85&s=ffb54be4ee373296521dd999cdc01db3" href="/sdk/integration" width="64" height="64" data-path="SVG/integration-plug.svg">
    Move from basic validation to the full tenant integration path and delivery checklist.
  </Card>

  <Card title="Tenant embedding guide" icon="https://mintcdn.com/narrative-b13c445c/qi6sqKB_OLTe8ty2/SVG/link-handoff.svg?fit=max&auto=format&n=qi6sqKB_OLTe8ty2&q=85&s=710c716f96a2cf04ebe7fa38257b5ea1" href="/sdk/tenant-embedding-guide" width="64" height="64" data-path="SVG/link-handoff.svg">
    Decide how to load the SDK, when to fetch tokens, and whether to use declarative or imperative boot.
  </Card>

  <Card title="Configuration reference" icon="https://mintcdn.com/narrative-b13c445c/qi6sqKB_OLTe8ty2/SVG/api-reference-book.svg?fit=max&auto=format&n=qi6sqKB_OLTe8ty2&q=85&s=ef4dadec037148a901abc644b47ccb81" href="/sdk/configuration" width="64" height="64" data-path="SVG/api-reference-book.svg">
    Look up required fields, types, validation rules, and example configuration sets.
  </Card>

  <Card title="Authentication" icon="https://mintcdn.com/narrative-b13c445c/qi6sqKB_OLTe8ty2/SVG/auth-key.svg?fit=max&auto=format&n=qi6sqKB_OLTe8ty2&q=85&s=465530a47019c1dc1033dd56d0f5a508" href="/sdk/authentication" width="64" height="64" data-path="SVG/auth-key.svg">
    Review authentication pattern selection, token lifecycle, and embedded auth boundaries.
  </Card>

  <Card title="Authentication guide" icon="https://mintcdn.com/narrative-b13c445c/qi6sqKB_OLTe8ty2/SVG/server.svg?fit=max&auto=format&n=qi6sqKB_OLTe8ty2&q=85&s=4a767cfdcb6585e74810e5c286495132" href="/sdk/api-auth" width="64" height="64" data-path="SVG/server.svg">
    Use Azure OIDC sign-in, API auth, refresh, and sign-out guidance when your integration goes beyond the embedded quickstart.
  </Card>
</Columns>

## Next

* [Integration guide](/sdk/integration)
* [Tenant embedding guide](/sdk/tenant-embedding-guide)
* [Configuration reference](/sdk/configuration)
* [Authentication](/sdk/authentication)
* [Authentication guide](/sdk/api-auth)
* [Capability guide overview](/sdk/api-reference)
