> ## Documentation Index
> Fetch the complete documentation index at: https://crsdk.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Overview

> RESTful control for Sony cameras — shooting, settings, live view, and file transfer

<Note>
  The Alpha Camera REST API is a community-built developer tool and is **not officially supported by Sony**. It is built on Sony's native Camera Remote SDK, but this site focuses on the REST API, client SDKs, and tools.
</Note>

The Alpha Camera REST API provides HTTP endpoints to control Sony cameras connected via USB or network. It runs as a local server and supports multi-camera simultaneous operation.

## Connection Modes

| Mode              | Capabilities                                                                               |
| ----------------- | ------------------------------------------------------------------------------------------ |
| `remote`          | Full camera control — shooting, settings, live view. Auto-transfers images to the host PC. |
| `remote-transfer` | Full camera control + explicit SD card file access. Most capable mode.                     |
| `contents`        | SD card file access only. No shooting or settings control.                                 |

## Architecture

The Alpha Camera REST API is an HTTP + SSE server built on Sony's native Camera Remote SDK. It translates RESTful requests into native SDK calls, enabling camera control from any language or tool that can make HTTP requests.

If you'd rather call typed methods than build URLs by hand, three [language clients](/sdk/overview) wrap this API:

* **TypeScript / Node** — [`@alpha-sdk/client`](/sdk/typescript)
* **Python** — [`alpha-sdk-client`](/sdk/python)
* **Swift (iOS / macOS)** — [`AlphaSDK`](/sdk/swift)

To run the server itself: `npm install -g @alpha-sdk/api && camera-server start`. Or embed it in your Node app via the [`ServerManager`](/web-api/server) class.

## Quick Start

<Card title="Alpha Camera REST API overview" href="/web-api/overview">
  Discover, connect, and shoot with curl in under 5 minutes
</Card>

<Steps>
  <Step title="Discover cameras">
    ```bash theme={null}
    curl http://localhost:8080/api/cameras
    ```
  </Step>

  <Step title="Connect">
    ```bash theme={null}
    curl -X POST http://localhost:8080/api/cameras/{id}/connection \
      -H "Content-Type: application/json" \
      -d '{"mode": "remote"}'
    ```
  </Step>

  <Step title="Set Priority Key">
    ```bash theme={null}
    curl -X PUT http://localhost:8080/api/cameras/{id}/priority-key \
      -H "Content-Type: application/json" \
      -d '{"setting": "pc-remote"}'
    ```

    <Warning>Priority key **must** be set to `pc-remote` before the camera accepts remote commands.</Warning>
  </Step>

  <Step title="Configure settings">
    ```bash theme={null}
    curl -X PUT http://localhost:8080/api/cameras/{id}/properties/iso \
      -H "Content-Type: application/json" \
      -d '{"value": "400"}'
    ```
  </Step>

  <Step title="Shoot">
    ```bash theme={null}
    curl -X POST http://localhost:8080/api/cameras/{id}/actions/af-shutter
    ```
  </Step>

  <Step title="Disconnect">
    ```bash theme={null}
    curl -X DELETE http://localhost:8080/api/cameras/{id}/connection
    ```
  </Step>
</Steps>

## Base URL

```
http://localhost:8080
```

The server runs locally. The port is configurable via `--port` flag or the TypeScript `CameraServer({ port })` option.

## Response Format

All endpoints return JSON with a consistent shape:

```json theme={null}
{
  "success": true,
  "message": "Description of what happened",
  "camera": {
    "connected": true,
    "model": "ILCE-9M3",
    "id": "D10F60149B0C"
  },
  "data": { ... }
}
```

Errors return `"success": false` with an HTTP status of `400`, `404`, or `500`.

## Compatibility

Not all APIs are supported on every camera model. See the [Compatibility](/web-api/compatibility) page for per-camera API support, connection mode requirements, and OS compatibility.
