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

# Developer Learning Path

> Step-by-step guided journey to integrate Suki using Ambient or Form filling workflows with the Web SDK, Headless Web SDK, Mobile SDK, Form filling SDK, or REST APIs

Follow this structured path to successfully integrate Suki's AI-powered healthcare capabilities. Each step builds on the previous one, ensuring you have a solid foundation before moving forward.

<Note>
  **Estimated Total Time**: 4-6 weeks from start to production deployment
</Note>

## Foundation setup

### Step 1: Partner onboarding

**Goal**: Get registered with Suki and receive your <Tooltip tip="A unique identifier assigned by Suki during onboarding that links an application to its configuration in the Suki Developer Platform." cta="View in Glossary" href="/Glossary/p">Partner ID</Tooltip>

<Card>
  <CardGroup cols={1}>
    <Card title="What You'll Do" icon="clipboard-check">
      * Contact Suki partnership team
      * Provide business information and authentication method
      * Receive your unique `partner_id`
    </Card>
  </CardGroup>

  **Prerequisites**: Business information, chosen authentication method

  **Time**: 3-5 business days

  **Next Step**: Once you have your `partner_id`, move to Step 2

  <div style={{marginTop: '1rem'}}>
    <a href="/documentation/get-started/partner-onboarding" className="learning-path-button">Start Partner Onboarding</a>
  </div>
</Card>

### Step 2: Authentication setup

**Goal**: Configure secure authentication between your system and Suki

<Card>
  <CardGroup cols={1}>
    <Card title="What You'll Do" icon="key">
      * Choose authentication method (<Tooltip tip="JSON Web Key Set. A set of keys containing the public keys used to verify any JWT issued by the authorization server." cta="View in Glossary" href="/Glossary/j">JWKS</Tooltip>, Okta, JWT Assertion)
      * Set up your identity provider integration
      * Test token generation and validation
    </Card>
  </CardGroup>

  **Prerequisites**: <Tooltip tip="A unique identifier assigned by Suki during onboarding that links an application to its configuration in the Suki Developer Platform." cta="View in Glossary" href="/Glossary/p">Partner ID</Tooltip> from Step 1, access to your identity provider

  **Time**: 2-3 days

  **Next Step**: With authentication working, choose your integration path

  <div style={{marginTop: '1rem'}}>
    <a href="/documentation/how-to/partner-authentication" className="learning-path-button">Setup Authentication</a>
  </div>
</Card>

***

### Step 3: Choose your integration path

Depending on the workflow you choose, you will need to choose the best integration method for your application.

Refer to the [Integration paths overview](/documentation/get-started/integration-overview) for more information about the different workflows and how to choose the best integration method for your application.

