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

# Set a camera property

> Set a camera property value. Accepts hex values (from GET response `available_values`)
or human-readable strings (e.g. `"f/5.6"`, `"1/250"`, `"wide"`).

The server validates against the camera's current available values and checks
writability before sending to the SDK.




## OpenAPI

````yaml /openapi.yaml put /api/cameras/{cameraId}/properties/{propertyName}
openapi: 3.1.0
info:
  title: Alpha Camera REST API
  version: 3.0.0
  description: >
    RESTful control for Sony cameras — shooting, settings, live view with OSD
    overlay,

    focus control, and file transfer through a clean HTTP interface.


    Built on the Sony Camera Remote SDK. Supports USB and network camera
    connections

    with multi-camera simultaneous operation.


    ## Connection Modes


    | Mode | Description |

    |------|-------------|

    | `remote` | Full camera control: shooting, settings, live view.
    Auto-transfer images to host PC. |

    | `remote-transfer` | Camera control + explicit SD card file access. Most
    capable mode. |

    | `contents` | SD card file access only. No shooting or settings control. |


    ## Quick Start


    1. `GET /api/cameras` — discover cameras

    2. `POST /api/cameras/{id}/connection` — connect

    3. `PUT /api/cameras/{id}/priority-key` — set to `pc-remote`

    4. `PUT /api/cameras/{id}/properties/{name}` — configure settings

    5. `POST /api/cameras/{id}/actions/af-shutter` — shoot

    6. `DELETE /api/cameras/{id}/connection` — disconnect


    ## Priority Key Requirement


    The camera's priority key **must** be set to `pc-remote` before it accepts
    any

    remote property changes or shooting commands.
  license:
    name: Proprietary
  contact:
    name: Camera Remote SDK
    url: https://github.com/ocjlee888/camera-remote-sdk-project
servers:
  - url: http://{host}:{port}
    description: |
      Local camera server. The server binary runs on the host that has the
      camera physically connected (USB or network). Defaults to
      `http://localhost:8080`; override `host` and `port` when the server
      runs on a different machine (e.g. a Raspberry Pi next to the camera).
    variables:
      host:
        default: localhost
        description: Host running the camera server binary
      port:
        default: '8080'
        description: Port the camera server is listening on
security: []
tags:
  - name: Connection
    description: Camera discovery, connection, and disconnection
  - name: Properties
    description: Read and write camera properties (ISO, aperture, shutter speed, etc.)
  - name: Actions
    description: Shooting commands and motor control (shutter, zoom, focus)
  - name: Live View
    description: Live view streaming and OSD overlay control
  - name: Events
    description: Server-Sent Events for real-time camera callbacks
  - name: SD Card
    description: SD card file browsing and download
  - name: Settings
    description: Save path configuration and camera settings file management
  - name: Server
    description: Server health, status, and log retrieval
paths:
  /api/cameras/{cameraId}/properties/{propertyName}:
    put:
      tags:
        - Properties
      summary: Set a camera property
      description: >
        Set a camera property value. Accepts hex values (from GET response
        `available_values`)

        or human-readable strings (e.g. `"f/5.6"`, `"1/250"`, `"wide"`).


        The server validates against the camera's current available values and
        checks

        writability before sending to the SDK.
      operationId: setProperty
      parameters:
        - $ref: '#/components/parameters/cameraId'
        - $ref: '#/components/parameters/propertyName'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PropertySetRequest'
      responses:
        '200':
          description: Property set successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CameraResponse'
        '400':
          description: |
            Malformed request body, missing `value`, unknown property, invalid
            value format, property not writable, camera not connected, or the
            camera rejected the property set in its current state.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
