> ## 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.

# Mobile SDK Capabilities

> Core features and capabilities of the Suki Mobile SDK for iOS healthcare applications

<div className="quick-summary-wrapper">
  <div className="quick-summary-header">
    <span className="quick-summary-icon" aria-hidden="true" />

    <span className="quick-summary-title">Quick summary</span>
  </div>

  <div className="quick-summary-content">
    The Suki Mobile SDK lets you add AI-powered clinical documentation to your iOS healthcare app. It's a headless SDK, which means you build your own user interface
    while using Suki's backend features for recording conversations and generating clinical notes.
  </div>

  <div className="quick-summary-footer">
    <span className="quick-summary-footer-icon" aria-hidden="true" />

    <span className="quick-summary-footer-text">Last updated:</span>
    <span className="quick-summary-footer-date">July 2026</span>
  </div>
</div>

The Suki Mobile SDK lets you add AI-powered clinical documentation to your iOS healthcare app. It's a **headless SDK**, which means you build your own user interface while using Suki's backend features for recording conversations and generating clinical notes.

**What can you do with the Mobile SDK?**

* **Record conversations**: Capture patient-provider conversations using the device microphone
* **Generate clinical notes**: Automatically create structured clinical documentation from conversations
* **Work offline**: Continue recording even when the network is unstable or unavailable
* **Manage sessions**: Control when recording starts, stops, pauses, and resumes
* **Stay secure**: All data is encrypted and HIPAA-compliant

**How it works:**

The Mobile SDK handles the complex parts, audio recording, transcription, and note generation, while you focus on building your app's user interface. You call SDK methods to start and stop recording, and the SDK handles everything else in the background.

## Core capabilities

### Session management

You control the entire lifecycle of clinical documentation sessions:

**What you can do:**

<CardGroup cols={2}>
  <Card title="Create Sessions" icon="plus">
    Start a new session with patient information, clinical sections (LOINC codes), and provider details
  </Card>

  <Card title="Control Recording" icon="microphone">
    Start, pause, resume, end, or cancel recording at any time
  </Card>

  <Card title="Update Context" icon="user">
    Change patient information or session details during an active session
  </Card>

  <Card title="Support Multiple Languages" icon="globe">
    Enable multilingual support so patients can speak in their preferred language
  </Card>
</CardGroup>

**Example workflow:**

```mermaid actions={false} theme={"theme":{"light":"github-dark","dark":"material-theme-darker"}}
%%{init: {'theme':'base', 'themeVariables': { 'primaryColor':'#FFF394','primaryTextColor':'#111827','primaryBorderColor':'#FFE148','lineColor':'#FFE148','secondaryColor':'#FFE148','tertiaryColor':'#FFFADE','mainBkg':'#FFF394','secondBkg':'#FFFADE','tertiaryBorderColor':'#FFE148','border1':'#FFE148','border2':'#FFE148','arrowheadColor':'#FFE148','fontFamily':'Inter, system-ui, sans-serif','fontSize':'14px','nodeBorder':'#FFE148','edgeLabelBackground':'#FFE148','clusterBkg':'#FFFADE','clusterBorder':'#FFE148','defaultLinkColor':'#FFE148','titleColor':'#111827','nodeTextColor':'#111827'}}}%%
flowchart TD
    A[Create Session<br/>Patient: John Doe<br/>Sections: History & Assessment] --> B[Start Recording<br/>Visit Begins]
    B --> C{Need to Pause?<br/>e.g., Private Conversation}
    C -->|Yes| D[Pause Recording]
    D --> E[Resume Recording]
    E --> C
    C -->|No| F[Continue Recording]
    F --> G[Visit Complete]
    G --> H[End Session]
    H --> I[Retrieve Generated<br/>Clinical Note]
    
    style A fill:#FFF394,stroke:#FFE148,stroke-width:2px,color:#111827
    style B fill:#FFF394,stroke:#FFE148,stroke-width:2px,color:#111827
    style C fill:#FFF394,stroke:#FFE148,stroke-width:2px,color:#111827
    style D fill:#FFF394,stroke:#FFE148,stroke-width:2px,color:#111827
    style E fill:#FFF394,stroke:#FFE148,stroke-width:2px,color:#111827
    style F fill:#FFF394,stroke:#FFE148,stroke-width:2px,color:#111827
    style G fill:#FFF394,stroke:#FFE148,stroke-width:2px,color:#111827
    style H fill:#FFF394,stroke:#FFE148,stroke-width:2px,color:#111827
    style I fill:#FFF394,stroke:#FFE148,stroke-width:2px,color:#111827
```

