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 |