Coram Ai Nvrs API

Control and monitor Network Video Recorders (NVRs) in your infrastructure. NVRs are hardware devices that record and store video from connected cameras. Use these endpoints to register NVRs, update their configuration, check connectivity status, run speed tests, and manage NVR settings.

Operations 6

GET /v1/nvrs List NVRs #
POST /v1/nvrs Register NVRs #
POST /v1/nvrs/ping Ping NVR #
POST /v1/nvrs/speedtest Speed test NVR #
GET /v1/nvrs/status List NVR status #
GET /v1/nvrs/metrics List NVR metrics #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/coram-ai:coram-ai-nvrs-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

coram-ai-nvrs-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Coram Nvrs API
  description: '# Introduction


    The Coram API enables seamless programmatic access to your security camera infrastructure, allowing you to build custom integrations and automate workflows. # Supported Actions


    Manage and interact with your Coram platform resources:


    | Resource | Description |

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

    | **Camera Groups** | Organize and configure camera collections |

    | **Cameras** | Access camera settings, streams, and metadata |

    | **Locations** | Manage physical site configurations |

    | **NVRs** | Control and monitor network video recorders |

    | **Access Control** | Manage doors, cards, and permissions |


    ## Access Control


    Card and permission changes are saved before they reach controllers. If a request fails, check the saved state before retrying. # Required Headers


    Every API request must include the following headers:


    | Header | Required | Description |

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

    | `X-Auth-Token` | Yes | Your API key (from the API key List Page) |


    **Example:**

    ```

    curl -X GET "https://api.coram.ai/developer-api/v1/cameras" \

    -H "X-Auth-Token: xxxxxxxxxxxxxxx"

    ```


    # Response Format


    All API responses follow a consistent structure based on the operation result. ## Success Response


    **List Operations** (e.g., `GET /v1/cameras`)


    Returns a `results` array with pagination support:


    ```json

    {

    "results": [

    { "id": "cam_001", "name": "Front Door", ... },

    { "id": "cam_002", "name": "Lobby", ... }

    ],

    "has_more": true

    }

    ```


    When `has_more` is `true`, additional results are available. Use pagination parameters to fetch more. **Bulk/Batch Operations** (e.g., `POST /v1/cameras`, `PATCH /v1/cameras`)


    Returns a top-level `status` field indicating whether the API request was processed, and a `results` array where each item reflects the outcome of an individual operation:


    ```json

    {

    "status": "success",

    "results": [

    { "status": "success", "data": { "id": "cam_001", "mac_address": "..." } },

    { "status": "error", "error": { "code": "VALIDATION_ERROR", "message": "..." } }

    ]

    }

    ```


    | Field | Description |

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

    | `status` (top-level) | `"success"` if the request was processed |

    | `results[].status` | `"success"` or `"error"` for each operation |

    | `results[].data` | Present when `status` is `"success"` |

    | `results[].error` | Present when `status` is `"error"` |


    ## Error Response


    When an error occurs, the response includes `status` set to `"error"` along with detailed error information:


    ```json

    {

    "status": "error",

    "error": {

    "code": "VALIDATION_ERROR",

    "message": "Invalid MAC address format",

    "field": "mac_address"

    }

    }

    ```


    **Error Fields:**


    | Field | Type | Description |

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

    | `code` | string | Machine-readable error code |

    | `message` | string | Human-readable error description |

    | `field` | string | The field that caused the error (if applicable) |


    # HTTP Status Codes


    The API uses standard HTTP status codes to indicate the success or failure of requests:


    ## Success Codes


    | Code | Description |

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

    | `200 OK` | Request succeeded |

    | `201 Created` | Resource successfully created |

    | `204 No Content` | Request succeeded with no response body |


    ## Client Error Codes


    | Code | Description |

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

    | `400 Bad Request` | Invalid request syntax or parameters |

    | `401 Unauthorized` | Missing or invalid API key |

    | `403 Forbidden` | Valid API key but insufficient permissions |

    | `404 Not Found` | Requested resource does not exist |

    | `422 Unprocessable Entity` | Validation error in request body |

    | `429 Too Many Requests` | Rate limit exceeded |


    ## Server Error Codes


    | Code | Description |

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

    | `500 Internal Server Error` | Unexpected server error (rare) |

    | `502 Bad Gateway` | Upstream service unavailable |

    | `503 Service Unavailable` | Service temporarily unavailable |


    # Error Handling Best Practices


    1. **Always check the `status` field** — Verify if the response indicates `"success"` or `"error"`


    2.'
  version: 1.0.0
servers:
- url: https://developer.coram.ai
  description: Production
security:
- X-Auth-Token: []
tags:


# --- truncated at 32 KB (37 KB total) ---
# Full source: https://artifacts.apis.io/coram-ai/openapi/coram-ai-nvrs-api-openapi.yml