---
title: "Move cameras"
method: POST
path: "/v1/cameras/move"
tags: ["cameras"]
---

# Move cameras

`POST /v1/cameras/move`

Move one or more cameras to different NVRs.

Transfer one or more cameras from one NVR to another.

## Request body

- MoveCameraPayload[]
  - `mac_address` string, required — Camera MAC address
  - `target_nvr` string, required — Name of the NVR to move the camera to

## Response `200`

Successful Response

- MoveCameraResponse — Response model for bulk camera move.
  - `status` 'success'
  - `summary` Summary, required — Summary of operation.
    - `total` integer, required — Total number of operations in request
    - `success_count` integer, required — Number of successful operations
    - `failure_count` integer, required — Number of failed operations
  - `results` union[] — List of camera move results
    - union
      - MoveCameraSuccessResult — Success result for camera move.
        - `status` 'success'
        - `data` MoveCameraSuccessData, required — Data returned for a successfully moved camera.
          - `mac_address` string, required — Camera MAC address
          - `target_nvr` string, required — Name of the NVR the camera was moved to
      - MoveCameraErrorResult — Error result for camera move.
        - `status` 'error'
        - `error` ErrorDetails, required — Error message
          - `code` 'VALIDATION_ERROR' | 'BATCH_SIZE_EXCEEDED' | 'NO_CAMERAS_PROVIDED' | 'PARTIAL_OPERATIONS_NOT_SUPPORTED' | 'CAMERA_ALREADY_EXISTS' | 'CAMERA_NOT_FOUND' | 'NO_LICENSES_AVAILABLE' | 'INVALID_MAC_ADDRESS' | 'INVALID_IP_ADDRESS' | 'DUPLICATE_MAC_ADDRESSES' | 'NVR_CAPACITY_EXCEEDED' | 'NVR_NOT_FOUND' | 'INVALID_NVR_NAME' | 'LOCATION_NOT_FOUND' | 'NVR_REGISTRATION_FAILED' | 'NVR_ALREADY_REGISTERED' | 'PING_REQUEST_TIMEOUT' | 'PING_REQUEST_FAILED' | 'SPEEDTEST_REQUEST_TIMEOUT' | 'SPEEDTEST_REQUEST_FAILED' | 'NO_NVRS_PROVIDED' | 'DUPLICATE_NVR_NAMES' | 'LOCATION_ACCESS_DENIED' | 'LOCATION_NAME_ALREADY_EXISTS' | 'LOCATION_CREATION_FAILED' | 'NO_LOCATIONS_PROVIDED' | 'DUPLICATE_LOCATION_NAMES' | 'ALERT_EVENT_NOT_FOUND' | 'ALERT_NO_VIDEO_AVAILABLE' | 'ALERT_CAMERA_NOT_FOUND' | 'ALERT_CLIP_GENERATION_FAILED' | 'ALERT_NOT_FIREARM' | 'FIREARM_ALERT_NOT_FOUND' | 'INVALID_RECIPIENT_EMAILS' | 'PREMIUM_ALERT_CAMERA_LIMIT_EXCEEDED' | 'CAMERA_ALREADY_IN_USE' | 'ACCESS_EVENT_NOT_FOUND' | 'ACCESS_EVENT_NO_VIDEO_AVAILABLE' | 'ACCESS_EVENT_CLIP_GENERATION_FAILED' | 'CAMERA_GROUP_NOT_FOUND' | 'CAMERA_GROUP_NAME_ALREADY_EXISTS' | 'CAMERA_GROUP_CREATION_FAILED' | 'NO_GROUPS_PROVIDED' | 'DUPLICATE_GROUP_NAMES' | 'INVALID_GROUP_ID' | 'DUPLICATE_GROUP_IDS', required — Centralized error codes for Developer API endpoints.
          - `message` string, required — Error message
          - `field` string — Error field
          - `docs` string — Error docs

## Other responses

- `422` — Validation error

---

[API](https://skmtc.dev/coram/apis/coram-api.md) · [All operations](https://skmtc.dev/coram/apis/coram-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/coram/coram-api/revisions/2842f226f93b/schema)
