# List reservations

> Source: /api-reference/partner/explorer/reservations/list
> Reservations at the venues the credential can reach, members and non-members alike. For the benefit-fulfillment task queue, use `GET /v1/partner/arrivals` instead.
> Full spec: https://docs.journey.com/openapi/partner.v1.json

## `GET /v1/partner/reservations`

```json
{
  "description": "Reservations at the venues the credential can reach, members and non-members alike. For the benefit-fulfillment task queue, use `GET /v1/partner/arrivals` instead.",
  "operationId": "reservationsPartner_list",
  "parameters": [
    {
      "in": "query",
      "name": "bookingStatus",
      "required": false,
      "schema": {
        "enum": [
          "confirmed",
          "canceled",
          "inquiry",
          "other"
        ],
        "type": "string"
      }
    },
    {
      "description": "Check-in window lower bound (inclusive). Defaults to yesterday.",
      "in": "query",
      "name": "checkInFrom",
      "required": false,
      "schema": {
        "type": "string"
      }
    },
    {
      "description": "Check-in window upper bound (inclusive). Defaults to 30 days out.",
      "in": "query",
      "name": "checkInTo",
      "required": false,
      "schema": {
        "type": "string"
      }
    },
    {
      "description": "Opaque keyset cursor from the previous page's `nextCursor`.\n\nPreferred over `offset` for walking a multi-property roster: it cannot skip\nor duplicate a row when the PMS sync writes underneath the caller, and it\ndoes not make the database walk and discard the skipped rows the way a\ndeep OFFSET does. Ignored (and `offset` honored instead) when the caller\nsupplies a sort this cursor does not describe.\n\nThe token carries only the page's last `(check_in_date,\nexternal_reservation_id)` — the PUBLIC reservation uuid, never an internal\nPK — and no authorization: scope is re-resolved from the token on every\nrequest.\n\nA stale, hand-edited or otherwise malformed cursor is IGNORED (you get page\none), never a 400 and never a 500: both fields are shape-checked before\nthey can reach SQL.\n\n`offset` is unchanged and still works; supplying both means the cursor\nwins, and the response then echoes `offset: 0` because that is the offset\nactually applied.",
      "in": "query",
      "name": "cursor",
      "required": false,
      "schema": {
        "type": "string"
      }
    },
    {
      "in": "query",
      "name": "limit",
      "required": false,
      "schema": {
        "maximum": 100,
        "minimum": 1,
        "type": "number"
      }
    },
    {
      "description": "'true' = linked to a member only, 'false' = unlinked only.",
      "in": "query",
      "name": "memberLinked",
      "required": false,
      "schema": {
        "type": "string"
      }
    },
    {
      "in": "query",
      "name": "offset",
      "required": false,
      "schema": {
        "minimum": 0,
        "type": "number"
      }
    },
    {
      "description": "Required for global/Journey-admin callers; ignored for partner tokens.",
      "in": "query",
      "name": "organizationId",
      "required": false,
      "schema": {
        "type": "string"
      }
    },
    {
      "description": "Narrow to one venue. Must be inside the caller's scope or the request 403s.",
      "in": "query",
      "name": "propertyId",
      "required": false,
      "schema": {
        "type": "string"
      }
    },
    {
      "description": "Narrow to SEVERAL venues in one request — property EXTERNAL ids.\n\nAdditive alternative to `propertyId`, which keeps working unchanged. When\nboth are supplied the result is their union. Omitting both still means\n\"everything in my scope\".\n\nEVERY id is checked against the caller's resolved scope; a single\nout-of-scope id 403s the whole request rather than being dropped, so a\ncaller can never mistake a silently-narrowed page for a complete one.",
      "in": "query",
      "name": "propertyIds",
      "required": false,
      "schema": {
        "items": {
          "type": "string"
        },
        "minItems": 1,
        "type": "array"
      }
    },
    {
      "description": "ILIKE across confirmation code, PMS id, guest name and guest email.",
      "in": "query",
      "name": "q",
      "required": false,
      "schema": {
        "type": "string"
      }
    }
  ],
  "responses": {
    "200": {
      "description": "A page of reservations."
    },
    "401": {
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/PartnerErrorResponse"
          }
        }
      },
      "description": "No usable credential. Send `Authorization: Bearer <jwt>` or `X-API-Key: jny_...`."
    },
    "403": {
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/PartnerErrorResponse"
          }
        }
      },
      "description": "The credential authenticated but lacks the scopes in `x-required-scopes`, or the resource belongs to another organization."
    }
  },
  "security": [
    {
      "partnerBearer": []
    },
    {
      "partnerApiKey": []
    }
  ],
  "summary": "List reservations",
  "tags": [
    "partner/reservations"
  ],
  "x-required-scopes": [
    [
      "partner:reservations:read"
    ]
  ]
}
```