Skip to main content

Documentation Index

Fetch the complete documentation index at: https://crsdk.app/llms.txt

Use this file to discover all available pages before exploring further.

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.

Quick Start

Install, capture a photo, and run it — in under 5 minutes

Compatibility

Per-camera API support, connection modes, and OS compatibility

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.camera(id)
import { CameraManager } from 'camera-remote-web-api/server';

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

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

await manager.start();

CameraManager

Options, connection modes, and the full CameraManager API

System Design

Browser vs server variants and framework patterns

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.

CameraClient

Typed HTTP client for all endpoints

EventStream

SSE client for real-time camera notifications

LiveViewStream

WebSocket client for continuous JPEG streaming

ServerManager

Low-level binary process manager

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.