Skip to main content
The Client SDK is a community-built developer tool and is not officially supported by Sony. Only the Camera Remote SDK (C++/C#) is an official Sony product.
The Client SDK (camera-remote-web-api) is a TypeScript package that wraps the Camera Remote Web API. It offers two ways to interact with cameras:
  • StatelessCameraManager handles discovery, connection, reconnection, and state tracking automatically. Most users should start here.
  • Stateful — Import CameraClient, EventStream, LiveViewStream, and ServerManager individually for full manual control over the connection lifecycle.

Stateless vs Stateful

CameraManager (Stateless)Individual Classes (Stateful)
StateManaged for youYou own and manage all state
Connection lifecycleAutomatic — discovery, connect, reconnectManual — call connectCamera() and wait for SSE callback
Server binaryManaged internallyYou spawn and stop ServerManager yourself
Event subscriptionsmanager.on() for lifecycle eventsWire up EventStream per camera
Camera selectionAll cameras auto-connectedYou choose which cameras to connect
Best forMost applicationsCustom connection managers, selective camera control, browser-only clients

Stateless: CameraManager

CameraManager is the only class most users need. It abstracts three concerns:
  1. Camera state management — discovery, connection, reconnection, and state tracking happen automatically
  2. Server binary management — spawns and monitors the native binary (server variant only)
  3. Typed camera control — property read/write, shutter/focus/zoom actions, live view, and SD card access via manager.client
import { CameraManager } from 'camera-remote-web-api/server';

const manager = new CameraManager({ port: 8080 });

manager.on('camera-ready', async ({ cameraId }) => {
  await manager.client.setPriorityKey(cameraId, { setting: 'pc-remote' });
  await manager.client.triggerShutter(cameraId);
});

await manager.start();

Stateful: Individual Classes

For advanced use cases, import the individual classes that CameraManager uses internally. This gives you full control over the connection lifecycle, event subscriptions, and binary management.

Client SDK vs HTTP API

Client SDKHTTP API
Type safetyFull TypeScript types for all operationsRaw JSON request/response
SSE eventsBuilt-in subscription via manager.on() and EventStreamManual SSE client setup
LanguageTypeScript/JavaScript onlyAny language with HTTP support
Use the Client SDK unless you need language-agnostic HTTP access or want full manual control over the request lifecycle. For raw HTTP endpoints, see the API Reference.