API reference
Base URLs, authentication, conventions, and the endpoint list.
The Channel API is REST over HTTPS. Request and response bodies are JSON.
Base URLs
| Environment | Base URL |
|---|---|
| Staging | https://zepl-staging.calry.app |
| Production | Issued by OnSeason after certification |
All paths in this reference are relative to the base URL.
Authentication
Send your API key in the x-calry-api-key header on every request. Requests with a body also need Content-Type: application/json.
curl "https://zepl-staging.calry.app/api/v1/listing?limit=1" \
--header "x-calry-api-key: <API_KEY>"A missing or invalid key returns 401. A valid key on an endpoint it can't use returns 403. Keys are secret: call the API from your servers only.
Endpoints
| Endpoint | Purpose |
|---|---|
GET /api/v1/listing | List the listings enabled for your channel |
GET /api/v1/listing/{listingID} | Get one listing |
GET /api/v1/listing/{listingID}/units | List a listing's units |
GET /api/v1/search | Search by location, dates, party, and filters |
POST /api/v1/search/ids | Search a set of listing IDs |
GET /api/v1/availability/{listingID} | Get day-level availability |
POST /api/v1/quote | Price a stay and get a quoteToken |
POST /api/v1/reservation | Book a quoted stay |
GET /api/v1/reservation/{id} | Get a reservation |
DELETE /api/v1/reservation/{id} | Cancel a reservation |
Conventions
| Topic | Rule |
|---|---|
| Dates | YYYY-MM-DD, for example 2026-08-10. Check-out is after check-in. |
| Date-times | ISO 8601 in UTC, for example 2026-08-10T00:00:00.000Z. |
| Stay nights | The checkout date is the departure day and is not charged. Availability's endDate is the exception: it is the last night. |
| Currencies | Three-letter ISO 4217 codes, such as EUR, USD, or GBP. |
| Amounts | Normal currency units, not cents. Amounts can have decimals and always come with a currency. |
| IDs | Listing, unit, and reservation IDs are UUIDs. Treat PMS IDs such as providerID as opaque strings. |
| Optional request fields | Leave them out when they don't apply. Don't send undocumented top-level fields. |
| Unknown response fields | New fields can appear at any time. Ignore the ones you don't use. |
| Pagination | Paged endpoints take page and limit and return a meta object. See below. |
Pagination metadata
| Field | Type | Description |
|---|---|---|
total | integer | Total number of matching items. |
limit | integer | Page size used. |
totalPages | integer | Total number of pages. |
current | integer | Current page number. |
previous | integer | Previous page number. Absent on the first page. |
next | integer | Next page number. Absent on the last page. |