Get a lock
Gets one active lock owned by the API key organization. Requires `locks:read`.
GET /v1/locks/{lockId}
Gets one active lock owned by the API key organization. Requires locks:read.
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
lockId | path | Yes | string | — |
GET
Request examples
curl --request GET --url "https://app.myremotely.ai/v1/locks/{lockId}"const response = await fetch("https://app.myremotely.ai/v1/locks/{lockId}", {
method: "GET",
});
const data = await response.json();Responses
200 Safe lock details. Provider identifiers, passcodes, notes, and instructions are omitted.
application/json
| Field | Type | Required | Description |
|---|---|---|---|
id | string | Yes | — |
name | string | Yes | — |
connectivity | string | Yes | Cached connectivity. This is not the live locked or unlocked state. |
batteryLevel | integer | Yes | — |
lastOnlineAt | anyOf | Yes | — |
units | array | Yes | — |
createdAt | string<date-time> | Yes | An RFC 3339 timestamp. |
updatedAt | string<date-time> | Yes | An RFC 3339 timestamp. |
{
"id": "lock_demo_01",
"name": "Front door",
"connectivity": "online",
"batteryLevel": 87,
"lastOnlineAt": "2026-09-16T12:00:00.000Z",
"units": [
{
"id": "unit_demo_01",
"name": "Apartment 1"
}
],
"createdAt": "2026-09-15T12:00:00.000Z",
"updatedAt": "2026-09-16T12:00:00.000Z"
}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