<Tabs>
  <Tab title="Ambient Workflows" id="ambient-workflows-path">
    ### Integration choice

    **Goal**: Select the best integration method for your application

    <Card>
      <CardGroup cols={2}>
        <Card title="Web SDK" icon="globe" href="/documentation/tutorials/learning-path#web-sdk-path" arrow={true}>
          **Best for**: React/JavaScript web apps that want Suki UI

          * Pre-built clinical UI components
          * Automatic state management
          * Fastest browser implementation
        </Card>

        <Card title="Headless Web SDK" icon="react" href="/documentation/tutorials/learning-path#headless-web-sdk-path" arrow={true}>
          **Best for**: React 18+ web apps with a custom UI

          * Hooks for auth, sessions, and recording
          * You build all interface and layout
          * Same core ambient behavior as the Web SDK
        </Card>

        <Card title="Mobile SDK" icon="mobile" href="/documentation/tutorials/learning-path#mobile-sdk-path" arrow={true}>
          **Best for**: Native iOS applications

          * Optimized for mobile audio
          * Native performance
          * Offline capabilities
        </Card>

        <Card title="Direct APIs" icon="code" href="/documentation/tutorials/learning-path#rest-apis-path" arrow={true}>
          **Best for**: Custom implementations on any stack

          * Maximum flexibility
          * Any programming language
          * Full control at the API/WebSocket level
        </Card>
      </CardGroup>

      <Card title="Ambient Interoperability" icon="arrows-rotate" href="/documentation/how-to/ambient-clinical-notes/use-ambient-across-modalities" arrow={true}>
        **Best for**: Workflows that span Ambient APIs, Mobile SDK, Headless Web SDK, and Web SDK

        * Share one clinical note across modalities with `emr_encounter_id`
        * Continue or re-ambient from another supported product
        * Retrieve the latest note after Web SDK edits
      </Card>

      **Time**: 1-2 hours to evaluate options

      <div style={{marginTop: '1rem'}}>
        <a href="/documentation/get-started/integration-decision-guide" className="learning-path-button">Decision Guide</a>
      </div>
    </Card>

    ### Integration implementation

    <Tabs>
      <Tab title="Web SDK Path" id="web-sdk-path">
        **Goal**: Install and configure the Suki Web SDK

        <Steps>
          <Step title="Install Package (15 Min)">
            Install `@suki-sdk/core` plus `@suki-sdk/react` for React or `@suki-sdk/js` for plain JavaScript

            ```bash theme={"theme":{"light":"github-dark","dark":"material-theme-darker"}}
            npm install @suki-sdk/react @suki-sdk/core
            ```

            **Next**: Initialize auth and the SDK client (see quickstart for your stack)
          </Step>

          <Step title="Basic Configuration (30 Min)">
            Create `SukiAuthManager` from `@suki-sdk/core` with your `partnerId`, `partnerToken`, and provider fields. In React, wrap with `SukiProvider` and call `init({ authManager })` from `useSuki()` in a child (once, usually from `useEffect`). In JavaScript, call `initialize({ authManager })` from `@suki-sdk/js`.

            ```jsx theme={"theme":{"light":"github-dark","dark":"material-theme-darker"}}
            import { SukiProvider } from '@suki-sdk/react';

            function App() {
              return (
                <SukiProvider>
                  {/* init({ authManager }) from useSuki() in a child */}
                </SukiProvider>
              );
            }
            ```

            **Next**: Mount the UI and start an ambient session
          </Step>

          <Step title="First Ambient Session (45 Min)">
            Mount the SDK UI with an `encounter` and walk through recording and note generation

            **What you'll build**: A simple flow that starts Ambient documentation, captures audio, and returns a clinical note

            **Next**: Test with sample audio and verify note generation
          </Step>
        </Steps>

        [Web SDK quickstart →](/web-sdk/quickstart)
      </Tab>

      <Tab title="Headless Web SDK Path" id="headless-web-sdk-path">
        **Goal**: Install the Headless Web SDK and wire authentication and ambient hooks in React

        <Steps>
          <Step title="Install Package (15 Min)">
            Install the Headless Web SDK in a **React 18+** project

            ```bash theme={"theme":{"light":"github-dark","dark":"material-theme-darker"}}
            npm install @suki-sdk/platform-react
            ```

            Confirm your test and production **host URLs** are on the Suki allowlist (see [Headless Web SDK prerequisites](/headless-web-sdk/prerequisites)).

            **Next**: Add `PlatformClient` and `PlatformClientProvider`
          </Step>

          <Step title="Platform Client and Provider (20 Min)">
            Create a `PlatformClient` and wrap your app with `PlatformClientProvider` (see [Platform client and provider](/headless-web-sdk/api-reference/platform-client) and [Quickstart](/headless-web-sdk/quickstart))

            ```jsx theme={"theme":{"light":"github-dark","dark":"material-theme-darker"}}
            import { PlatformClient, PlatformClientProvider } from '@suki-sdk/platform-react';

            const client = new PlatformClient({ env: 'staging', enableDebug: true, logLevel: 'error' });

            function App() {
              return (
                <PlatformClientProvider>
                  <YourApp />
                </PlatformClientProvider>
              );
            }
            ```

            **Next**: Authenticate with `useAuth` inside the provider tree
          </Step>

          <Step title="Authentication Hooks (45 Min)">
            Add the `useAuth` hook under the provider with your `partnerId` and `partnerToken` (see the [Authentication hook](/headless-web-sdk/guides/hooks/auth-hook) guide)

            ```jsx theme={"theme":{"light":"github-dark","dark":"material-theme-darker"}}
            import { useAuth } from '@suki-sdk/platform-react';

            function YourApp() {
              const { isLoggedIn, isPending, error, login } = useAuth({
                partnerId: 'your-partner-id',
                partnerToken: 'your-partner-token',
                // See Authentication hook guide for full options
              });
              // Render your own sign-in UI and loading states
            }
            ```

            **Next**: Create an ambient session with `useAmbient`
          </Step>

          <Step title="Session and Recording (60 to 90 Min)">
            Create a session with `useAmbient`, then use `useAmbientSession` for recording lifecycle and status

            **What you'll build**: Your own controls and layout (start, pause, submit) backed by hook state, plus retrieval of note content when processing completes

            **Next**: Follow the quickstart through your first end-to-end recording, then harden error handling

            For step-by-step code, use the quickstart and [Authentication hook](/headless-web-sdk/guides/hooks/auth-hook), [Ambient hook](/headless-web-sdk/guides/hooks/ambient-hook), and [Ambient session hook](/headless-web-sdk/guides/hooks/ambient-session-hook) guides.
          </Step>
        </Steps>

        [Headless Web SDK quickstart →](/headless-web-sdk/quickstart)
      </Tab>

      <Tab title="Mobile SDK Path" id="mobile-sdk-path">
        **Goal**: Install and configure the Suki Mobile SDK

        <Steps>
          <Step title="Install Framework (20 Min)">
            Add the Suki Mobile SDK to your iOS project

            **Methods**: SPM, CocoaPods, or manual installation

            **Next**: Configure permissions and capabilities
          </Step>

          <Step title="Basic Configuration (45 Min)">
            Initialize the SDK and set up basic configuration

            ```swift theme={"theme":{"light":"github-dark","dark":"material-theme-darker"}}
            import SukiSDK

            SukiSDK.configure(
                partnerId: "your-partner-id",
                environment: .staging
            )
            ```

            **Next**: Implement session management
          </Step>

          <Step title="First Ambient Session (60 Min)">
            Create a basic ambient session with recording capabilities

            **What you'll build**: A view controller that can create sessions, record audio, and retrieve generated notes

            **Next**: Test with device microphone and verify functionality
          </Step>
        </Steps>

        [Mobile SDK installation →](/mobile-sdk/installation)
      </Tab>

      <Tab title="REST APIs Path" id="rest-apis-path">
        **Goal**: Implement Suki's APIs directly in your application

        <Steps>
          <Step title="Authentication Implementation (60 Min)">
            Implement the authentication flow to get Suki tokens

            **Key endpoints**: `/api/v1/auth/register`, `/api/v1/auth/login`

            **Next**: Test token generation and validation
          </Step>

          <Step title="Session Management (90 Min)">
            Implement ambient session creation and management

            **Key endpoints**:

            * <Badge color="blue" size="sm">POST</Badge> `/api/v1/ambient/session/create` - Create session
            * <Badge color="blue" size="sm">POST</Badge> `/api/v1/ambient/session/{id}/context` - Set context
            * <Badge color="green" size="sm">GET</Badge> `WebSocket` - Audio streaming

            **Next**: Implement audio streaming
          </Step>

          <Step title="Content Retrieval (45 Min)">
            Implement note generation monitoring and content retrieval

            **Key endpoints**:

            * <Badge color="green" size="sm">GET</Badge> `/api/v1/ambient/session/{id}/status` - Check status
            * <Badge color="green" size="sm">GET</Badge> `/api/v1/ambient/session/{id}/content` - Get generated note

            **Next**: Test end-to-end workflow
          </Step>
        </Steps>

        [API overview →](/api-reference/overview)
      </Tab>
    </Tabs>
  </Tab>

  <Tab title="Form Filling Workflows" id="form filling-workflows-path">
    ### Integration choice

    **Goal**: Select the best integration method for Form filling in your application

    <Card>
      <CardGroup cols={2}>
        <Card title="Form Filling SDK" icon="react" href="/documentation/tutorials/learning-path#form-filling-sdk-path" arrow={true}>
          **Best for**: React or JavaScript web applications

          * Hosted Form filling UI in your page
          * SDK callbacks and Partner webhook delivery
          * Fastest browser implementation for Form filling
        </Card>

        <Card title="Form Filling APIs" icon="code" href="/documentation/tutorials/learning-path#form-filling-api-path" arrow={true}>
          **Best for**: Custom web, mobile, or backend integrations

          * REST session lifecycle and structured form output
          * Shared Partner WebSocket for visit audio
          * You build template selection, capture, and review UI
        </Card>
      </CardGroup>

      **Prerequisites**: <Tooltip tip="A unique identifier assigned by Suki during onboarding that links an application to its configuration in the Suki Developer Platform." cta="View in Glossary" href="/Glossary/p">Partner ID</Tooltip> and working authentication from Foundation setup (Steps 1–2)

      **Time**: 1-2 hours to evaluate options and read the decision guide

      <div style={{marginTop: '1rem'}}>
        <a href="/documentation/get-started/form-filling-integration-decision-guide" className="learning-path-button">Form filling integration decision guide</a>
      </div>
    </Card>

    ### Integration implementation

    <Tabs>
      <Tab title="Form Filling SDK Path" id="form-filling-sdk-path">
        **Goal**: Install and configure the Form filling SDK in a React or JavaScript web application

        <Steps>
          <Step title="Install Package (15 Min)">
            Install `@suki-sdk/core` plus `@suki-sdk/form-filling-react` for React or `@suki-sdk/form-filling` for plain JavaScript

            ```bash theme={"theme":{"light":"github-dark","dark":"material-theme-darker"}}
            npm install @suki-sdk/form-filling-react @suki-sdk/core
            ```

            Work with Suki's [Support team](mailto:support@suki.ai) to get **`template_id`** UUIDs for **`form_template_ids`**.

            **Next**: Create `SukiAuthManager` and `FormFillingClient` once per page
          </Step>

          <Step title="Basic Configuration (30 Min)">
            Create `SukiAuthManager` from `@suki-sdk/core` with your `partnerId`, `partnerToken`, and provider fields. Create `FormFillingClient` with that auth manager. In React, wrap with `FormFillingProvider` and reuse the same client with `useMemo`.

            ```jsx theme={"theme":{"light":"github-dark","dark":"material-theme-darker"}}
            import { useMemo } from 'react';
            import { SukiAuthManager } from '@suki-sdk/core';
            import { FormFillingClient, FormFillingProvider } from '@suki-sdk/form-filling-react';

            const client = useMemo(() => {
              const authManager = new SukiAuthManager({
                partnerId: 'YOUR_PARTNER_ID',
                partnerToken: 'YOUR_PARTNER_TOKEN',
                environment: 'staging',
                loginOnInitialize: true,
              });
              return new FormFillingClient({ authManager });
            }, []);
            ```

            **Next**: Open a Form filling session with `form_template_ids` and `correlation_id`
          </Step>

          <Step title="First Form Filling Session (45 Min)">
            Give Form filling a container with explicit height, then call `client.start()` or render `<FormFilling>` with your template IDs and encounter ID as `correlation_id`.

            **What you'll build**: A simple flow that opens the hosted Form filling UI, captures visit conversation by voice, and returns structured form output through `onSubmit` and your Partner webhook

            **Next**: Test with a supported Medical form template and verify structured output

            For step-by-step code, use the quickstart and [Configuration](/form-filling-sdk/guides/configuration) and [Session workflow](/form-filling-sdk/guides/integration-patterns) guides.
          </Step>
        </Steps>

        [Form filling SDK quickstart →](/form-filling-sdk/quickstart)
      </Tab>

      <Tab title="Form Filling APIs Path" id="form-filling-api-path">
        **Goal**: Implement Form filling REST APIs and the shared Partner WebSocket in your application

        <Steps>
          <Step title="Authentication Implementation (60 Min)">
            Implement the authentication flow to get Suki tokens for Form filling REST calls

            **Key endpoints**: `/api/v1/auth/register`, `/api/v1/auth/login`

            **Next**: Test token generation and call Form filling session APIs with `sdp_suki_token`
          </Step>

          <Step title="Session and Context (75 Min)">
            Create a Form filling session and optionally seed template context before audio capture

            **Key endpoints**:

            * <Badge color="blue" size="sm">POST</Badge> `/api/v1/form-filling/session/create` — Create session
            * <Badge color="blue" size="sm">POST</Badge> `/api/v1/form-filling/session/{ambient_session_id}/context` — Bind `form_template_id` values

            <Note>
              The session ID field is named **`ambient_session_id`**, but it is **not** the same ID as an Ambient API session. Use only the value returned from **Form filling** `/session/create` for Form filling REST and for **`/ws/stream`**.
            </Note>

            **Next**: List templates if needed, then open the audio WebSocket
          </Step>

          <Step title="Audio Streaming (90 Min)">
            Stream visit audio on the Partner WebSocket using your Form filling session ID

            **Connection**: `wss://` to `GET /ws/stream` (same wire format as ambient; see [Ambient audio streaming](/documentation/how-to/audio-streaming/ambient-audio-streaming))

            **Sequence**: **START\_TIME**, **AUDIO** chunks (Base64 PCM), **AUDIO** with **`EOF`** (`RU9G`), close the WebSocket, then call session **end** on REST

            **Next**: Poll status or configure a webhook for completion
          </Step>

          <Step title="Structured Output (45 Min)">
            End the session, monitor processing, and retrieve populated form fields

            **Key endpoints**:

            * <Badge color="blue" size="sm">POST</Badge> `/api/v1/form-filling/session/{ambient_session_id}/end` — End session
            * <Badge color="green" size="sm">GET</Badge> `/api/v1/form-filling/session/{ambient_session_id}/status` — Check status
            * <Badge color="green" size="sm">GET</Badge> `/api/v1/form-filling/session/{ambient_session_id}/structured-data` — Get **generated\_values** and **non\_generated\_values**

            **Optional**: [Webhook notifications](/api-reference/asynchronous/webhook) when processing finishes

            **What you'll build**: An end-to-end flow from login through structured form output in your UI or downstream systems

            **Next**: Test in-person and virtual scenarios, then harden error handling
          </Step>
        </Steps>

        [Form filling API quickstart →](/form-filling-api-reference/quickstart)
      </Tab>
    </Tabs>
  </Tab>
