Skip to content

Get a reservation

The reservations.get operation: GET /api/v1/reservations/{id} in the REST API and the reservations_get tool in the MCP server.

GET/api/v1/reservations/{id}

Returns a single reservation (res_…): what it holds (outstanding), what was captured, its status and when it expires. Leases have their own operation (leases.get).

At a glance

  • REST: GET /api/v1/reservations/{id}
  • MCP tool: reservations_get
  • Operation ID: reservations.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
idres_… IDThe reservation (res_…).

Query parameters

This operation takes no query parameters.

Response

200 OK with a JSON object:

FieldTypeDescription
idstring
object"reservation"
brandIdbrd_… ID
livemodeboolean
walletIdwal_… ID
kindone of single, leasesingle (§17.2) or lease (§17.3).
statusone of active, expired_pending, captured, released, expiredactive, captured, released, expired (or expired_pending for leases).
amountmoneyWhat was reserved.
capturedmoneyWhat was captured so far.
outstandingmoneyWhat is still held: amount − captured while open, zero once closed.
expiresAtdate-time
closedAtdate-time or null
idempotencyKeystring
metadataobject
createdAtdate-time
updatedAtdate-time

Examples

An open reservation

HTTP
GET /api/v1/reservations/res_01m4ty7w2a5qx7mhd9k8w6s0b4
Authorization: Bearer or_test_…

Response (200):

JSON
{
  "id": "res_01m4ty7w2a5qx7mhd9k8w6s0b4",
  "object": "reservation",
  "brandId": "brd_01m4tx5nj8emwbyf7y9vcf47x4",
  "livemode": false,
  "walletId": "wal_01m4ty7w2a5qx7mhd9k8w6s0b1",
  "kind": "single",
  "status": "active",
  "amount": {
    "amount": "3000000",
    "currency": "EUR"
  },
  "captured": {
    "amount": "0",
    "currency": "EUR"
  },
  "outstanding": {
    "amount": "3000000",
    "currency": "EUR"
  },
  "expiresAt": "2026-10-16T10:20:00.000Z",
  "closedAt": null,
  "idempotencyKey": "job-8841",
  "metadata": {
    "job": "8841"
  },
  "createdAt": "2026-10-16T10:15:00.000Z",
  "updatedAt": "2026-10-16T10:15:00.000Z"
}

Errors

CodeHTTP statusWhenWhat to do
validation_failed400id isn't a reservation ID (res_…).Fix the fields listed in details.issues and send the request again.
resource_not_found404This brand has no such reservation in this mode.Check the ID and that your credentials are scoped to the right organization, entity, brand and mode.
scope_required400The request names no brand (an org or entity key without Ownrecord-Brand).Call the operation with credentials or a target at its level: an organization, a legal entity, a brand or the platform (details.required_scope).
permission_denied403You can't read this brand's wallets (wallets:read).Ask an organization owner or admin for a role or scope that allows this action.
livemode_not_allowed403You have no live-mode access, so you can't use live wallets.Use test mode, or credentials for the target's mode. Developers need live access granted by an organization owner or admin.

It can also return these common errors: api_version_unsupported, authentication_required, api_key_invalid, dry_run_not_supported, rate_limited, internal_error.