Get a lease
The leases.get operation: GET /api/v1/leases/{id} in the REST API and the leases_get tool in the MCP server.
GET
/api/v1/leases/{id}Returns a lease: how much was leased (amount), what its settles have charged (captured), what can still be
consumed (remaining), its status, expiresAt and expiry terms, its settleSeq (the number of settles so
far), the leases it renewed or was renewed into, and suggestedNextAmount, sizing guidance for the next lease
from the recent consumption rate.
At a glance
- REST:
GET /api/v1/leases/{id} - MCP tool:
leases_get - Operation ID:
leases.get - Scope: Brand
- Permission:
wallets:read - Risk tier:
read - Dry run: Not supported
- Idempotency: Not needed (read only)
- Modes: Test and live
- Authentication: API key with the
wallets:readscope - Since: M6
Request
Path parameters
| Field | Type | Description |
|---|---|---|
id | lease_… ID | The lease (lease_…). |
Query parameters
This operation takes no query parameters.
Response
200 OK with a JSON object:
| Field | Type | Description |
|---|---|---|
id | lease_… ID | |
object | "lease" | |
brandId | brd_… ID | |
livemode | boolean | |
walletId | wal_… ID | |
status | one of active, expired_pending, captured, released, expired | active: settle against it. expired_pending: past its TTL, held for a late settle until lateSettleUntil. captured: closed by a settle (final or a renewal). expired: closed by its expiry policy. |
amount | money | How much was leased. |
captured | money | How much the settles (and an expiry capture) have charged so far. The ledger books it as usage revenue when the lease closes, is renewed or expires. |
remaining | money | What can still be consumed: amount − captured while the lease is open, 0 once it is closed. |
ttlSeconds | integer (1 to 900) | |
expiresAt | date-time | Settle before this instant; then the expiry policy applies. |
expiryPolicy | one of release, capture, hold_for_late_settle | |
lateSettleWindowSeconds | integer or null | hold_for_late_settle only. |
lateSettleFallback | one of release, capture or null | hold_for_late_settle only. |
lateSettleUntil | date-time or null | hold_for_late_settle only: a settle is accepted until this instant (expiresAt + window). |
settleSeq | integer (at least 0) | How many settles the lease has had. |
renewedFrom | lease_… ID or null | The lease this one renewed. |
renewedTo | lease_… ID or null | The lease a renewing settle replaced this one with. |
suggestedNextAmount | money | Sizing guidance for the next lease (or renewal) of this TTL, from the recent consumption rate with 25% headroom. |
metadata | object | |
createdAt | date-time | |
closedAt | date-time or null |
Examples
A lease after one settle
HTTP
GET /api/v1/leases/lease_01m4v0d9k2j7r5t3w8x6y4z2b0
Authorization: Bearer or_test_…
Response (200):
JSON
{
"id": "lease_01m4v0d9k2j7r5t3w8x6y4z2b0",
"object": "lease",
"brandId": "brd_01m4tx5nj8emwbyf7y9vcf47x4",
"livemode": false,
"walletId": "wal_01m4ty3c2b5qx7mhd9k8w6s0b1",
"status": "active",
"amount": {
"amount": "5000000",
"currency": "EUR"
},
"captured": {
"amount": "1250000",
"currency": "EUR"
},
"remaining": {
"amount": "3750000",
"currency": "EUR"
},
"ttlSeconds": 300,
"expiresAt": "2026-10-13T12:05:00.000Z",
"expiryPolicy": "release",
"lateSettleWindowSeconds": null,
"lateSettleFallback": null,
"lateSettleUntil": null,
"settleSeq": 1,
"renewedFrom": null,
"renewedTo": null,
"suggestedNextAmount": {
"amount": "7812500",
"currency": "EUR"
},
"metadata": {
"worker": "api-eu-1"
},
"createdAt": "2026-10-13T12:00:00.000Z",
"closedAt": null
}
Errors
| Code | HTTP status | When | What to do |
|---|---|---|---|
resource_not_found | 404 | No lease with this ID in the brand and mode. | Check the ID and that your credentials are scoped to the right organization, entity, brand and mode. |
permission_denied | 403 | The credentials can't read this brand's wallets (wallets:read). | Ask an organization owner or admin for a role or scope that allows this action. |
It can also return these common errors: validation_failed, api_version_unsupported, authentication_required, api_key_invalid, scope_required, dry_run_not_supported, rate_limited, internal_error.