Getting Started
Official Site
Getting Started
Official Site
  • Document description
  • Read before you start

  • Light application development guide

  • Mobile application development guide

  • Cloud live development guide

  • Desktop application development guide

  • Third party development guide

  • Message push development guide

  • IoT things data model

  • HTTP interface

  • Reference documents

On this page
Direct Answer
Why SaaS teams choose Open Platform over deep links
Architecture (text)
Steps: AppId → first live frame
1. Register and create an application
2. Bind cameras into the developer asset pool
3. Obtain accessToken on the BFF only
4. Confirm inventory with listDeviceDetailsByPage
5. Authorize in your SaaS, then mint play credentials
6. Initialize ImouPlayer and show the first frame
7. Harden after the first frame
API / SDK table
Playback path chooser
Definition of done for “first live frame”
Pitfalls (learned the hard way)

SaaS video monitoring with Imou: from AppId to first live frame

SaaS video monitoring with Imou: from AppId to first live frame

A retail SaaS team promised “cameras inside the product” for next quarter. Regional managers wanted live views next to store KPIs; support wanted footage beside tickets; security wanted role-based access that matched the existing org chart. The first prototype deep-linked into a consumer app. Internal demos looked fine—someone who already had the consumer login could open a camera in two taps.

Customer pilots told a different story. Branding, roles, and audit all lived outside the SaaS. Pilots asked simple questions the deep link could not answer: “Why can a store manager see another region’s cameras?” “Can we keep operators inside our UI?” “Where is the access log for who watched Store 14 at 2 a.m.?” Product realized they had shipped a shortcut, not an integration.

The fix was not more UI polish. It was Imou Open Platform end to end: AppId → bind devices → BFF tokens → first live frame in their own page. This hub guide walks that path so your team can reach a trustworthy first frame before you design multi-camera walls or mobile apps.

Direct Answer

You can integrate Imou IP camera video monitoring into a SaaS or web product by creating an application on Imou Open Platform, binding devices to the developer asset pool, calling OpenAPI with server-side accessToken, and playing live with ImouPlayer (getKitToken), native OpenSDK, or cloud live APIs (bindDeviceLive / createDeviceRtmpLive). Your product still owns multi-tenant ACL; the cloud delivers devices and streams subject to device capability and subscribed services. Start with one camera and one authorized user—prove the frame, then scale.

Why SaaS teams choose Open Platform over deep links

Deep links optimize for “someone can see video somehow.” SaaS products optimize for “the right person sees the right camera inside our product, with our audit trail.” Open Platform gives you device inventory APIs, short-lived play credentials, and player/SDK surfaces designed for embedding. You keep tenant isolation, site hierarchy, and feature flags. Imou keeps connectivity, streaming protocols, and cloud services that depend on the device model and packages the customer subscribed to.

For retail and multi-site ops, that split is the entire value proposition: cameras become another object in your domain model—like a POS terminal or a door controller—not a foreign app operators must context-switch into.

Architecture (text)

┌─────────────────────────────────────┐
│  SaaS UI (tenant / site / role ACL) │
│  Live tab · camera detail · wall    │
└──────────────────┬──────────────────┘
                   │ session + camera id
                   ▼
┌─────────────────────────────────────┐
│  Your BFF                           │
│  • enforce SaaS ACL                 │
│  • cache accessToken                │
│  • mint kitToken / live URL         │
│  • never expose appSecret           │
└──────────────────┬──────────────────┘
                   │ OpenAPI
                   ▼
┌─────────────────────────────────────┐
│  Imou Open Platform                 │
│  Video Monitoring APIs / SDKs       │
└──────────────────┬──────────────────┘
                   ▼
            Bound cameras

Keep this diagram on the whiteboard. Most integration surprises come from collapsing layers—especially putting OpenAPI secrets in the UI or assuming cloud auth replaces tenant ACL.

Steps: AppId → first live frame

1. Register and create an application

Sign up at open.imoulife.com. Create an application and save appId / appSecret in server secrets (dev/stage/prod separated). Name apps after environments so a leaked staging secret cannot touch production cameras. Treat appSecret like a database password: rotate-capable, never in mobile binaries or frontend env files.

2. Bind cameras into the developer asset pool

Add supported Imou cameras so OpenAPI can list and stream them. Consumer-app visibility is not enough. The retail team’s first failure after “going OpenAPI” was calling device list APIs against cameras that only existed in a personal consumer account. Binding is the line between demo hardware and developer-accessible assets.