<Tip>
  Always provide **complete patient context** (demographics, visit type, etc.) when creating sessions. This helps Suki generate more accurate and relevant clinical notes.
</Tip>

### Offline mode

The Mobile SDK keeps working even when the network is unstable or unavailable.

**How offline mode works:**

```mermaid actions={false} theme={"theme":{"light":"github-dark","dark":"material-theme-darker"}}
%%{init: {'theme':'base', 'themeVariables': { 'primaryColor':'#FFF394','primaryTextColor':'#111827','primaryBorderColor':'#FFE148','lineColor':'#FFE148','secondaryColor':'#FFE148','tertiaryColor':'#FFFADE','mainBkg':'#FFF394','secondBkg':'#FFFADE','tertiaryBorderColor':'#FFE148','border1':'#FFE148','border2':'#FFE148','arrowheadColor':'#FFE148','fontFamily':'Inter, system-ui, sans-serif','fontSize':'14px','nodeBorder':'#FFE148','edgeLabelBackground':'#FFE148','clusterBkg':'#FFFADE','clusterBorder':'#FFE148','defaultLinkColor':'#FFE148','titleColor':'#111827','nodeTextColor':'#111827'}}}%%
flowchart TD
    A[Network Connection Active] --> B[Network Drops]
    B --> C[15-Second Buffer<br/>Wait for Reconnection]
    C --> D{Network<br/>Restored?}
    D -->|Yes| A
    D -->|No| E[Go Fully Offline]
    E --> F[Local Storage<br/>Encrypted Audio & Session Data<br/>Stored on Device]
    F --> G[Network Returns]
    G --> H[Automatic Sync<br/>Upload Stored Data]
    H --> I[Queue Management<br/>Process Multiple Sessions<br/>in Order]
    I --> A
    
    style A fill:#FFF394,stroke:#FFE148,stroke-width:2px,color:#111827
    style B fill:#FFF394,stroke:#FFE148,stroke-width:2px,color:#111827
    style C fill:#FFF394,stroke:#FFE148,stroke-width:2px,color:#111827
    style D fill:#FFF394,stroke:#FFE148,stroke-width:2px,color:#111827
    style E fill:#FFF394,stroke:#FFE148,stroke-width:2px,color:#111827
    style F fill:#FFF394,stroke:#FFE148,stroke-width:2px,color:#111827
    style G fill:#FFF394,stroke:#FFE148,stroke-width:2px,color:#111827
    style H fill:#FFF394,stroke:#FFE148,stroke-width:2px,color:#111827
    style I fill:#FFF394,stroke:#FFE148,stroke-width:2px,color:#111827
```

**Why this matters:**

Clinicians often work in areas with poor network coverage (hospitals, clinics, remote locations). Offline mode ensures they can continue documenting without interruption, and their data syncs automatically when connectivity returns.

<Note>
  The **15-second** buffer gives you time to show a "Connection unstable" message in your UI before the session enters full offline mode.
</Note>

### AI-powered note generation

Suki's AI automatically transforms conversations into structured clinical notes.

**What gets generated:**

<CardGroup cols={2}>
  <Card title="Structured Sections" icon="list">
    Notes organized by clinical sections you specify (using LOINC codes)
  </Card>

  <Card title="Real-Time Updates" icon="clock">
    See content being generated as the conversation happens
  </Card>

  <Card title="Medical Accuracy" icon="heart">
    Uses healthcare-specific terminology and context
  </Card>

  <Card title="Formatted Output" icon="file-text">
    Clean, professional notes ready for EHR integration
  </Card>
</CardGroup>

**Example:**

<Callout>
  During a conversation, the AI might generate:

  * **History of Present Illness**: "Patient presents with 3-day history of chest pain..."
  * **Assessment**: "Acute coronary syndrome, rule out myocardial infarction"
  * **Plan**: "Order EKG, cardiac enzymes, consider cardiac catheterization"
</Callout>

The SDK handles all the complex AI processing; you just retrieve the final note when the session ends.

### Problem-Based Charting (PBC)

When your integration uses **Problem-Based Charting**, pass the patient's existing diagnoses with `SukiAmbientConstant.kDiagnosisInfo` in `setSessionContext`, and retrieve suggested diagnoses after the session with `getStructuredData(for:)`.

### Configuration options

