Developer Portal › Partner API
Partner API Early access
Overview
The Juperion Partner API is being built so partners can connect the hotel inventory in Juperion to their own systems. It is in early access: this page describes the rules and the plan, and endpoints are published as they are approved.
- Prices and availability come from one price engine; you only see the sale price opened to you.
- Every endpoint is approved explicitly; no operation appears on this page or in openapi.json without that approval.
- You start in the test (sandbox) environment; live access opens after the tests are complete.
Conventions
- Money: every amount is an integer in minor units with its ISO 4217 currency next to it (example: 8100 + "EUR" = EUR 81.00). No decimals, no currency conversion.
- Dates: stay days as YYYY-MM-DD in the hotel's local calendar; timestamps in UTC, ISO 8601.
- Format: JSON (UTF-8). Ignore fields you do not know; new optional fields may be added.
Modules
Juperion is made of modules licensed together or separately. API access is per module: a module's endpoints are available only to accounts holding that module's licence.
Reservation core (CRS)
Contracts, price engine, availability and bookings. The source of the Partner API's prices and stock; not called directly.
Channel connections (DMC / OTA)
Availability, prices and bookings for partners. The subject of this page.
Call centre and CRM
Customers, leads and call-centre workflows.
Telephony
Lines, calls and call records.
E-mail
Corporate and transactional e-mail.
WhatsApp and e-mail commands
Add-on; only together with another module.
Ads and video
Ads panel and video content.
Price comparison
Regular comparison of market prices.
Accounting
Accounts, payment plans and invoices.
Authentication
Early access Planned method (early access, may change): an API key and a short-lived access token.
- You receive an API key. It is shown once; we store only its hash. If you lose it you get a new one, and the old one stops after a short grace period.
- You exchange the key for a short-lived access token. The token address is sent together with your access.
- Send the token on every request: Authorization: Bearer <token>. When it expires, get a new one.
- Every key has scopes (e.g. content, search, booking) and an optional IP allow-list. A request outside its scopes gets 403.
Environments
- Test (sandbox): with test keys, on test data. No real booking is made.
- Live: with a separate live key, after the tests are complete and approved. A test key does not work live and a live key does not work in test.
Do not keep keys in code, in a browser or in a repository. Keys are never issued on this page.
Authorization: Bearer <token>Errors
Every error has the same shape. Messages are fixed and neutral; your program should decide on the code field.
| HTTP | code | Meaning |
|---|---|---|
400 | validation_error | The request is invalid; fields says which field was refused and why. |
401 | unauthorized | The token is missing, invalid or expired. |
403 | forbidden | The key has no scope or permission for this operation. |
404 | not_found | No such record, or it is not open to you. |
409 | price_changed · unavailable · conflict | The price moved, the room can no longer be sold, or the same Idempotency-Key was used with a different request. |
429 | rate_limited | Rate limit reached; wait Retry-After seconds. |
5xx | — | Temporary problem; retry with increasing intervals. |
Quote the requestId when you report a problem. The code list is final with the endpoints; new codes may be added.
{
"error": {
"code": "validation_error",
"message": "Invalid request",
"requestId": "3f2c9a1e-…",
"fields": { "rooms[0].adults": "required" }
}
}Idempotency-Key
Booking and cancellation requests will require an Idempotency-Key header. After a network error you can safely retry with the same key; the operation is never done twice.
- 8–100 characters; a new value (e.g. a UUID) for every new booking or cancellation attempt.
- Same key + same request body: the first answer is returned again.
- Same key + different body: refused with 409.
- First request still in progress: 409; retry shortly.
Idempotency-Key: 6f1d2b7e-5c1a-4b8e-9d0f-2a7c4e9b1d33Rate limits
Limits are per key and agreed with each partner.
- Planned default: 60 requests per minute per key. Searches may count heavier than reads.
- Over the limit you get 429 with a Retry-After header; do not retry before it has passed.
- A daily quota by licence plan may be added later; if so, it is announced here.
Versioning
The version is part of the address: /v1/…
- Inside v1 changes are additive only: new endpoints, new optional fields, new values. Ignore fields and values you do not know.
- A breaking change comes as a new version (/v2); v1 keeps running beside it for a period.
- An operation to be removed is announced in advance and marked with Deprecation / Sunset headers in its answers.
Endpoints
This section is generated from the openapi.json document. Only operations approved for partners appear.
Early access
No endpoint is published yet. Every approved endpoint appears here and in openapi.json; test access is given on request.
Disabled during early accessChangelog
- First release: documentation page and openapi.json (early access, no endpoint yet).
Request access
Write to us to join the early access. Please include:
- Company name, website and a technical contact
- How you want to connect: pull from us (search, booking), or push to us
- Expected request volume and target markets
- Your own connectivity specification, if you have one (link or file)
E-mail: system@juperion.dev
This page has no login, no key issuing and no data. Access is sent by e-mail after a review.