InstaVision iOS SDK

The InstaVision iOS SDK (IVSDK) embeds InstaVision’s camera platform into your own iOS app. It covers the whole lifecycle: creating an account, pairing a camera over Bluetooth, streaming live video over WebRTC, browsing recorded events, and enrolling a home in professional monitoring.

Requirements

   
Platform iOS 15.5+
Language Swift 5.9+
Distribution CocoaPods
Import import IVSDK

Get started InstaSDK reference


What the SDK does

Accounts and access. Email/password, Sign in with Apple and Google Sign-In. Tokens are stored in the keychain and refreshed transparently. An app that authenticates users elsewhere can hand the SDK a token instead.

Spaces. A space is a home or site. It owns cameras, members and events, and every other API is scoped to one. Spaces can be shared with other users, per camera and per role.

Cameras. Pair a new camera over BLE, then read and write its settings — detection sensitivity, schedules, night vision, activity zones, privacy mode, PTZ, firmware, SD card.

Live video. WebRTC live view and SD-card playback, with two-way audio and video calling, snapshots, recording, and a manual siren.

Events. A searchable feed of what the cameras detected, with AI classification, filtering, paging and cross-device delete sync.

Professional monitoring. Arm and disarm a security profile, handle alarms within a dismissal window, manage responding parties, and read the security audit log.

Household features. Face registration for known people, pet profiles with recognition and activity insights, and baby profiles with growth tracking, care logging and a lullaby player.


How it fits together

InstaSDK.shared.configure(partnerId:region:environment:)
        │
        ├── Factory.userService ────── sign in, profile, push tokens
        │
        └── after sign-in
             │
             ├── Factory.spaceService ──── spaces, events, pairing sessions
             │        │
             │        └── spaceId ───────► every other call
             │
             ├── Factory.deviceService ─── settings, firmware, PTZ, SD card
             ├── Factory.subscriptionService
             ├── Factory.proMonitoringService
             ├── Factory.faceService / babyService / petService
             │
             ├── BLEManager.instance ───── pair a new camera
             └── LiveViewObjectStore ───── live view and playback

Two ideas carry across the whole API:

Everything is reached through Factory. Services are protocol-typed singletons; you never construct one — Factory.userService, Factory.deviceService, and so on.

Everything returns IVPublisher<T>. A Combine publisher that never fails — errors arrive as ResourceState.error values, so one exhaustive switch handles loading, success and failure.

Factory.spaceService.spaces()
    .receive(on: DispatchQueue.main)
    .sink { state in
        switch state {
        case .loading:            showSpinner()
        case let .success(spaces): render(spaces)
        case let .error(error):    showAlert(error.localizedDescription)
        }
    }
    .store(in: &cancellables)

Where to go next

If you want to… Start at
Install and configure the SDK Getting Started
Look up InstaSDK itself InstaSDK
Sign a user in User Services
Pair a camera BLE Services
Show live video Live View Streaming
Play back from the SD card SD Card Playback
List and filter events Event Services
See what changed Change Log