3. Obtain accessToken on the BFF only

Call [accessToken](https://open.imoulife.com/book/http/accessToken.html) from your backend. Cache it server-side. This token authenticates OpenAPI—it is not what ImouPlayer consumes. Never ship appSecret or long-lived admin tokens to browsers.

4. Confirm inventory with listDeviceDetailsByPage

Call [listDeviceDetailsByPage](https://open.imoulife.com/book/http/device/manage/query/listDeviceDetailsByPage.html) with pageSize between 1 and 50. Persist deviceId, channel, and metadata into your site/store tables. For the first success path, pick one camera you can physically verify. Resist wiring a 16-tile wall before one tile works—the retail team burned a week on “dashboard UX” while the single-camera path still returned empty inventory.

5. Authorize in your SaaS, then mint play credentials

When a user opens Live, your BFF:

  1. Validates the session
  2. Checks tenant/site/role ACL for that camera
  3. Uses cached accessToken to call getKitToken (web)
  4. Returns only { kitToken, expiresAt, streamId } to the client

Optional paths after the same ACL check: bindDeviceLive for HLS, createDeviceRtmpLive for RTMP, or OpenSDK session flows for native apps. If ACL fails, stop—do not call play APIs “just to see if video works.”

6. Initialize ImouPlayer and show the first frame

Follow JavaScript development. Host player assets and WasmLib. Initialize with **kitToken**, not accessToken. Prefer streamId = 1 (SD) for first-frame reliability on shared networks; switch to streamId = 0 (HD) for inspection. Destroy the player when the user leaves the page.

7. Harden after the first frame

  • Cache kitToken about 1 hour on the BFF; TTL is about 2 hours
  • Log credential issuance for audit (who requested which camera)
  • Align live-view concurrency with My Resources
  • Expand to multi-camera slots only after the single-tile path is boringly reliable
  • Gate talk/PTZ/playback UI on device capability and subscribed services

API / SDK table

NeedUseNotes
OpenAPI authaccessTokenServer only; cache on BFF
Device ledgerlistDeviceDetailsByPagepageSize 1–50
Interactive web livegetKitToken + ImouPlayerkitToken ≠ accessToken
HLS live URLbindDeviceLiveTreat URL as secret; streamId 0=HD, 1=SD
RTMP live URLcreateDeviceRtmpLiveProtocol pipelines
Live object lifecycleLive list / status / unbindSee live summary
Native Android / iOSOpenSDKResource download
Product overviewVideo Monitoringopen.imoulife.com/videoMonitor

Playback path chooser

Client surfaceRecommended pathWhen to choose it
SaaS web Live tabImouPlayerDefault for in-product monitoring
Custom HLS player / gated sharebindDeviceLivePartner already speaks HLS
Media server / RTMP consumercreateDeviceRtmpLivePipeline requirement
Native field appOpenSDKPrimary client is mobile

The retail SaaS team shipped ImouPlayer first for store managers on desktop, then added OpenSDK for district managers on phones. They only added HLS later for a partner kiosk that already used an HLS client.

Definition of done for “first live frame”

  • Authenticated SaaS user only
  • Camera allowed by tenant/site ACL
  • Player shows live video from a bound device
  • No appSecret / accessToken in browser traces for player init
  • Stream stops when the user leaves the page
  • kitToken refresh path exists before the ~2 hour expiry

When that checklist is green, you have a foundation for dashboards, mobile clients, and shareable live paths—without redoing security later.

Pitfalls (learned the hard way)

  1. Consumer visibility ≠ Open Platform visibility. Bind first or inventory and live APIs look “broken.”
  2. **kitToken ≠ accessToken.** Feeding accessToken into ImouPlayer is a classic black screen.
  3. Secrets in the SPA. appSecret in frontend env is an incident, not a shortcut.
  4. Skipping SaaS ACL. Developer accessToken authenticates your app, not the end user. One shared token for all tenants is an anti-pattern.
  5. HD wall before first frame. Bandwidth and quota hide the real bug. Prove one SD tile.
  6. Prefetching every live source at login. Sources expire; operators see 404s and empty tiles.
  7. Assuming talk/PTZ/cloud playback always exist. Capabilities depend on device and subscribed services—verify before the customer demo script.
  8. Ignoring live-view resources. Check My Resources before promising concurrent viewers.
  9. Live URLs treated as public links. HLS/RTMP addresses can be watched by anyone who obtains them—gate issuance.
  10. No player teardown. Background streams waste quota and CPU after navigation.