Endpoints
List locks
Lists active locks owned by the API key organization in stable cursor order. Requires `locks:read`.
GET /v1/locks
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
limit | query | No | string | The maximum number of locks to return, from 1 to 100. |
cursor | query | No | string | The opaque nextCursor value from the previous page. |
Request examples
Set MYREMOTELY_BASE_URL to the environment you intend to call.
curl --fail-with-body \
--header "x-api-key: $MYREMOTELY_API_KEY" \
"$MYREMOTELY_BASE_URL/v1/locks?limit=20"const baseUrl = process.env.MYREMOTELY_BASE_URL
const apiKey = process.env.MYREMOTELY_API_KEY
if (!baseUrl || !apiKey) throw new Error('API base URL and key are required')
const response = await fetch(`${baseUrl}/v1/locks?limit=20`, {
headers: { 'x-api-key': apiKey },
})
if (!response.ok) throw new Error(`Lock list failed: ${response.status}`)
const data = await response.json()Responses
200 One cursor page of active locks.
application/json
| Field | Type | Required | Description |
|---|---|---|---|
data | array | Yes | Active locks in this page. |
nextCursor | anyOf | Yes | The opaque cursor for the next page, or null when this is the last page. |
Lock item fields
| Field | Meaning |
|---|---|
id | Public lock ID. |
name | Lock display name. |
connectivity | Cached connectivity; not the live locked or unlocked state. |
batteryLevel | Battery percentage from 0 to 100. |
lastOnlineAt | Last online time, or null when unknown. |
unitIds | Public IDs of units bound to the lock. |
createdAt | Lock record creation time. |
updatedAt | Last lock record update time. |
{
"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 The list limit is outside the supported range or is not an integer.
application/problem+json
| Field | Type | Required | Description |
|---|---|---|---|
type | string | Yes | A stable documentation URI for this problem. |
title | string | Yes | A short problem title. |
detail | string | Yes | A safe explanation of this occurrence. |
code | string | Yes | A stable machine-readable problem code. |
requestId | string | Yes | The request ID to include when contacting MyRemotely support. |
status | number | Yes | The HTTP status code. |
{
"type": "https://app.myremotely.ai/en/docs/errors#invalid-request",
"title": "Invalid request",
"status": 400,
"detail": "The limit must be an integer from 1 to 100.",
"code": "invalid_request",
"requestId": "request_demo_01"
}401 The API key is missing, invalid, expired, or revoked.
application/problem+json
| Field | Type | Required | Description |
|---|---|---|---|
type | string | Yes | A stable documentation URI for this problem. |
title | string | Yes | A short problem title. |
detail | string | Yes | A safe explanation of this occurrence. |
code | string | Yes | A stable machine-readable problem code. |
requestId | string | Yes | The request ID to include when contacting MyRemotely support. |
status | number | Yes | The HTTP status code. |
{
"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 The API key does not have the locks:read scope. | The public API channel or the operation's owning feature does not allow this use.
application/problem+json
"string"404 The cursor is invalid or belongs to another organization.
application/problem+json
| Field | Type | Required | Description |
|---|---|---|---|
type | string | Yes | A stable documentation URI for this problem. |
title | string | Yes | A short problem title. |
detail | string | Yes | A safe explanation of this occurrence. |
code | string | Yes | A stable machine-readable problem code. |
requestId | string | Yes | The request ID to include when contacting MyRemotely support. |
status | number | Yes | The HTTP status code. |
{
"type": "https://app.myremotely.ai/en/docs/errors#cursor-not-found",
"title": "Not found",
"status": 404,
"detail": "The requested cursor was not found.",
"code": "cursor_not_found",
"requestId": "request_demo_01"
}429 The API key request budget is exhausted.
application/problem+json
| Field | Type | Required | Description |
|---|---|---|---|
type | string | Yes | A stable documentation URI for this problem. |
title | string | Yes | A short problem title. |
detail | string | Yes | A safe explanation of this occurrence. |
code | string | Yes | A stable machine-readable problem code. |
requestId | string | Yes | The request ID to include when contacting MyRemotely support. |
status | number | Yes | The HTTP status code. |
{
"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 MyRemotely could not complete the request.
application/problem+json
| Field | Type | Required | Description |
|---|---|---|---|
type | string | Yes | A stable documentation URI for this problem. |
title | string | Yes | A short problem title. |
detail | string | Yes | A safe explanation of this occurrence. |
code | string | Yes | A stable machine-readable problem code. |
requestId | string | Yes | The request ID to include when contacting MyRemotely support. |
status | number | Yes | The HTTP status code. |
{
"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 Nov 3, 2026