The SDK offers flexible configuration to match your app's needs:

**Environment settings:**

* Choose development, staging, or production environments
* Configure endpoints and API URLs

**Recording options:**

* Enable or disable background recording (when app is minimized)
* Control audio quality and encoding settings

**Authentication:**

* Secure token management with automatic refresh
* Partner ID and provider information setup

**Event handling:**

* Use delegate patterns to receive real-time session updates
* Subscribe to events like recording started, paused, or note generated

**Example:**

```swift Swift theme={"theme":{"light":"github-dark","dark":"material-theme-darker"}}
// Set environment
SukiAmbientCoreManager.shared.environment = .production

// Configure background recording
let partnerInfo: [String: AnyHashable] = [
    SukiAmbientConstant.kPartnerId: "your-partner-id",
    // ... other config
]
```

This flexibility lets you adapt the SDK to your specific workflow and requirements.

### Security and HIPAA compliance

The Mobile SDK is built with healthcare-grade security to protect patient data.

**Security features:**

* **End-to-end encryption**: All audio and clinical data is encrypted during transmission and when stored
* **HIPAA compliant**: Designed to meet healthcare privacy and security requirements
* **Secure authentication**: Tokens are handled securely with automatic refresh
* **Device protection**: Offline data stored on the device is also encrypted

<Check>
  All audio data and clinical content is encrypted both in transit and when stored locally on the device.
</Check>

### Real-time monitoring

Track session status and respond to events as they happen.

**What you can monitor:**

```mermaid actions={false} theme={"theme":{"light":"github-dark","dark":"material-theme-darker"}}
%%{init: {'theme':'base', 'themeVariables': { 'primaryColor':'#FFF394','primaryTextColor':'#111827','primaryBorderColor':'#FFE148','lineColor':'#FFE148','secondaryColor':'#FFE148','tertiaryColor':'#FFFADE','mainBkg':'#FFF394','secondBkg':'#FFFADE','tertiaryBorderColor':'#FFE148','border1':'#FFE148','border2':'#FFE148','arrowheadColor':'#FFE148','fontFamily':'Inter, system-ui, sans-serif','fontSize':'14px','nodeBorder':'#FFE148','edgeLabelBackground':'#FFE148','clusterBkg':'#FFFADE','clusterBorder':'#FFE148','defaultLinkColor':'#FFE148','titleColor':'#111827','nodeTextColor':'#111827'}}}%%
graph LR
    SDK[Mobile SDK] -->|Session State| A[Recording Starts<br/>Pauses<br/>Resumes<br/>Ends]
    SDK -->|Content Updates| B[Note Content<br/>Generated]
    SDK -->|Network Status| C[Goes Offline<br/>Comes Back Online]
    SDK -->|Errors| D[Error Information<br/>Detailed Messages]
    
    style SDK fill:#FFF394,stroke:#FFE148,stroke-width:3px,color:#111827
    style A fill:#FFF394,stroke:#FFE148,stroke-width:2px,color:#111827
    style B fill:#FFF394,stroke:#FFE148,stroke-width:2px,color:#111827
    style C fill:#FFF394,stroke:#FFE148,stroke-width:2px,color:#111827
    style D fill:#FFF394,stroke:#FFE148,stroke-width:2px,color:#111827
```

**How it works:**

The SDK uses a delegate pattern to broadcast events during a session's lifecycle. You conform to the `SukiAmbientSessionDelegate` protocol and implement the `sukiAmbient(sessionEvent:for:)` method to receive real-time updates.

**Example events:**

* `.started` - Recording starts
* `.paused` - Recording is paused
* `.resumed` - Recording resumes
* `.ended` - Recording ends
* `.suggestionsGenerated` - Note content is ready
* `.convertedToOfflineSession` - Session goes offline
* `.suggestionsGenerationFailed` - Note generation fails

### Easy integration

The Mobile SDK is designed to be simple to integrate and use.

**Developer-friendly features:**

* **Swift APIs**: Native Swift interfaces that feel natural to iOS developers
* **Clear documentation**: Comprehensive guides and code examples
* **Sensible defaults**: Works out of the box with minimal configuration
* **Production ready**: Battle-tested SDK used in real healthcare applications
* **Scalable**: Works for small clinics or large hospital systems

## Next steps

<Icon icon="file-lines" iconType="solid" /> Learn how to [Install the Mobile SDK](/mobile-sdk/installation) and [Create your first session](/mobile-sdk/ambient-guides/create-session).
