Skip to content

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:read scope
  • Since: M6

Request

Path parameters

FieldTypeDescription
idlease_… IDThe lease (lease_…).

Query parameters

This operation takes no query parameters.

Response

200 OK with a JSON object:

FieldTypeDescription
idlease_… ID
object"lease"
brandIdbrd_… ID
livemodeboolean
walletIdwal_… ID
statusone of active, expired_pending, captured, released, expiredactive: 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.
amountmoneyHow much was leased.
capturedmoneyHow 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.
remainingmoneyWhat can still be consumed: amount − captured while the lease is open, 0 once it is closed.
ttlSecondsinteger (1 to 900)
expiresAtdate-timeSettle before this instant; then the expiry policy applies.
expiryPolicyone of release, capture, hold_for_late_settle
lateSettleWindowSecondsinteger or nullhold_for_late_settle only.
lateSettleFallbackone of release, capture or nullhold_for_late_settle only.
lateSettleUntildate-time or nullhold_for_late_settle only: a settle is accepted until this instant (expiresAt + window).
settleSeqinteger (at least 0)How many settles the lease has had.
renewedFromlease_… ID or nullThe lease this one renewed.
renewedTolease_… ID or nullThe lease a renewing settle replaced this one with.
suggestedNextAmountmoneySizing guidance for the next lease (or renewal) of this TTL, from the recent consumption rate with 25% headroom.
metadataobject
createdAtdate-time
closedAtdate-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

CodeHTTP statusWhenWhat to do
resource_not_found404No 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_denied403The 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.