List locks
Lists active locks owned by the API key organization in stable cursor order. Requires `locks:read`.
GET /v1/locks
Lists active locks owned by the API key organization in stable cursor order. Requires locks:read.
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
limit | query | No | string | — |
cursor | query | No | string | — |
GET
Request examples
curl --request GET --url "https://app.myremotely.ai/v1/locks"const response = await fetch("https://app.myremotely.ai/v1/locks", {
method: "GET",
});
const data = await response.json();Responses
200 One cursor page of active locks.
application/json
| Field | Type | Required | Description |
|---|---|---|---|
data | array | Yes | — |
nextCursor | anyOf | Yes | — |
{
"data": [
{
"id": "lock_demo_01",
"name": "Front door",
"connectivity": "online",
"batteryLevel": 87,
"lastOnlineAt": "2026-09-16T12:00:00.000Z",
"unitIds": [
"unit_demo_01"
],
"createdAt": "2026-09-15T12:00:00.000Z",
"updatedAt": "2026-09-16T12:00:00.000Z"
}
],
"nextCursor": "string"
}400 InvalidRequestProblem
application/problem+json
| Field | Type | Required | Description |
|---|---|---|---|
type | string | Yes | — |
title | string | Yes | — |
detail | string | Yes | — |
code | string | Yes | — |
requestId | string | Yes | — |
status | number | Yes | — |
{
"type": "https://app.myremotely.ai/en/docs/errors#invalid-request",
"title": "Invalid request",
"status": 400,
"detail": "The limit or cursor is malformed.",
"code": "invalid_request",
"requestId": "request_demo_01"
}401 UnauthorizedProblem
application/problem+json
| Field | Type | Required | Description |
|---|---|---|---|
type | string | Yes | — |
title | string | Yes | — |
detail | string | Yes | — |
code | string | Yes | — |
requestId | string | Yes | — |
status | number | Yes | — |
{
"type": "https://app.myremotely.ai/en/docs/errors#invalid-api-key",
"title": "Unauthorized",
"status": 401,
"detail": "Provide a valid API key.",
"code": "invalid_api_key",
"requestId": "request_demo_01"
}403 ForbiddenProblem
application/problem+json
| Field | Type | Required | Description |
|---|---|---|---|
type | string | Yes | — |
title | string | Yes | — |
detail | string | Yes | — |
code | string | Yes | — |
requestId | string | Yes | — |
status | number | Yes | — |
{
"type": "https://app.myremotely.ai/en/docs/errors#missing-scope",
"title": "Forbidden",
"status": 403,
"detail": "The locks:read scope is required.",
"code": "missing_scope",
"requestId": "request_demo_01"
}404 NotFoundProblem
application/problem+json
| Field | Type | Required | Description |
|---|---|---|---|
type | string | Yes | — |
title | string | Yes | — |
detail | string | Yes | — |
code | string | Yes | — |
requestId | string | Yes | — |
status | number | Yes | — |
{
"type": "https://app.myremotely.ai/en/docs/errors#lock-not-found",
"title": "Not found",
"status": 404,
"detail": "The requested lock was not found.",
"code": "lock_not_found",
"requestId": "request_demo_01"
}429 RateLimitedProblem
application/problem+json
| Field | Type | Required | Description |
|---|---|---|---|
type | string | Yes | — |
title | string | Yes | — |
detail | string | Yes | — |
code | string | Yes | — |
requestId | string | Yes | — |
status | number | Yes | — |
{
"type": "https://app.myremotely.ai/en/docs/errors#rate-limited",
"title": "Too many requests",
"status": 429,
"detail": "Try the request again later.",
"code": "rate_limited",
"requestId": "request_demo_01"
}500 InternalProblem
application/problem+json
| Field | Type | Required | Description |
|---|---|---|---|
type | string | Yes | — |
title | string | Yes | — |
detail | string | Yes | — |
code | string | Yes | — |
requestId | string | Yes | — |
status | number | Yes | — |
{
"type": "https://app.myremotely.ai/en/docs/errors#internal-error",
"title": "Internal error",
"status": 500,
"detail": "The request could not be completed.",
"code": "internal_error",
"requestId": "request_demo_01"
}Last updated Sep 19, 2026