</Tabs>

***

## Advanced features

*Estimated Time: 1-2 weeks*

### Step 5: Add advanced capabilities

**Goal**: Enhance your integration with Suki's advanced features

<CardGroup cols={2}>
  <Card title="Multilingual Support" icon="language" href="/api-reference/capabilities/multilingual" cta="Learn more">
    **Time**: 2-3 hours

    Enable support for 80+ languages with automatic English note generation

    **Key Features**:

    * Automatic language detection
    * Multi-language conversations
    * English output standardization
  </Card>

  <Card title="Problem-Based Charting" icon="heart-pulse" href="/api-reference/capabilities/problem-based-charting" cta="Learn more">
    **Time**: 4-6 hours

    Implement diagnosis-focused documentation structure

    **Key Features**:

    * Problem-oriented notes
    * Diagnosis tracking
    * Enhanced clinical workflows
  </Card>

  <Card title="Custom Note Sections" icon="file-text" href="/documentation/concepts/ambient-clinical-notes/note-sections" cta="Learn more">
    **Time**: 2-4 hours

    Configure custom clinical note sections using LOINC codes

    **Key Features**:

    * 26+ standard sections
    * Custom section ordering
    * EHR integration ready
  </Card>

  <Card title="User Preferences" icon="user" href="/api-reference/user-preferences/preferences" cta="Learn more">
    **Time**: 3-5 hours

    Allow providers to customize their documentation preferences

    **Key Features**:

    * Personal note styling
    * Section preferences
    * Workflow customization
  </Card>
