Download OpenAPI specification:
The GuardianCheckin Public Developer API. A stable, versioned (/v1/) read surface over your listings and forms, decoupled from GuardianCheckin's internal data shapes (Story 37.4, FR-API-20).
Authentication is a bearer API key (Authorization: Bearer gck_live_<prefix>.<secret>) on the api.gcheckin.com host. Every request is scoped to the listings the key's owner owns or writer-manages; out-of-scope or unknown ids return 404 with no existence disclosure.
Pagination is keyset/cursor based. nextCursor is an opaque token — treat it as a black box and pass it back verbatim as the cursor query parameter to fetch the next page. A null nextCursor means the last page was reached. Cursors are stable over inserts/deletes: a row added during iteration appears only if it sorts after your current position; already-returned pages never shift.
Returns a cursor-paginated page of the listings the authenticated key may read (owner or writer access). Ordered by an immutable (created_at, id) tuple. Pass nextCursor back as cursor to page forward. Page size defaults to 50 and is clamped to [1, 100].
| limit | integer <int32> [ 1 .. 100 ] Default: 50 Page size. Defaults to 50; values are clamped to the range [1, 100]. |
| cursor | string An opaque pagination token from a prior page's |
{- "items": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "publicId": "string",
- "title": "string",
- "address": "string",
- "city": "string",
- "country": "string",
- "zipCode": "string",
- "district": "string",
- "timezone": "string",
- "active": true,
- "maxPeopleInListing": 0,
- "maxVehicles": 0,
- "allowPets": true,
- "createdAt": "2019-08-24T14:15:22Z"
}
], - "nextCursor": "string"
}Returns a single in-scope listing. An out-of-scope or non-existent id returns 404 with a single non-disclosing message (an out-of-scope listing is indistinguishable from a missing one).
| id required | string <uuid> The listing id (UUID). |
{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "publicId": "string",
- "title": "string",
- "address": "string",
- "city": "string",
- "country": "string",
- "zipCode": "string",
- "district": "string",
- "timezone": "string",
- "active": true,
- "maxPeopleInListing": 0,
- "maxVehicles": 0,
- "allowPets": true,
- "createdAt": "2019-08-24T14:15:22Z"
}Returns a cursor-paginated page of the forms on listings the authenticated key may read. Ordered by an immutable (created_at, id) tuple. The optional listingId filter narrows the result to a single listing; an out-of-scope or unknown listingId yields an empty 200 page (never a 404, never disclosure). The listingId filter must be repeated on every page.
| limit | integer <int32> [ 1 .. 100 ] Default: 50 Page size. Defaults to 50; values are clamped to the range [1, 100]. |
| cursor | string An opaque pagination token from a prior page's |
| listingId | string <uuid> Optional filter — return only forms on this listing. Out-of-scope/unknown ⇒ empty page. |
{- "items": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "listingId": "8c73d933-f7ed-437e-9da1-caac95adc1ae",
- "publicId": "string",
- "status": "SENT",
- "checkInDate": "2019-08-24T14:15:22Z",
- "checkOutDate": "2019-08-24T14:15:22Z",
- "numberOfGuests": 0,
- "numberOfVehicles": 0,
- "numberOfPets": 0,
- "createdAt": "2019-08-24T14:15:22Z"
}
], - "nextCursor": "string"
}Returns a single in-scope form. An out-of-scope or non-existent id returns 404 with a single non-disclosing message (an out-of-scope form is indistinguishable from a missing one).
| id required | string <uuid> The form id (UUID). |
{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "listingId": "8c73d933-f7ed-437e-9da1-caac95adc1ae",
- "publicId": "string",
- "status": "SENT",
- "checkInDate": "2019-08-24T14:15:22Z",
- "checkOutDate": "2019-08-24T14:15:22Z",
- "numberOfGuests": 0,
- "numberOfVehicles": 0,
- "numberOfPets": 0,
- "createdAt": "2019-08-24T14:15:22Z"
}Creates a form on a listing in your API scope, running the exact same safety pipeline as the in-app flow. Requires a read-write key (a read-only key returns 403). The target listingId must be in scope, or the request returns 404 with no existence disclosure. Creation is idempotent: a retry of the same request — detected by a durable fingerprint of the request body — never creates a duplicate form or re-fires its side effects. Supply an optional Idempotency-Key header to make replays explicit; reusing the same key with a different body returns 422.
| Idempotency-Key | string <= 255 characters Optional client-supplied idempotency key. A retry with the same key and the same body replays the original result; the same key with a different body returns |
| listingId required | string <uuid> The in-scope listing the form is created on. |
| checkInDate required | string <date-time> Check-in instant (ISO-8601). Interpreted in UTC, as the in-app flow does. |
| checkOutDate required | string <date-time> Check-out instant (ISO-8601, UTC). Must be after checkInDate. |
| numberOfGuests required | integer <int32> Number of guests on the form. |
| contactEmail | string or null <email> Optional guest contact email. When present, drives the in-app form-created notification. Write-only — never returned in FormV1. |
{- "listingId": "8c73d933-f7ed-437e-9da1-caac95adc1ae",
- "checkInDate": "2019-08-24T14:15:22Z",
- "checkOutDate": "2019-08-24T14:15:22Z",
- "numberOfGuests": 0,
- "contactEmail": "user@example.com"
}{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "listingId": "8c73d933-f7ed-437e-9da1-caac95adc1ae",
- "publicId": "string",
- "status": "SENT",
- "checkInDate": "2019-08-24T14:15:22Z",
- "checkOutDate": "2019-08-24T14:15:22Z",
- "numberOfGuests": 0,
- "numberOfVehicles": 0,
- "numberOfPets": 0,
- "createdAt": "2019-08-24T14:15:22Z"
}Updates an existing form, running the same safety pipeline as the in-app flow. Requires a read-write key (a read-only key returns 403). The form and the target listingId (a form may be moved to another in-scope listing) must both be in scope, or the request returns 404 with no existence disclosure. PUT targets a specific form id and is therefore naturally idempotent; it carries no Idempotency-Key.
| id required | string <uuid> The form id (UUID). |
| listingId required | string <uuid> The in-scope listing the form belongs to (a PUT may move the form to another in-scope listing). |
| checkInDate required | string <date-time> Check-in instant (ISO-8601, UTC). |
| checkOutDate required | string <date-time> Check-out instant (ISO-8601, UTC). Must be after checkInDate. |
| numberOfGuests required | integer <int32> Number of guests on the form. |
| contactEmail | string or null <email> Optional guest contact email. Write-only — never returned in FormV1. |
{- "listingId": "8c73d933-f7ed-437e-9da1-caac95adc1ae",
- "checkInDate": "2019-08-24T14:15:22Z",
- "checkOutDate": "2019-08-24T14:15:22Z",
- "numberOfGuests": 0,
- "contactEmail": "user@example.com"
}{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "listingId": "8c73d933-f7ed-437e-9da1-caac95adc1ae",
- "publicId": "string",
- "status": "SENT",
- "checkInDate": "2019-08-24T14:15:22Z",
- "checkOutDate": "2019-08-24T14:15:22Z",
- "numberOfGuests": 0,
- "numberOfVehicles": 0,
- "numberOfPets": 0,
- "createdAt": "2019-08-24T14:15:22Z"
}