components:
  parameters:
    cameraId:
      name: cameraId
      in: path
      required: true
      description: Camera identifier (e.g. `D10F60149B0C`)
      schema:
        type: string
    propertyName:
      name: propertyName
      in: path
      required: true
      description: Property name
      schema:
        $ref: '#/components/schemas/PropertyName'
  schemas:
    PropertySetRequest:
      type: object
      required:
        - value
      properties:
        value:
          type: string
          description: |
            Hex value from `available_values` (e.g. `"0x1007d"`), human-readable
            string (e.g. `"1/125"`, `"f/5.6"`, `"wide"`), or decimal string.
    CameraResponse:
      type: object
      description: |
        Generic envelope returned by most camera operations. The shape of
        `data` varies per endpoint — most operations return an empty or
        null `data`; operations that return structured data document a
        specific shape. SDK-generated types can treat `data` as an opaque
        map for generic endpoints.
      required:
        - success
      properties:
        success:
          type: boolean
        message:
          type: string
        camera:
          $ref: '#/components/schemas/CameraSummary'
        data:
          type: object
          additionalProperties: true
    ErrorResponse:
      type: object
      description: |
        Standard non-2xx response envelope. The API does not currently expose a
        stable machine-readable error code in the JSON body, so clients should
        branch on HTTP status first and then inspect `message` for the
        human-readable reason.
      example:
        success: false
        message: Camera not connected
        camera:
          connected: false
          model: ILCE-7M4
          id: D06CE05E3323
      required:
        - success
        - message
      properties:
        success:
          type: boolean
          const: false
          example: false
        message:
          type: string
          example: Camera not connected
        camera:
          $ref: '#/components/schemas/CameraSummary'
    PropertyName:
      type: string
      description: >
        Canonical REST property names. Mirrors the server's `PROPERTY_MAP`

        (`webapp/server/src/CameraWebController.cpp`). Use `GET /properties/all`

        to see the full set with current values, writability, and accepted
        ranges

        for the connected camera.


        Some properties are read-only on every body (status / state fields).

        Others are read-only depending on shooting mode (e.g. `aperture` is

        read-only outside Manual / Aperture-priority modes). Always check the

        `writable` field on a single GET before attempting a SET.


        ## Property tiers


        **Core (R/W):** `iso`, `aperture`, `shutter-speed`, `drive-mode`,

        `white-balance`, `focus-mode`, `exposure-program-mode`,

        `still-image-store-destination`


        **Image format:** `file-format`, `image-quality`, `raw-compression`


        **Focus:** `focus-area`, `focus-distance` (read), `focus-position`,

        `focus-position-current` (read), `focus-driving-status` (read)


        **Zoom:** `zoom-distance` (read), `zoom-setting`


        **Battery / power:** `battery-remain` (read)


        **Video state / format:** `recording-state` (read), `movie-file-format`,

        `movie-recording-setting`, `movie-recording-frame-rate`


        **Thermal / errors:** `overheating-state` (read),

        `camera-error-caution-status` (read), `system-error-caution-status`
        (read),

        `camera-system-error-info` (read)


        **Media slots:** `media-slot1-status`, `media-slot1-remaining-photos`,

        `media-slot1-remaining-time`, `media-slot2-status`,

        `media-slot2-remaining-photos`, `media-slot2-remaining-time` (all read)


        **Exposure:** `exposure-compensation`, `metering-mode`, `ae-lock`,

        `exposure-step`


        **Flash:** `flash-mode`, `flash-compensation`, `wireless-flash`


        **Shutter / silent:** `shutter-type`, `shutter-mode`, `silent-mode`,

        `shutter-angle`


        **Image:** `image-size`, `aspect-ratio`, `color-space`, `dro`,
        `high-iso-nr`


        **WB fine-tune:** `awb-lock`, `white-balance-color-temp`


        **Creative / picture profile:** `creative-look`,
        `flicker-less-shooting`,

        `picture-profile`, `pp-lut-base-look`


        **Audio:** `audio-recording`, `audio-input-master-level`


        **Timecode:** `timecode-preset`, `timecode-format`, `timecode-run`,

        `timecode-make`


        **Stabilization / NR:** `image-stabilization`, `movie-stabilization`,

        `long-exposure-nr`


        **CineEI / LUT:** `movie-shooting-mode`,
        `movie-shooting-mode-color-gamut`,

        `base-look-import-enable`, `embed-lut-file`, `base-look-value`,

        `shooting-enable`, `exposure-index`, `base-iso`, `aps-c-s35`


        **Image ID (MakerNote):** `image-id-string`,
        `image-id-string-max-length`,

        `image-id-num`, `image-id-num-setting`


        **Priority:** `priority-key` (also exposed as `/priority-key` resource)
      enum:
        - priority-key
        - iso
        - aperture
        - shutter-speed
        - drive-mode
        - white-balance
        - focus-mode
        - exposure-program-mode
        - still-image-store-destination
        - file-format
        - image-quality
        - raw-compression
        - focus-area
        - focus-distance
        - focus-position
        - focus-position-current
        - focus-driving-status
        - zoom-distance
        - zoom-setting
        - battery-remain
        - recording-state
        - movie-file-format
        - movie-recording-setting
        - movie-recording-frame-rate
        - overheating-state
        - camera-error-caution-status
        - system-error-caution-status
        - camera-system-error-info
        - media-slot1-status
        - media-slot1-remaining-photos
        - media-slot1-remaining-time
        - media-slot2-status
        - media-slot2-remaining-photos
        - media-slot2-remaining-time
        - exposure-compensation
        - metering-mode
        - ae-lock
        - exposure-step
        - flash-mode
        - flash-compensation
        - wireless-flash
        - shutter-type
        - shutter-mode
        - silent-mode
        - shutter-angle
        - image-size
        - aspect-ratio
        - color-space
        - dro
        - high-iso-nr
        - awb-lock
        - white-balance-color-temp
        - creative-look
        - flicker-less-shooting
        - picture-profile
        - pp-lut-base-look
        - audio-recording
        - audio-input-master-level
        - timecode-preset
        - timecode-format
        - timecode-run
        - timecode-make
        - image-stabilization
        - movie-stabilization
        - long-exposure-nr
        - movie-shooting-mode
        - movie-shooting-mode-color-gamut
        - base-look-import-enable
        - embed-lut-file
        - base-look-value
        - shooting-enable
        - exposure-index
        - base-iso
        - aps-c-s35
        - image-id-string
        - image-id-string-max-length
        - image-id-num
        - image-id-num-setting
    CameraSummary:
      type: object
      description: Camera info embedded in API responses
      properties:
        connected:
          type: boolean
          example: false
        model:
          type: string
          example: ILCE-7M4
        id:
          type: string
          example: D06CE05E3323

````