</CardGroup>

***

## Production readiness

*Estimated Time: 1 week*

### Step 6: Testing & optimization

**Goal**: Ensure your integration is production-ready

<Card>
  <CardGroup cols={1}>
    <Card title="What You Will Do" icon="flask">
      * Comprehensive testing with real clinical scenarios
      * Performance optimization and error handling
      * Security review and compliance verification
      * User acceptance testing with healthcare providers
    </Card>
  </CardGroup>

  **Key areas**:

  * Audio quality and streaming reliability
  * Note generation accuracy and speed
  * Error handling and recovery
  * HIPAA compliance verification

  **Time**: 3-5 days
</Card>

### Step 7: Go live

**Goal**: Deploy your Suki-powered application to production

<Card>
  <CardGroup cols={1}>
    <Card title="Production Deployment" icon="rocket">
      * Switch to production environment
      * Monitor initial usage and performance
      * Gather user feedback and iterate
      * Scale based on usage patterns
    </Card>
  </CardGroup>

  **Support resources**:

  * 24/7 technical support during launch
  * Performance monitoring and alerts
  * Regular check-ins with Suki team

  <div style={{marginTop: '1rem'}}>
    <a href="/documentation/references/support" className="learning-path-button">Get Support</a>
  </div>
</Card>

## Next steps

<Icon icon="file-lines" iconType="solid" /> If you have all the required information and `partner_id`, start with the [Quickstart](/documentation/get-started/quick-start) to get oriented.

<Icon icon="file-lines" iconType="solid" /> For **ambient** workflows, open the quickstart or overview for your path: [Web SDK](/web-sdk/quickstart), [Headless Web SDK](/headless-web-sdk/quickstart), [Mobile SDK](/mobile-sdk/overview), or [Ambient API overview](/api-reference/overview).

<Icon icon="file-lines" iconType="solid" /> For **cross-modality ambient interoperability**, see [Use ambient across modalities](/documentation/how-to/ambient-clinical-notes/use-ambient-across-modalities) and [Ambient interoperability](/documentation/concepts/ambient-clinical-notes/ambient-interoperability).

<Icon icon="file-lines" iconType="solid" /> For **Form filling** workflows, use the [Form filling SDK quickstart](/form-filling-sdk/quickstart), [Form filling API quickstart](/form-filling-api-reference/quickstart), and [Form filling overview](/documentation/concepts/form-filling/form-filling).
