Referenz
API-Referenz
Erzeugt aus der OpenAPI-3.1-Spezifikation. Jeder Endpunkt nennt Scope, Parameter, Request-Body, Antworten und lauffähigen Code.
STRYK Partner API Version 1.0.0
- Basis-URL
https://app.staystryk.com/api/partner/v1- Spezifikation
- OpenAPI, YAML OpenAPI, JSON
Die STRYK Partner API verbindet Buchungsseiten, Apps und Integrationen mit einem Hotel in STRYK. Sie liest Haus, Verfügbarkeit und Preise und legt Buchungen an, die genau so bepreist werden wie in der STRYK Booking Engine. Jeder API-Schlüssel gehört zu genau einem Hotel; das Hotel erstellt und widerruft Schlüssel in STRYK unter Kanäle → API.
Anleitungen und Quickstart: https://staystryk.com/developers
## Konventionen
- Authentifizierung: Authorization: Bearer stryk_live_…. Der Schlüssel wird beim Anlegen genau einmal angezeigt. Schlüssel tragen ausdrückliche Scopes; ein Schreib-Scope schließt den Lese-Scope nie ein. Rotiert das Hotel einen Schlüssel, bleibt der alte standardmäßig noch 24 Stunden gültig (oder wird sofort widerrufen). - Hotel: immer das Hotel des Schlüssels. Senden Sie nie eine Hotel-ID. - Zeiten: Zeitpunkte sind RFC 3339 in UTC (2026-11-04T08:15:00.000Z); eingehend werden Offsets akzeptiert. Aufenthaltsdaten sind YYYY-MM-DD in der Zeitzone des Hotels (GET /hotel → timezone). - Geld: {"amount": "123.45", "currency": "EUR"}, ein Dezimal-String mit zwei Nachkommastellen. - Pagination: limit (1-200, Standard 50) und cursor; Antworten haben die Form {"data": [...], "nextCursor": "…" | null, "hasMore": bool}, sortiert nach updatedAt, dann id. updated_since liefert Einträge mit updatedAt >= Wert; deduplizieren Sie über id + updatedAt. - Nebenläufigkeit: Einzelressourcen liefern ein ETag und denselben Wert als version. If-None-Match antwortet mit 304; PATCH verlangt If-Match (428 wenn er fehlt, 412 wenn er veraltet ist). - Idempotenz: POST /bookings und POST /bookings/{id}/cancel verlangen einen Idempotency-Key (24 h gespeichert). Eine Wiederholung mit demselben Key und Body liefert die erste Antwort erneut mit Idempotent-Replayed: true; ein anderer Body mit demselben Key ergibt 422. - Fehler: RFC 9457 application/problem+json mit stabilem code und der requestId. - Limits: standardmäßig 120 Anfragen je 60 s und Schlüssel; auf Anfrage kann STRYK je Schlüssel eine andere Stufe einstellen (GET /me → rateLimit, RateLimit-*-Header auf jeder Antwort, Retry-After bei 429); Request-Bodies bis 64 KiB, nur application/json. - Preise: STRYK berechnet Preise immer selbst. Senden Sie expectedTotal, damit der Gast genau den Preis zahlt, den Sie angezeigt haben. - Zahlungen: v1 nimmt keine Zahlungsdaten an. Buchungen starten mit offenem Saldo, der im Hotel oder über STRYK-Zahlungslinks beglichen wird. - Versionierung: additive Änderungen (neue Felder, Endpunkte, Enum-Werte, Ereignistypen) erfolgen ohne neue Version, ignorieren Sie unbekannte Felder. Breaking Changes nur in /v2, mindestens sechs Monate vorher mit Deprecation- und Sunset-Header angekündigt. - Testdaten: Es gibt keine separate Sandbox. Verwenden Sie einen Schlüssel mit reinen Lese-Scopes und führen Sie schreibende Tests an einem Testhaus oder in einem weit entfernten Zeitraum aus; stornieren Sie die Buchungen danach.
27 Endpunkte
Account
Der aufrufende Schlüssel.
GET/meAufrufenden Schlüssel beschreiben
/meAufrufenden Schlüssel beschreibenLiefert den Schlüssel, seine Scopes, das zugehörige Hotel und das Rate-Limit. Funktioniert mit jedem gültigen Schlüssel und ist der empfohlene Verbindungstest.
Scopes: Jeder gültige SchlüsseloperationId getMe
Antworten
200Der aufrufende Schlüssel.
application/jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
keyIdstring (uuid)PflichtSchlüssel-ID.
keyNamestringPflichtVom Hotel vergebener Name.
keyPrefixstring | nullPflichtÖffentliches Präfix (die ersten 8 Zeichen nach stryk_live_).
scopesarray<string>PflichtErteilte Scopes.
Werte:
"property:read","property:write","availability:read","availability:write","rates:read","rates:write","bookings:read","bookings:write","guests:read","guests:write","payments:read","payments:write","invoices:read"hotelHotelRefPflichtHotel, zu dem der API-Schlüssel gehört.
Felder anzeigen (2)
idstringPflichtHotel-ID.
namestring | nullPflichtAnzeigename.
expiresAtstring | null (date-time)PflichtAblauf; null, wenn der Schlüssel nicht abläuft.
rateLimitRateLimitPflichtRate-Limit des Schlüssels.
Felder anzeigen (2)
limitintegerPflichtAnfragen je Fenster für diesen Schlüssel (Standard 120; eine andere Stufe stellt STRYK auf Anfrage ein).
windowSecondsintegerPflichtFensterlänge in Sekunden.
{ "keyId": "0b9d4e8a-6f53-4c55-9a0e-3d1f0d6c2a11", "keyName": "Website booking widget", "keyPrefix": "Ab3dEf7h", "scopes": ["property:read", "availability:read", "rates:read", "bookings:read", "bookings:write"], "hotel": { "id": "hotel-alpenblick", "name": "Hotel Alpenblick" }, "expiresAt": null, "rateLimit": { "limit": 120, "windowSeconds": 60 } }401Fehlender, unbekannter, widerrufener oder abgelaufener API-Schlüssel.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#unauthorized", "title": "Unauthorized", "status": 401, "detail": "Send a valid API key in the Authorization header: Bearer stryk_live_….", "instance": "/api/partner/v1/bookings", "code": "unauthorized", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }403Dem Schlüssel fehlt der Scope, die IP ist nicht freigegeben oder das Kanalmodul ist deaktiviert.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#insufficient_scope", "title": "Insufficient scope", "status": 403, "detail": "This API key lacks the scope bookings:write.", "instance": "/api/partner/v1/bookings", "code": "insufficient_scope", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }429Zu viele Anfragen für diesen Schlüssel.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
Retry-After- Sekunden bis zum nächsten Versuch.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#rate_limited", "title": "Too many requests", "status": 429, "detail": "Rate limit of 120 requests per 60 seconds exceeded.", "instance": "/api/partner/v1/bookings", "code": "rate_limited", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }500Unerwarteter Serverfehler.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#internal_error", "title": "Internal error", "status": 500, "detail": "An unexpected error occurred. Retry later or contact the hotel.", "instance": "/api/partner/v1/bookings", "code": "internal_error", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }
curl 'https://app.staystryk.com/api/partner/v1/me' \
-H "Authorization: Bearer $STRYK_API_KEY"const response = await fetch('https://app.staystryk.com/api/partner/v1/me', {
method: 'GET',
headers: {
Authorization: `Bearer ${process.env.STRYK_API_KEY}`,
},
});
if (!response.ok) {
const problem = await response.json();
throw new Error(`${problem.code}: ${problem.detail} (request ${problem.requestId})`);
}
const data = await response.json();import os
import requests
response = requests.get(
"https://app.staystryk.com/api/partner/v1/me",
headers={
"Authorization": f"Bearer {os.environ['STRYK_API_KEY']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json(){
"keyId": "0b9d4e8a-6f53-4c55-9a0e-3d1f0d6c2a11",
"keyName": "Website booking widget",
"keyPrefix": "Ab3dEf7h",
"scopes": ["property:read", "availability:read", "rates:read", "bookings:read", "bookings:write"],
"hotel": {
"id": "hotel-alpenblick",
"name": "Hotel Alpenblick"
},
"expiresAt": null,
"rateLimit": {
"limit": 120,
"windowSeconds": 60
}
}Property
Hotelprofil, Zimmerkategorien, Einheiten und ihr Reinigungsstatus.
GET/hotelHotelprofil abrufen
/hotelHotelprofil abrufenName, Adresse, Zeitzone, Währung, Sprachen, Check-in-/Check-out-Zeiten und Kontaktdaten.
Scopes: property:readoperationId getHotel
Header
| Name | Ort | Typ | Beschreibung |
|---|---|---|---|
If-None-Match | header | string | ETag, das Sie kennen; 304, wenn unverändert. |
Antworten
200Hotel.
application/jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
ETag- Starkes Entity-Tag der gelieferten Version.
idstringPflichtHotel-ID.
namestring | nullPflichtAnzeigename.
legalNamestring | nullRechtlicher Name (auf Rechnungen), wenn er vom Anzeigenamen abweicht.
addressAddressPflichtPostanschrift.
Felder anzeigen (4)
streetstring | nullStraße und Hausnummer.
postalCodestring | nullPostleitzahl.
citystring | nullOrt.
countrystring | nullLändercode nach ISO 3166-1 alpha-2.
timezonestringPflichtIANA-Zeitzone, z. B. Europe/Vienna.
currencystringPflichtHotelwährung (ISO 4217).
languagesarray<string>PflichtGastsprachen, für die das Hotel Inhalte pflegt (ISO 639-1).
checkInFromstring | nullFrüheste Check-in-Zeit HH:MM (hotel-lokal).
checkOutUntilstring | nullSpäteste Check-out-Zeit HH:MM (hotel-lokal).
contactContactPflichtÖffentliche Kontaktdaten des Hotels.
Felder anzeigen (3)
emailstring | nullE-Mail.
phonestring | nullTelefon.
websitestring | nullURL der Website.
versionstringPflichtETag-Wert ohne Anführungszeichen.
{ "id": "hotel-alpenblick", "name": "Hotel Alpenblick", "legalName": "Alpenblick Hotelbetriebs GmbH", "address": { "street": "Dorfstraße 12", "postalCode": "6020", "city": "Innsbruck", "country": "AT" }, "timezone": "Europe/Vienna", "currency": "EUR", "languages": ["de", "en"], "checkInFrom": "15:00", "checkOutUntil": "11:00", "contact": { "email": "info@alpenblick.example", "phone": "+43 512 123456", "website": "https://alpenblick.example" }, "version": "4f1c2a9b0d3e5f6a7b8c9d0e" }304Nicht geändert (If-None-Match hat gepasst).
RateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
ETag- Starkes Entity-Tag der gelieferten Version.
401Fehlender, unbekannter, widerrufener oder abgelaufener API-Schlüssel.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#unauthorized", "title": "Unauthorized", "status": 401, "detail": "Send a valid API key in the Authorization header: Bearer stryk_live_….", "instance": "/api/partner/v1/bookings", "code": "unauthorized", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }403Dem Schlüssel fehlt der Scope, die IP ist nicht freigegeben oder das Kanalmodul ist deaktiviert.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#insufficient_scope", "title": "Insufficient scope", "status": 403, "detail": "This API key lacks the scope bookings:write.", "instance": "/api/partner/v1/bookings", "code": "insufficient_scope", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }429Zu viele Anfragen für diesen Schlüssel.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
Retry-After- Sekunden bis zum nächsten Versuch.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#rate_limited", "title": "Too many requests", "status": 429, "detail": "Rate limit of 120 requests per 60 seconds exceeded.", "instance": "/api/partner/v1/bookings", "code": "rate_limited", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }500Unerwarteter Serverfehler.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#internal_error", "title": "Internal error", "status": 500, "detail": "An unexpected error occurred. Retry later or contact the hotel.", "instance": "/api/partner/v1/bookings", "code": "internal_error", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }
curl 'https://app.staystryk.com/api/partner/v1/hotel' \
-H "Authorization: Bearer $STRYK_API_KEY"const response = await fetch('https://app.staystryk.com/api/partner/v1/hotel', {
method: 'GET',
headers: {
Authorization: `Bearer ${process.env.STRYK_API_KEY}`,
},
});
if (!response.ok) {
const problem = await response.json();
throw new Error(`${problem.code}: ${problem.detail} (request ${problem.requestId})`);
}
const data = await response.json();import os
import requests
response = requests.get(
"https://app.staystryk.com/api/partner/v1/hotel",
headers={
"Authorization": f"Bearer {os.environ['STRYK_API_KEY']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json(){
"id": "hotel-alpenblick",
"name": "Hotel Alpenblick",
"legalName": "Alpenblick Hotelbetriebs GmbH",
"address": {
"street": "Dorfstraße 12",
"postalCode": "6020",
"city": "Innsbruck",
"country": "AT"
},
"timezone": "Europe/Vienna",
"currency": "EUR",
"languages": ["de", "en"],
"checkInFrom": "15:00",
"checkOutUntil": "11:00",
"contact": {
"email": "info@alpenblick.example",
"phone": "+43 512 123456",
"website": "https://alpenblick.example"
},
"version": "4f1c2a9b0d3e5f6a7b8c9d0e"
}GET/room-typesZimmerkategorien auflisten
/room-typesZimmerkategorien auflistenAlle Zimmerkategorien einschließlich inaktiver (active=false). Sortiert nach id; Zimmerkategorien haben in v1 keinen Änderungszeitstempel, daher wird updated_since nicht unterstützt vergleichen Sie version.
Scopes: property:readoperationId listRoomTypes
Parameter, query
| Name | Ort | Typ | Beschreibung |
|---|---|---|---|
limit | query | integer | Seitengröße 1-200 (Standard 50). |
cursor | query | string | nextCursor der vorherigen Seite. Alle anderen Parameter unverändert lassen. |
Antworten
200Zimmerkategorien.
application/jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
dataarray<RoomType>PflichtEinträge dieser Seite, aufsteigend nach updatedAt, dann id sortiert.
Felder anzeigen (15)
idstring (uuid)PflichtID der Zimmerkategorie.
namestringPflichtName.
codestring | nullKurzcode.
descriptionobjectPflichtBeschreibung je Sprachcode (ISO 639-1);
und, wenn die Sprache unbekannt ist.maxOccupancyintegerPflichtHöchstzahl Gäste einschließlich Zustellbetten.
maxAdultsintegerPflichtHöchstzahl Erwachsene in einer erlaubten Belegung.
maxChildrenintegerPflichtHöchstzahl Kinder in einer erlaubten Belegung.
standardOccupancyintegerPflichtBelegung, auf die sich der Grundpreis bezieht.
bedConfigurationarray<string>PflichtBetten, z. B. double_bed, twin_beds, sofa_bed.
sizeSqminteger | nullGröße in Quadratmetern.
amenitiesarray<Amenity>PflichtFelder anzeigen (2)
codestring | nullPflichtStabiler Ausstattungsschlüssel.
namestring | nullPflichtBezeichnung in der Hotelsprache.
imagesarray<Image>PflichtLeer, wenn das Hotel keine Booking-Engine-Adresse hat.
Felder anzeigen (3)
urlstring (uri)PflichtÖffentliche HTTPS-URL.
altstring | nullAlternativtext.
positionintegerPflichtSortierposition, 0 zuerst.
unitCountintegerPflichtAktive Einheiten dieser Kategorie.
activebooleanPflichtVerkaufbare Kategorie.
versionstringPflichtETag-Wert ohne Anführungszeichen.
nextCursorstring | nullPflichtUndurchsichtiger Cursor für die nächste Seite; null auf der letzten Seite.
hasMorebooleanPflichtTrue, wenn eine weitere Seite existiert.
{ "data": [ { "id": "3f6c2b1e-8d4a-4c1b-9e2f-5a7b8c9d0e1f", "name": "Doppelzimmer Bergblick", "code": "DBL", "description": { "de": "Helles Doppelzimmer mit Balkon.", "en": "Bright double room with balcony." }, "maxOccupancy": 3, "maxAdults": 2, "maxChildren": 1, "standardOccupancy": 2, "bedConfiguration": ["double_bed", "sofa_bed"], "sizeSqm": 28, "amenities": [ { "code": "balcony", "name": "Balkon" }, { "code": "wifi", "name": "WLAN" } ], "images": [ { "url": "https://app.staystryk.com/api/public/booking/alpenblick/room-photos/0c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f", "alt": "Doppelzimmer Bergblick", "position": 0 } ], "unitCount": 12, "active": true, "version": "a1b2c3d4e5f6a7b8c9d0e1f2" } ], "nextCursor": "djF8MjAyNi0xMS0wNFQwODoxNTowMFp8NWIyZTlmMWM", "hasMore": true }400Fehlerhafte Anfrage: ungültiges JSON, ungültiger Cursor oder fehlender Idempotency-Key.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#invalid_cursor", "title": "Invalid cursor", "status": 400, "detail": "The cursor is invalid or expired. Restart the listing without cursor.", "instance": "/api/partner/v1/bookings", "code": "invalid_cursor", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }401Fehlender, unbekannter, widerrufener oder abgelaufener API-Schlüssel.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#unauthorized", "title": "Unauthorized", "status": 401, "detail": "Send a valid API key in the Authorization header: Bearer stryk_live_….", "instance": "/api/partner/v1/bookings", "code": "unauthorized", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }403Dem Schlüssel fehlt der Scope, die IP ist nicht freigegeben oder das Kanalmodul ist deaktiviert.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#insufficient_scope", "title": "Insufficient scope", "status": 403, "detail": "This API key lacks the scope bookings:write.", "instance": "/api/partner/v1/bookings", "code": "insufficient_scope", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }429Zu viele Anfragen für diesen Schlüssel.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
Retry-After- Sekunden bis zum nächsten Versuch.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#rate_limited", "title": "Too many requests", "status": 429, "detail": "Rate limit of 120 requests per 60 seconds exceeded.", "instance": "/api/partner/v1/bookings", "code": "rate_limited", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }500Unerwarteter Serverfehler.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#internal_error", "title": "Internal error", "status": 500, "detail": "An unexpected error occurred. Retry later or contact the hotel.", "instance": "/api/partner/v1/bookings", "code": "internal_error", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }
curl 'https://app.staystryk.com/api/partner/v1/room-types' \
-H "Authorization: Bearer $STRYK_API_KEY"const response = await fetch('https://app.staystryk.com/api/partner/v1/room-types', {
method: 'GET',
headers: {
Authorization: `Bearer ${process.env.STRYK_API_KEY}`,
},
});
if (!response.ok) {
const problem = await response.json();
throw new Error(`${problem.code}: ${problem.detail} (request ${problem.requestId})`);
}
const data = await response.json();import os
import requests
response = requests.get(
"https://app.staystryk.com/api/partner/v1/room-types",
headers={
"Authorization": f"Bearer {os.environ['STRYK_API_KEY']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json(){
"data": [
{
"id": "3f6c2b1e-8d4a-4c1b-9e2f-5a7b8c9d0e1f",
"name": "Doppelzimmer Bergblick",
"code": "DBL",
"description": {
"de": "Helles Doppelzimmer mit Balkon.",
"en": "Bright double room with balcony."
},
"maxOccupancy": 3,
"maxAdults": 2,
"maxChildren": 1,
"standardOccupancy": 2,
"bedConfiguration": ["double_bed", "sofa_bed"],
"sizeSqm": 28,
"amenities": [
{
"code": "balcony",
"name": "Balkon"
},
{
"code": "wifi",
"name": "WLAN"
}
],
"images": [
{
"url": "https://app.staystryk.com/api/public/booking/alpenblick/room-photos/0c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"alt": "Doppelzimmer Bergblick",
"position": 0
}
],
"unitCount": 12,
"active": true,
"version": "a1b2c3d4e5f6a7b8c9d0e1f2"
}
],
"nextCursor": "djF8MjAyNi0xMS0wNFQwODoxNTowMFp8NWIyZTlmMWM",
"hasMore": true
}GET/room-types/{roomTypeId}Zimmerkategorie abrufen
/room-types/{roomTypeId}Zimmerkategorie abrufenEine Zimmerkategorie mit Belegung, Betten, Ausstattung und Bildern.
Scopes: property:readoperationId getRoomType
Parameter, path
| Name | Ort | Typ | Beschreibung |
|---|---|---|---|
roomTypeIdPflicht | path | string (uuid) | - |
Header
| Name | Ort | Typ | Beschreibung |
|---|---|---|---|
If-None-Match | header | string | ETag, das Sie kennen; 304, wenn unverändert. |
Antworten
200Zimmerkategorie.
application/jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
ETag- Starkes Entity-Tag der gelieferten Version.
idstring (uuid)PflichtID der Zimmerkategorie.
namestringPflichtName.
codestring | nullKurzcode.
descriptionobjectPflichtBeschreibung je Sprachcode (ISO 639-1);
und, wenn die Sprache unbekannt ist.maxOccupancyintegerPflichtHöchstzahl Gäste einschließlich Zustellbetten.
maxAdultsintegerPflichtHöchstzahl Erwachsene in einer erlaubten Belegung.
maxChildrenintegerPflichtHöchstzahl Kinder in einer erlaubten Belegung.
standardOccupancyintegerPflichtBelegung, auf die sich der Grundpreis bezieht.
bedConfigurationarray<string>PflichtBetten, z. B. double_bed, twin_beds, sofa_bed.
sizeSqminteger | nullGröße in Quadratmetern.
amenitiesarray<Amenity>PflichtFelder anzeigen (2)
codestring | nullPflichtStabiler Ausstattungsschlüssel.
namestring | nullPflichtBezeichnung in der Hotelsprache.
imagesarray<Image>PflichtLeer, wenn das Hotel keine Booking-Engine-Adresse hat.
Felder anzeigen (3)
urlstring (uri)PflichtÖffentliche HTTPS-URL.
altstring | nullAlternativtext.
positionintegerPflichtSortierposition, 0 zuerst.
unitCountintegerPflichtAktive Einheiten dieser Kategorie.
activebooleanPflichtVerkaufbare Kategorie.
versionstringPflichtETag-Wert ohne Anführungszeichen.
{ "id": "3f6c2b1e-8d4a-4c1b-9e2f-5a7b8c9d0e1f", "name": "Doppelzimmer Bergblick", "code": "DBL", "description": { "de": "Helles Doppelzimmer mit Balkon.", "en": "Bright double room with balcony." }, "maxOccupancy": 3, "maxAdults": 2, "maxChildren": 1, "standardOccupancy": 2, "bedConfiguration": ["double_bed", "sofa_bed"], "sizeSqm": 28, "amenities": [ { "code": "balcony", "name": "Balkon" }, { "code": "wifi", "name": "WLAN" } ], "images": [ { "url": "https://app.staystryk.com/api/public/booking/alpenblick/room-photos/0c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f", "alt": "Doppelzimmer Bergblick", "position": 0 } ], "unitCount": 12, "active": true, "version": "a1b2c3d4e5f6a7b8c9d0e1f2" }304Nicht geändert (If-None-Match hat gepasst).
RateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
ETag- Starkes Entity-Tag der gelieferten Version.
401Fehlender, unbekannter, widerrufener oder abgelaufener API-Schlüssel.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#unauthorized", "title": "Unauthorized", "status": 401, "detail": "Send a valid API key in the Authorization header: Bearer stryk_live_….", "instance": "/api/partner/v1/bookings", "code": "unauthorized", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }403Dem Schlüssel fehlt der Scope, die IP ist nicht freigegeben oder das Kanalmodul ist deaktiviert.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#insufficient_scope", "title": "Insufficient scope", "status": 403, "detail": "This API key lacks the scope bookings:write.", "instance": "/api/partner/v1/bookings", "code": "insufficient_scope", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }404Die Ressource existiert für dieses Hotel nicht.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#not_found", "title": "Not found", "status": 404, "detail": "Booking was not found.", "instance": "/api/partner/v1/bookings/5b2e9f1c-7d3a-4e8b-a6c4-0f1e2d3c4b5a", "code": "not_found", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }429Zu viele Anfragen für diesen Schlüssel.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
Retry-After- Sekunden bis zum nächsten Versuch.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#rate_limited", "title": "Too many requests", "status": 429, "detail": "Rate limit of 120 requests per 60 seconds exceeded.", "instance": "/api/partner/v1/bookings", "code": "rate_limited", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }500Unerwarteter Serverfehler.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#internal_error", "title": "Internal error", "status": 500, "detail": "An unexpected error occurred. Retry later or contact the hotel.", "instance": "/api/partner/v1/bookings", "code": "internal_error", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }
curl 'https://app.staystryk.com/api/partner/v1/room-types/3f1c2b9a-6d4e-4b8a-9c7e-1a2b3c4d5e6f' \
-H "Authorization: Bearer $STRYK_API_KEY"const response = await fetch('https://app.staystryk.com/api/partner/v1/room-types/3f1c2b9a-6d4e-4b8a-9c7e-1a2b3c4d5e6f', {
method: 'GET',
headers: {
Authorization: `Bearer ${process.env.STRYK_API_KEY}`,
},
});
if (!response.ok) {
const problem = await response.json();
throw new Error(`${problem.code}: ${problem.detail} (request ${problem.requestId})`);
}
const data = await response.json();import os
import requests
response = requests.get(
"https://app.staystryk.com/api/partner/v1/room-types/3f1c2b9a-6d4e-4b8a-9c7e-1a2b3c4d5e6f",
headers={
"Authorization": f"Bearer {os.environ['STRYK_API_KEY']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json(){
"id": "3f6c2b1e-8d4a-4c1b-9e2f-5a7b8c9d0e1f",
"name": "Doppelzimmer Bergblick",
"code": "DBL",
"description": {
"de": "Helles Doppelzimmer mit Balkon.",
"en": "Bright double room with balcony."
},
"maxOccupancy": 3,
"maxAdults": 2,
"maxChildren": 1,
"standardOccupancy": 2,
"bedConfiguration": ["double_bed", "sofa_bed"],
"sizeSqm": 28,
"amenities": [
{
"code": "balcony",
"name": "Balkon"
},
{
"code": "wifi",
"name": "WLAN"
}
],
"images": [
{
"url": "https://app.staystryk.com/api/public/booking/alpenblick/room-photos/0c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
"alt": "Doppelzimmer Bergblick",
"position": 0
}
],
"unitCount": 12,
"active": true,
"version": "a1b2c3d4e5f6a7b8c9d0e1f2"
}GET/unitsEinheiten auflisten
/unitsEinheiten auflistenZimmer und Apartments (ohne Housekeeping-Interna), sortiert nach updatedAt, id.
Scopes: property:readoperationId listUnits
Parameter, query
| Name | Ort | Typ | Beschreibung |
|---|---|---|---|
limit | query | integer | Seitengröße 1-200 (Standard 50). |
cursor | query | string | nextCursor der vorherigen Seite. Alle anderen Parameter unverändert lassen. |
updated_since | query | string (date-time) | RFC-3339-Zeitstempel; liefert Einträge mit updatedAt >= Wert. Über id + updatedAt deduplizieren. |
roomTypeId | query | string (uuid) | Nur diese Zimmerkategorie. |
Antworten
200Einheiten.
application/jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
dataarray<Unit>PflichtEinträge dieser Seite, aufsteigend nach updatedAt, dann id sortiert.
Felder anzeigen (8)
idstring (uuid)PflichtID der Einheit.
numberstringPflichtZimmernummer.
roomTypeIdstring (uuid)PflichtZimmerkategorie.
floorinteger | nullEtage.
activebooleanPflichtIn Betrieb.
housekeepingStatusstring | nullReinigungsstatus (siehe UnitUpdateRequest); hoteleigene Status behalten ihre ID.
updatedAtstring (date-time)PflichtLetzte Änderung der Zimmerstammdaten.
versionstringPflichtETag-Wert ohne Anführungszeichen; ändert sich mit Stammdaten und Reinigungsstatus.
nextCursorstring | nullPflichtUndurchsichtiger Cursor für die nächste Seite; null auf der letzten Seite.
hasMorebooleanPflichtTrue, wenn eine weitere Seite existiert.
{ "data": [ { "id": "c2d3e4f5-a6b7-4c8d-9e0f-1a2b3c4d5e6f", "number": "204", "roomTypeId": "3f6c2b1e-8d4a-4c1b-9e2f-5a7b8c9d0e1f", "floor": 2, "active": true, "updatedAt": "2026-10-28T09:12:44.512Z", "version": "0e1f2a3b4c5d6e7f8a9b0c1d" } ], "nextCursor": "djF8MjAyNi0xMS0wNFQwODoxNTowMFp8NWIyZTlmMWM", "hasMore": true }400Fehlerhafte Anfrage: ungültiges JSON, ungültiger Cursor oder fehlender Idempotency-Key.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#invalid_cursor", "title": "Invalid cursor", "status": 400, "detail": "The cursor is invalid or expired. Restart the listing without cursor.", "instance": "/api/partner/v1/bookings", "code": "invalid_cursor", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }401Fehlender, unbekannter, widerrufener oder abgelaufener API-Schlüssel.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#unauthorized", "title": "Unauthorized", "status": 401, "detail": "Send a valid API key in the Authorization header: Bearer stryk_live_….", "instance": "/api/partner/v1/bookings", "code": "unauthorized", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }403Dem Schlüssel fehlt der Scope, die IP ist nicht freigegeben oder das Kanalmodul ist deaktiviert.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#insufficient_scope", "title": "Insufficient scope", "status": 403, "detail": "This API key lacks the scope bookings:write.", "instance": "/api/partner/v1/bookings", "code": "insufficient_scope", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }422Die Anfrage enthält ungültige Felder.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#validation_failed", "title": "Validation failed", "status": 422, "detail": "The request contains invalid fields.", "instance": "/api/partner/v1/bookings", "code": "validation_failed", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b", "errors": [ { "field": "checkOut", "message": "checkOut must be after checkIn." } ] }429Zu viele Anfragen für diesen Schlüssel.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
Retry-After- Sekunden bis zum nächsten Versuch.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#rate_limited", "title": "Too many requests", "status": 429, "detail": "Rate limit of 120 requests per 60 seconds exceeded.", "instance": "/api/partner/v1/bookings", "code": "rate_limited", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }500Unerwarteter Serverfehler.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#internal_error", "title": "Internal error", "status": 500, "detail": "An unexpected error occurred. Retry later or contact the hotel.", "instance": "/api/partner/v1/bookings", "code": "internal_error", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }
curl 'https://app.staystryk.com/api/partner/v1/units?updated_since=2026-11-01T00%3A00%3A00Z' \
-H "Authorization: Bearer $STRYK_API_KEY"const response = await fetch('https://app.staystryk.com/api/partner/v1/units?updated_since=2026-11-01T00%3A00%3A00Z', {
method: 'GET',
headers: {
Authorization: `Bearer ${process.env.STRYK_API_KEY}`,
},
});
if (!response.ok) {
const problem = await response.json();
throw new Error(`${problem.code}: ${problem.detail} (request ${problem.requestId})`);
}
const data = await response.json();import os
import requests
response = requests.get(
"https://app.staystryk.com/api/partner/v1/units",
headers={
"Authorization": f"Bearer {os.environ['STRYK_API_KEY']}",
},
params={"updated_since": "2026-11-01T00:00:00Z"},
timeout=30,
)
response.raise_for_status()
data = response.json(){
"data": [
{
"id": "c2d3e4f5-a6b7-4c8d-9e0f-1a2b3c4d5e6f",
"number": "204",
"roomTypeId": "3f6c2b1e-8d4a-4c1b-9e2f-5a7b8c9d0e1f",
"floor": 2,
"active": true,
"updatedAt": "2026-10-28T09:12:44.512Z",
"version": "0e1f2a3b4c5d6e7f8a9b0c1d"
}
],
"nextCursor": "djF8MjAyNi0xMS0wNFQwODoxNTowMFp8NWIyZTlmMWM",
"hasMore": true
}GET/units/{unitId}Einheit abrufen
/units/{unitId}Einheit abrufenEin Zimmer oder Apartment.
Scopes: property:readoperationId getUnit
Parameter, path
| Name | Ort | Typ | Beschreibung |
|---|---|---|---|
unitIdPflicht | path | string (uuid) | - |
Header
| Name | Ort | Typ | Beschreibung |
|---|---|---|---|
If-None-Match | header | string | ETag, das Sie kennen; 304, wenn unverändert. |
Antworten
200Einheit.
application/jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
ETag- Starkes Entity-Tag der gelieferten Version.
idstring (uuid)PflichtID der Einheit.
numberstringPflichtZimmernummer.
roomTypeIdstring (uuid)PflichtZimmerkategorie.
floorinteger | nullEtage.
activebooleanPflichtIn Betrieb.
housekeepingStatusstring | nullReinigungsstatus (siehe UnitUpdateRequest); hoteleigene Status behalten ihre ID.
updatedAtstring (date-time)PflichtLetzte Änderung der Zimmerstammdaten.
versionstringPflichtETag-Wert ohne Anführungszeichen; ändert sich mit Stammdaten und Reinigungsstatus.
{ "id": "c2d3e4f5-a6b7-4c8d-9e0f-1a2b3c4d5e6f", "number": "204", "roomTypeId": "3f6c2b1e-8d4a-4c1b-9e2f-5a7b8c9d0e1f", "floor": 2, "active": true, "updatedAt": "2026-10-28T09:12:44.512Z", "version": "0e1f2a3b4c5d6e7f8a9b0c1d" }304Nicht geändert (If-None-Match hat gepasst).
RateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
ETag- Starkes Entity-Tag der gelieferten Version.
401Fehlender, unbekannter, widerrufener oder abgelaufener API-Schlüssel.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#unauthorized", "title": "Unauthorized", "status": 401, "detail": "Send a valid API key in the Authorization header: Bearer stryk_live_….", "instance": "/api/partner/v1/bookings", "code": "unauthorized", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }403Dem Schlüssel fehlt der Scope, die IP ist nicht freigegeben oder das Kanalmodul ist deaktiviert.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#insufficient_scope", "title": "Insufficient scope", "status": 403, "detail": "This API key lacks the scope bookings:write.", "instance": "/api/partner/v1/bookings", "code": "insufficient_scope", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }404Die Ressource existiert für dieses Hotel nicht.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#not_found", "title": "Not found", "status": 404, "detail": "Booking was not found.", "instance": "/api/partner/v1/bookings/5b2e9f1c-7d3a-4e8b-a6c4-0f1e2d3c4b5a", "code": "not_found", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }429Zu viele Anfragen für diesen Schlüssel.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
Retry-After- Sekunden bis zum nächsten Versuch.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#rate_limited", "title": "Too many requests", "status": 429, "detail": "Rate limit of 120 requests per 60 seconds exceeded.", "instance": "/api/partner/v1/bookings", "code": "rate_limited", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }500Unerwarteter Serverfehler.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#internal_error", "title": "Internal error", "status": 500, "detail": "An unexpected error occurred. Retry later or contact the hotel.", "instance": "/api/partner/v1/bookings", "code": "internal_error", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }
curl 'https://app.staystryk.com/api/partner/v1/units/3f1c2b9a-6d4e-4b8a-9c7e-1a2b3c4d5e6f' \
-H "Authorization: Bearer $STRYK_API_KEY"const response = await fetch('https://app.staystryk.com/api/partner/v1/units/3f1c2b9a-6d4e-4b8a-9c7e-1a2b3c4d5e6f', {
method: 'GET',
headers: {
Authorization: `Bearer ${process.env.STRYK_API_KEY}`,
},
});
if (!response.ok) {
const problem = await response.json();
throw new Error(`${problem.code}: ${problem.detail} (request ${problem.requestId})`);
}
const data = await response.json();import os
import requests
response = requests.get(
"https://app.staystryk.com/api/partner/v1/units/3f1c2b9a-6d4e-4b8a-9c7e-1a2b3c4d5e6f",
headers={
"Authorization": f"Bearer {os.environ['STRYK_API_KEY']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json(){
"id": "c2d3e4f5-a6b7-4c8d-9e0f-1a2b3c4d5e6f",
"number": "204",
"roomTypeId": "3f6c2b1e-8d4a-4c1b-9e2f-5a7b8c9d0e1f",
"floor": 2,
"active": true,
"updatedAt": "2026-10-28T09:12:44.512Z",
"version": "0e1f2a3b4c5d6e7f8a9b0c1d"
}PATCH/units/{unitId}Reinigungsstatus einer Einheit setzen
/units/{unitId}Reinigungsstatus einer Einheit setzenSetzt den Reinigungsstatus über den Housekeeping-Ablauf des Hotels (Belegungsregeln, gesperrte oder inaktive Einheiten → 409/422, Statusprotokoll, Reinigungszyklus). Verlangt If-Match. Stammdaten des Zimmers sind nicht änderbar.
Scopes: property:writeoperationId updateUnit
Parameter, path
| Name | Ort | Typ | Beschreibung |
|---|---|---|---|
unitIdPflicht | path | string (uuid) | - |
Header
| Name | Ort | Typ | Beschreibung |
|---|---|---|---|
If-MatchPflicht | header | string | ETag der gelesenen Version. Fehlt er → 428, ist er veraltet → 412. |
Idempotency-Key | header | string | Optionaler Idempotenz-Schlüssel, gleiche Regeln wie bei POST. |
Request-Body
Neuer Reinigungsstatus.
housekeepingStatusstringPflichtEingebauter Reinigungsstatus.
Werte:
"vacant_dirty","vacant_clean","vacant_inspected","occupied_service_required","occupied_serviced","do_not_disturb","deep_clean","linen_change","minibar_check","turndown_service"
Antworten
200Geänderte Einheit.
application/jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
ETag- Starkes Entity-Tag der gelieferten Version.
Idempotent-Replayed- true, wenn die Antwort das gespeicherte Ergebnis einer früheren Anfrage mit demselben Idempotency-Key ist.
idstring (uuid)PflichtID der Einheit.
numberstringPflichtZimmernummer.
roomTypeIdstring (uuid)PflichtZimmerkategorie.
floorinteger | nullEtage.
activebooleanPflichtIn Betrieb.
housekeepingStatusstring | nullReinigungsstatus (siehe UnitUpdateRequest); hoteleigene Status behalten ihre ID.
updatedAtstring (date-time)PflichtLetzte Änderung der Zimmerstammdaten.
versionstringPflichtETag-Wert ohne Anführungszeichen; ändert sich mit Stammdaten und Reinigungsstatus.
{ "id": "c2d3e4f5-a6b7-4c8d-9e0f-1a2b3c4d5e6f", "number": "204", "roomTypeId": "3f6c2b1e-8d4a-4c1b-9e2f-5a7b8c9d0e1f", "floor": 2, "active": true, "housekeepingStatus": "vacant_clean", "updatedAt": "2026-10-28T09:12:44.512Z", "version": "5d6e7f8a9b0c1d2e3f4a5b6c" }401Fehlender, unbekannter, widerrufener oder abgelaufener API-Schlüssel.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#unauthorized", "title": "Unauthorized", "status": 401, "detail": "Send a valid API key in the Authorization header: Bearer stryk_live_….", "instance": "/api/partner/v1/bookings", "code": "unauthorized", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }403Dem Schlüssel fehlt der Scope, die IP ist nicht freigegeben oder das Kanalmodul ist deaktiviert.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#insufficient_scope", "title": "Insufficient scope", "status": 403, "detail": "This API key lacks the scope bookings:write.", "instance": "/api/partner/v1/bookings", "code": "insufficient_scope", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }404Die Ressource existiert für dieses Hotel nicht.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#not_found", "title": "Not found", "status": 404, "detail": "Booking was not found.", "instance": "/api/partner/v1/bookings/5b2e9f1c-7d3a-4e8b-a6c4-0f1e2d3c4b5a", "code": "not_found", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }409Konflikt mit dem aktuellen Zustand.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#conflict", "title": "Conflict", "status": 409, "detail": "expectedTotal does not match the current price of the stay.", "instance": "/api/partner/v1/bookings", "code": "conflict", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b", "currentTotal": { "amount": "459.60", "currency": "EUR" } }412If-Match passt nicht zur aktuellen Version.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#precondition_failed", "title": "Precondition failed", "status": 412, "detail": "The resource changed since you read it. Fetch it again and retry with the new ETag.", "instance": "/api/partner/v1/bookings/5b2e9f1c-7d3a-4e8b-a6c4-0f1e2d3c4b5a", "code": "precondition_failed", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }413Body größer als 64 KiB.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#payload_too_large", "title": "Payload too large", "status": 413, "detail": "The request body may have at most 64 KiB.", "instance": "/api/partner/v1/bookings", "code": "payload_too_large", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }415Body ist nicht application/json.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#unsupported_media_type", "title": "Unsupported media type", "status": 415, "detail": "Send the body as application/json.", "instance": "/api/partner/v1/bookings", "code": "unsupported_media_type", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }422Die Anfrage enthält ungültige Felder.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#validation_failed", "title": "Validation failed", "status": 422, "detail": "The request contains invalid fields.", "instance": "/api/partner/v1/bookings", "code": "validation_failed", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b", "errors": [ { "field": "checkOut", "message": "checkOut must be after checkIn." } ] }428If-Match-Header fehlt.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#precondition_required", "title": "Precondition required", "status": 428, "detail": "Send the current ETag in the If-Match header.", "instance": "/api/partner/v1/bookings/5b2e9f1c-7d3a-4e8b-a6c4-0f1e2d3c4b5a", "code": "precondition_required", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }429Zu viele Anfragen für diesen Schlüssel.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
Retry-After- Sekunden bis zum nächsten Versuch.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#rate_limited", "title": "Too many requests", "status": 429, "detail": "Rate limit of 120 requests per 60 seconds exceeded.", "instance": "/api/partner/v1/bookings", "code": "rate_limited", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }500Unerwarteter Serverfehler.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#internal_error", "title": "Internal error", "status": 500, "detail": "An unexpected error occurred. Retry later or contact the hotel.", "instance": "/api/partner/v1/bookings", "code": "internal_error", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }
curl -X PATCH 'https://app.staystryk.com/api/partner/v1/units/3f1c2b9a-6d4e-4b8a-9c7e-1a2b3c4d5e6f' \
-H "Authorization: Bearer $STRYK_API_KEY" \
-H 'If-Match: "7c1e2d3f4a5b6c7d8e9f0a1b"' \
-H 'Content-Type: application/json' \
--data '{
"housekeepingStatus": "vacant_clean"
}'const response = await fetch('https://app.staystryk.com/api/partner/v1/units/3f1c2b9a-6d4e-4b8a-9c7e-1a2b3c4d5e6f', {
method: 'PATCH',
headers: {
Authorization: `Bearer ${process.env.STRYK_API_KEY}`,
'If-Match': '"7c1e2d3f4a5b6c7d8e9f0a1b"',
'Content-Type': 'application/json',
},
body: JSON.stringify({
housekeepingStatus: 'vacant_clean',
}),
});
if (!response.ok) {
const problem = await response.json();
throw new Error(`${problem.code}: ${problem.detail} (request ${problem.requestId})`);
}
const data = await response.json();import os
import requests
response = requests.patch(
"https://app.staystryk.com/api/partner/v1/units/3f1c2b9a-6d4e-4b8a-9c7e-1a2b3c4d5e6f",
headers={
"Authorization": f"Bearer {os.environ['STRYK_API_KEY']}",
"If-Match": "\"7c1e2d3f4a5b6c7d8e9f0a1b\"",
},
json={
"housekeepingStatus": "vacant_clean",
},
timeout=30,
)
response.raise_for_status()
data = response.json(){
"id": "c2d3e4f5-a6b7-4c8d-9e0f-1a2b3c4d5e6f",
"number": "204",
"roomTypeId": "3f6c2b1e-8d4a-4c1b-9e2f-5a7b8c9d0e1f",
"floor": 2,
"active": true,
"housekeepingStatus": "vacant_clean",
"updatedAt": "2026-10-28T09:12:44.512Z",
"version": "5d6e7f8a9b0c1d2e3f4a5b6c"
}Availability & Rates
Verkaufbare Verfügbarkeit, Aufenthaltsbeschränkungen, Tagespreise und Tarife; Beschränkungen und Tagespreise sind schreibbar.
GET/availabilityVerfügbarkeit abrufen
/availabilityVerfügbarkeit abrufenVerkaufbare Einheiten und Aufenthaltsbeschränkungen je aktiver Zimmerkategorie und Nacht, aus derselben Verfügbarkeitsquelle, die die STRYK Booking Engine und die Kanalverteilung nutzen. Höchstens 366 Tage.
Scopes: availability:readoperationId getAvailability
Parameter, query
| Name | Ort | Typ | Beschreibung |
|---|---|---|---|
fromPflicht | query | string (date) | Erstes Datum (YYYY-MM-DD, hotel-lokal). |
toPflicht | query | string (date) | Letztes Datum, einschließlich; der Zeitraum umfasst höchstens 366 Tage. |
roomTypeId | query | string (uuid) | Nur diese Zimmerkategorie. |
Antworten
200Verfügbarkeit.
application/jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
fromstring (date)Pflichttostring (date)Pflichtdataarray<AvailabilityDay>PflichtFelder anzeigen (7)
roomTypeIdstring (uuid)Pflichtdatestring (date)PflichtNacht (hotel-lokal).
availableintegerPflichtFür diese Nacht noch verkaufbare Einheiten.
closedbooleanPflichtFür den Verkauf geschlossen.
minStayintegerPflichtMindestaufenthalt in Nächten für Anreisen an diesem Datum.
closedToArrivalbooleanPflichtKeine Anreise an diesem Datum.
closedToDeparturebooleanPflichtKeine Abreise an diesem Datum.
{ "from": "2026-12-01", "to": "2026-12-02", "data": [ { "roomTypeId": "3f6c2b1e-8d4a-4c1b-9e2f-5a7b8c9d0e1f", "date": "2026-12-01", "available": 4, "closed": false, "minStay": 2, "closedToArrival": false, "closedToDeparture": false }, { "roomTypeId": "3f6c2b1e-8d4a-4c1b-9e2f-5a7b8c9d0e1f", "date": "2026-12-02", "available": 3, "closed": false, "minStay": 2, "closedToArrival": false, "closedToDeparture": true } ] }400Fehlerhafte Anfrage: ungültiges JSON, ungültiger Cursor oder fehlender Idempotency-Key.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#invalid_cursor", "title": "Invalid cursor", "status": 400, "detail": "The cursor is invalid or expired. Restart the listing without cursor.", "instance": "/api/partner/v1/bookings", "code": "invalid_cursor", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }401Fehlender, unbekannter, widerrufener oder abgelaufener API-Schlüssel.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#unauthorized", "title": "Unauthorized", "status": 401, "detail": "Send a valid API key in the Authorization header: Bearer stryk_live_….", "instance": "/api/partner/v1/bookings", "code": "unauthorized", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }403Dem Schlüssel fehlt der Scope, die IP ist nicht freigegeben oder das Kanalmodul ist deaktiviert.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#insufficient_scope", "title": "Insufficient scope", "status": 403, "detail": "This API key lacks the scope bookings:write.", "instance": "/api/partner/v1/bookings", "code": "insufficient_scope", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }404Die Ressource existiert für dieses Hotel nicht.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#not_found", "title": "Not found", "status": 404, "detail": "Booking was not found.", "instance": "/api/partner/v1/bookings/5b2e9f1c-7d3a-4e8b-a6c4-0f1e2d3c4b5a", "code": "not_found", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }422Die Anfrage enthält ungültige Felder.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#validation_failed", "title": "Validation failed", "status": 422, "detail": "The request contains invalid fields.", "instance": "/api/partner/v1/bookings", "code": "validation_failed", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b", "errors": [ { "field": "checkOut", "message": "checkOut must be after checkIn." } ] }429Zu viele Anfragen für diesen Schlüssel.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
Retry-After- Sekunden bis zum nächsten Versuch.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#rate_limited", "title": "Too many requests", "status": 429, "detail": "Rate limit of 120 requests per 60 seconds exceeded.", "instance": "/api/partner/v1/bookings", "code": "rate_limited", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }500Unerwarteter Serverfehler.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#internal_error", "title": "Internal error", "status": 500, "detail": "An unexpected error occurred. Retry later or contact the hotel.", "instance": "/api/partner/v1/bookings", "code": "internal_error", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }
curl 'https://app.staystryk.com/api/partner/v1/availability?from=2026-12-01&to=2026-12-31' \
-H "Authorization: Bearer $STRYK_API_KEY"const response = await fetch('https://app.staystryk.com/api/partner/v1/availability?from=2026-12-01&to=2026-12-31', {
method: 'GET',
headers: {
Authorization: `Bearer ${process.env.STRYK_API_KEY}`,
},
});
if (!response.ok) {
const problem = await response.json();
throw new Error(`${problem.code}: ${problem.detail} (request ${problem.requestId})`);
}
const data = await response.json();import os
import requests
response = requests.get(
"https://app.staystryk.com/api/partner/v1/availability",
headers={
"Authorization": f"Bearer {os.environ['STRYK_API_KEY']}",
},
params={"from": "2026-12-01", "to": "2026-12-31"},
timeout=30,
)
response.raise_for_status()
data = response.json(){
"from": "2026-12-01",
"to": "2026-12-02",
"data": [
{
"roomTypeId": "3f6c2b1e-8d4a-4c1b-9e2f-5a7b8c9d0e1f",
"date": "2026-12-01",
"available": 4,
"closed": false,
"minStay": 2,
"closedToArrival": false,
"closedToDeparture": false
},
{
"roomTypeId": "3f6c2b1e-8d4a-4c1b-9e2f-5a7b8c9d0e1f",
"date": "2026-12-02",
"available": 3,
"closed": false,
"minStay": 2,
"closedToArrival": false,
"closedToDeparture": true
}
]
}GET/ratesTagespreise abrufen
/ratesTagespreise abrufenÜbernachtungspreise für eine Nacht je Zimmerkategorie und API-Tarif bei der Standardbelegung der Zimmerkategorie (Vertriebsweg api, dieselbe Berechnung wie in der Kanalverteilung). Den genauen Preis eines Aufenthalts (Aufenthaltsdauer-Regeln, Kinder, Ortstaxe, Pflichtgebühren) liefert POST /quotes.
Scopes: rates:readoperationId getRates
Parameter, query
| Name | Ort | Typ | Beschreibung |
|---|---|---|---|
fromPflicht | query | string (date) | Erstes Datum (YYYY-MM-DD, hotel-lokal). |
toPflicht | query | string (date) | Letztes Datum, einschließlich; der Zeitraum umfasst höchstens 366 Tage. |
roomTypeId | query | string (uuid) | Nur diese Zimmerkategorie. |
ratePlanId | query | string (uuid) | Nur dieser Tarif. |
Antworten
200Preise.
application/jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
fromstring (date)Pflichttostring (date)Pflichtdataarray<RateDay>PflichtFelder anzeigen (5)
roomTypeIdstring (uuid)PflichtratePlanIdstring | null (uuid)PflichtNull, wenn kein Tarif über die API verkauft wird (Grundpreis).
datestring (date)PflichtpriceobjectPflichtÜbernachtungspreis einer Nacht.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
occupancyintegerPflichtGäste, auf die sich der Preis bezieht.
{ "from": "2026-12-01", "to": "2026-12-02", "data": [ { "roomTypeId": "3f6c2b1e-8d4a-4c1b-9e2f-5a7b8c9d0e1f", "ratePlanId": "9e8d7c6b-5a49-4382-8170-6f5e4d3c2b1a", "date": "2026-12-01", "price": { "amount": "140.00", "currency": "EUR" }, "occupancy": 2 }, { "roomTypeId": "3f6c2b1e-8d4a-4c1b-9e2f-5a7b8c9d0e1f", "ratePlanId": "9e8d7c6b-5a49-4382-8170-6f5e4d3c2b1a", "date": "2026-12-02", "price": { "amount": "150.00", "currency": "EUR" }, "occupancy": 2 } ] }400Fehlerhafte Anfrage: ungültiges JSON, ungültiger Cursor oder fehlender Idempotency-Key.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#invalid_cursor", "title": "Invalid cursor", "status": 400, "detail": "The cursor is invalid or expired. Restart the listing without cursor.", "instance": "/api/partner/v1/bookings", "code": "invalid_cursor", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }401Fehlender, unbekannter, widerrufener oder abgelaufener API-Schlüssel.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#unauthorized", "title": "Unauthorized", "status": 401, "detail": "Send a valid API key in the Authorization header: Bearer stryk_live_….", "instance": "/api/partner/v1/bookings", "code": "unauthorized", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }403Dem Schlüssel fehlt der Scope, die IP ist nicht freigegeben oder das Kanalmodul ist deaktiviert.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#insufficient_scope", "title": "Insufficient scope", "status": 403, "detail": "This API key lacks the scope bookings:write.", "instance": "/api/partner/v1/bookings", "code": "insufficient_scope", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }404Die Ressource existiert für dieses Hotel nicht.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#not_found", "title": "Not found", "status": 404, "detail": "Booking was not found.", "instance": "/api/partner/v1/bookings/5b2e9f1c-7d3a-4e8b-a6c4-0f1e2d3c4b5a", "code": "not_found", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }422Die Anfrage enthält ungültige Felder.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#validation_failed", "title": "Validation failed", "status": 422, "detail": "The request contains invalid fields.", "instance": "/api/partner/v1/bookings", "code": "validation_failed", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b", "errors": [ { "field": "checkOut", "message": "checkOut must be after checkIn." } ] }429Zu viele Anfragen für diesen Schlüssel.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
Retry-After- Sekunden bis zum nächsten Versuch.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#rate_limited", "title": "Too many requests", "status": 429, "detail": "Rate limit of 120 requests per 60 seconds exceeded.", "instance": "/api/partner/v1/bookings", "code": "rate_limited", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }500Unerwarteter Serverfehler.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#internal_error", "title": "Internal error", "status": 500, "detail": "An unexpected error occurred. Retry later or contact the hotel.", "instance": "/api/partner/v1/bookings", "code": "internal_error", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }
curl 'https://app.staystryk.com/api/partner/v1/rates?from=2026-12-01&to=2026-12-31' \
-H "Authorization: Bearer $STRYK_API_KEY"const response = await fetch('https://app.staystryk.com/api/partner/v1/rates?from=2026-12-01&to=2026-12-31', {
method: 'GET',
headers: {
Authorization: `Bearer ${process.env.STRYK_API_KEY}`,
},
});
if (!response.ok) {
const problem = await response.json();
throw new Error(`${problem.code}: ${problem.detail} (request ${problem.requestId})`);
}
const data = await response.json();import os
import requests
response = requests.get(
"https://app.staystryk.com/api/partner/v1/rates",
headers={
"Authorization": f"Bearer {os.environ['STRYK_API_KEY']}",
},
params={"from": "2026-12-01", "to": "2026-12-31"},
timeout=30,
)
response.raise_for_status()
data = response.json(){
"from": "2026-12-01",
"to": "2026-12-02",
"data": [
{
"roomTypeId": "3f6c2b1e-8d4a-4c1b-9e2f-5a7b8c9d0e1f",
"ratePlanId": "9e8d7c6b-5a49-4382-8170-6f5e4d3c2b1a",
"date": "2026-12-01",
"price": {
"amount": "140.00",
"currency": "EUR"
},
"occupancy": 2
},
{
"roomTypeId": "3f6c2b1e-8d4a-4c1b-9e2f-5a7b8c9d0e1f",
"ratePlanId": "9e8d7c6b-5a49-4382-8170-6f5e4d3c2b1a",
"date": "2026-12-02",
"price": {
"amount": "150.00",
"currency": "EUR"
},
"occupancy": 2
}
]
}GET/rate-plansTarife auflisten
/rate-plansTarife auflistenTarife, die über den Vertriebsweg API verkauft werden, einschließlich inaktiver.
Scopes: rates:readoperationId listRatePlans
Parameter, query
| Name | Ort | Typ | Beschreibung |
|---|---|---|---|
limit | query | integer | Seitengröße 1-200 (Standard 50). |
cursor | query | string | nextCursor der vorherigen Seite. Alle anderen Parameter unverändert lassen. |
updated_since | query | string (date-time) | RFC-3339-Zeitstempel; liefert Einträge mit updatedAt >= Wert. Über id + updatedAt deduplizieren. |
Antworten
200Tarife.
application/jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
dataarray<RatePlan>PflichtEinträge dieser Seite, aufsteigend nach updatedAt, dann id sortiert.
Felder anzeigen (9)
idstring (uuid)PflichtTarif-ID.
namestringPflichtName.
codestring | nullKurzcode.
descriptionstring | nullBeschreibung.
roomTypeIdsarray<string (uuid)>PflichtZimmerkategorien, für die der Tarif gilt; leer bedeutet alle.
mealPlanstring | nullVerpflegung.
Werte:
"breakfast","room_only",nullcancellationPolicyCancellationPolicy | nullFelder anzeigen (3)
summarystring | nullZusammenfassung für Gäste in der Hotelsprache.
refundableboolean | nullKostenlose Stornierung ist zu einem Zeitpunkt möglich.
freeCancellationHoursBeforeinteger | nullKostenlose Stornierung bis so viele Stunden vor Anreise.
activebooleanPflichtDerzeit verkaufbar.
updatedAtstring (date-time)PflichtLetzte Änderung.
nextCursorstring | nullPflichtUndurchsichtiger Cursor für die nächste Seite; null auf der letzten Seite.
hasMorebooleanPflichtTrue, wenn eine weitere Seite existiert.
{ "data": [ { "id": "9e8d7c6b-5a49-4382-8170-6f5e4d3c2b1a", "name": "Flexibel mit Frühstück", "code": "FLEX-BB", "description": "Flexible rate including breakfast.", "roomTypeIds": ["3f6c2b1e-8d4a-4c1b-9e2f-5a7b8c9d0e1f", "7a1d9c3e-2b4f-4e6a-8c0d-1e2f3a4b5c6d"], "mealPlan": "breakfast", "cancellationPolicy": { "summary": "Free cancellation until 7 days before arrival, then 80 %.", "refundable": true, "freeCancellationHoursBefore": 168 }, "active": true, "updatedAt": "2026-10-30T14:02:10.000Z" } ], "nextCursor": "djF8MjAyNi0xMS0wNFQwODoxNTowMFp8NWIyZTlmMWM", "hasMore": true }400Fehlerhafte Anfrage: ungültiges JSON, ungültiger Cursor oder fehlender Idempotency-Key.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#invalid_cursor", "title": "Invalid cursor", "status": 400, "detail": "The cursor is invalid or expired. Restart the listing without cursor.", "instance": "/api/partner/v1/bookings", "code": "invalid_cursor", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }401Fehlender, unbekannter, widerrufener oder abgelaufener API-Schlüssel.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#unauthorized", "title": "Unauthorized", "status": 401, "detail": "Send a valid API key in the Authorization header: Bearer stryk_live_….", "instance": "/api/partner/v1/bookings", "code": "unauthorized", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }403Dem Schlüssel fehlt der Scope, die IP ist nicht freigegeben oder das Kanalmodul ist deaktiviert.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#insufficient_scope", "title": "Insufficient scope", "status": 403, "detail": "This API key lacks the scope bookings:write.", "instance": "/api/partner/v1/bookings", "code": "insufficient_scope", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }422Die Anfrage enthält ungültige Felder.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#validation_failed", "title": "Validation failed", "status": 422, "detail": "The request contains invalid fields.", "instance": "/api/partner/v1/bookings", "code": "validation_failed", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b", "errors": [ { "field": "checkOut", "message": "checkOut must be after checkIn." } ] }429Zu viele Anfragen für diesen Schlüssel.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
Retry-After- Sekunden bis zum nächsten Versuch.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#rate_limited", "title": "Too many requests", "status": 429, "detail": "Rate limit of 120 requests per 60 seconds exceeded.", "instance": "/api/partner/v1/bookings", "code": "rate_limited", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }500Unerwarteter Serverfehler.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#internal_error", "title": "Internal error", "status": 500, "detail": "An unexpected error occurred. Retry later or contact the hotel.", "instance": "/api/partner/v1/bookings", "code": "internal_error", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }
curl 'https://app.staystryk.com/api/partner/v1/rate-plans?updated_since=2026-11-01T00%3A00%3A00Z' \
-H "Authorization: Bearer $STRYK_API_KEY"const response = await fetch('https://app.staystryk.com/api/partner/v1/rate-plans?updated_since=2026-11-01T00%3A00%3A00Z', {
method: 'GET',
headers: {
Authorization: `Bearer ${process.env.STRYK_API_KEY}`,
},
});
if (!response.ok) {
const problem = await response.json();
throw new Error(`${problem.code}: ${problem.detail} (request ${problem.requestId})`);
}
const data = await response.json();import os
import requests
response = requests.get(
"https://app.staystryk.com/api/partner/v1/rate-plans",
headers={
"Authorization": f"Bearer {os.environ['STRYK_API_KEY']}",
},
params={"updated_since": "2026-11-01T00:00:00Z"},
timeout=30,
)
response.raise_for_status()
data = response.json(){
"data": [
{
"id": "9e8d7c6b-5a49-4382-8170-6f5e4d3c2b1a",
"name": "Flexibel mit Frühstück",
"code": "FLEX-BB",
"description": "Flexible rate including breakfast.",
"roomTypeIds": ["3f6c2b1e-8d4a-4c1b-9e2f-5a7b8c9d0e1f", "7a1d9c3e-2b4f-4e6a-8c0d-1e2f3a4b5c6d"],
"mealPlan": "breakfast",
"cancellationPolicy": {
"summary": "Free cancellation until 7 days before arrival, then 80 %.",
"refundable": true,
"freeCancellationHoursBefore": 168
},
"active": true,
"updatedAt": "2026-10-30T14:02:10.000Z"
}
],
"nextCursor": "djF8MjAyNi0xMS0wNFQwODoxNTowMFp8NWIyZTlmMWM",
"hasMore": true
}Quotes
Genauer Preis eines Aufenthalts vor der Buchung.
POST/quotesAufenthalt bepreisen
/quotesAufenthalt bepreisenBerechnet den Preis genau so wie POST /bookings (Vorschau der Zimmerzuteilung, Aufenthaltsbeschränkungen, Tarif, Kinder, Rabattcode, Ortstaxe, Pflichtgebühren). Nur lesend: Es wird nichts gespeichert und kein Kontingent reserviert. Ein nicht verkaufbarer Aufenthalt liefert 200 mit available: false und reasons.
Scopes: rates:readoperationId createQuote
Request-Body
Zu bepreisender Aufenthalt.
checkInstring (date)PflichtAnreise (hotel-lokal), nicht vor heute.
checkOutstring (date)PflichtAbreise, nach checkIn (höchstens 365 Nächte).
roomTypeIdstring (uuid)PflichtratePlanIdstring | null (uuid)Optionaler Tarif, der über die API verkauft wird.
adultsintegerPflichtErwachsene (>= 1).
childrenAgesarray<integer>Alter jedes Kindes (0-17).
discountCodestring | nullRabattcode des Hotels.
Antworten
200Angebot.
application/jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
availablebooleanPflichtFalse: siehe reasons; Preise sind null.
reasonsarray<QuoteReason>PflichtFelder anzeigen (2)
codestringPflichtGrundcode.
Werte:
"sold_out","min_stay_not_met","closed_to_arrival","closed_to_departure","rate_plan_not_applicable","not_bookable"messagestringPflichtEnglische Erklärung.
roomTypeIdstring (uuid)PflichtratePlanIdstring | null (uuid)PflichtcheckInstring (date)PflichtcheckOutstring (date)PflichtnightsintegerPflichttotalMoney | nullPflichtWas die Buchung kosten wird: Übernachtung plus nicht enthaltene Steuern und Gebühren.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
accommodationMoney | nullPflichtÜbernachtungspreis nach Rabatten.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
taxesAndFeesarray<TaxOrFee>PflichtFelder anzeigen (3)
namestringPflichtBezeichnung in der Hotelsprache.
amountMoneyPflichtGeldbetrag: Dezimal-String mit genau zwei Nachkommastellen und einer ISO-4217-Währung. Verwenden Sie dafür nie binäre Gleitkommazahlen.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
includedbooleanPflichtTrue: bereits in accommodation enthalten; false: kommt in total hinzu.
nightlyarray<NightlyPrice>PflichtFelder anzeigen (2)
datestring (date)PflichtpriceMoneyPflichtGeldbetrag: Dezimal-String mit genau zwei Nachkommastellen und einer ISO-4217-Währung. Verwenden Sie dafür nie binäre Gleitkommazahlen.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
cancellationPolicyCancellationPolicy | nullPflichtFelder anzeigen (3)
summarystring | nullZusammenfassung für Gäste in der Hotelsprache.
refundableboolean | nullKostenlose Stornierung ist zu einem Zeitpunkt möglich.
freeCancellationHoursBeforeinteger | nullKostenlose Stornierung bis so viele Stunden vor Anreise.
{ "available": true, "reasons": [], "roomTypeId": "3f6c2b1e-8d4a-4c1b-9e2f-5a7b8c9d0e1f", "ratePlanId": "9e8d7c6b-5a49-4382-8170-6f5e4d3c2b1a", "checkIn": "2026-12-01", "checkOut": "2026-12-04", "nights": 3, "total": { "amount": "447.60", "currency": "EUR" }, "accommodation": { "amount": "420.00", "currency": "EUR" }, "taxesAndFees": [ { "name": "Ortstaxe", "amount": { "amount": "7.60", "currency": "EUR" }, "included": false }, { "name": "Endreinigung", "amount": { "amount": "20.00", "currency": "EUR" }, "included": false } ], "nightly": [ { "date": "2026-12-01", "price": { "amount": "140.00", "currency": "EUR" } }, { "date": "2026-12-02", "price": { "amount": "140.00", "currency": "EUR" } }, { "date": "2026-12-03", "price": { "amount": "140.00", "currency": "EUR" } } ], "cancellationPolicy": { "summary": "Free cancellation until 7 days before arrival, then 80 %.", "refundable": true, "freeCancellationHoursBefore": 168 } }400Fehlerhafte Anfrage: ungültiges JSON, ungültiger Cursor oder fehlender Idempotency-Key.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#invalid_cursor", "title": "Invalid cursor", "status": 400, "detail": "The cursor is invalid or expired. Restart the listing without cursor.", "instance": "/api/partner/v1/bookings", "code": "invalid_cursor", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }401Fehlender, unbekannter, widerrufener oder abgelaufener API-Schlüssel.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#unauthorized", "title": "Unauthorized", "status": 401, "detail": "Send a valid API key in the Authorization header: Bearer stryk_live_….", "instance": "/api/partner/v1/bookings", "code": "unauthorized", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }403Dem Schlüssel fehlt der Scope, die IP ist nicht freigegeben oder das Kanalmodul ist deaktiviert.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#insufficient_scope", "title": "Insufficient scope", "status": 403, "detail": "This API key lacks the scope bookings:write.", "instance": "/api/partner/v1/bookings", "code": "insufficient_scope", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }413Body größer als 64 KiB.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#payload_too_large", "title": "Payload too large", "status": 413, "detail": "The request body may have at most 64 KiB.", "instance": "/api/partner/v1/bookings", "code": "payload_too_large", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }415Body ist nicht application/json.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#unsupported_media_type", "title": "Unsupported media type", "status": 415, "detail": "Send the body as application/json.", "instance": "/api/partner/v1/bookings", "code": "unsupported_media_type", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }422Die Anfrage enthält ungültige Felder.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#validation_failed", "title": "Validation failed", "status": 422, "detail": "The request contains invalid fields.", "instance": "/api/partner/v1/bookings", "code": "validation_failed", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b", "errors": [ { "field": "checkOut", "message": "checkOut must be after checkIn." } ] }429Zu viele Anfragen für diesen Schlüssel.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
Retry-After- Sekunden bis zum nächsten Versuch.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#rate_limited", "title": "Too many requests", "status": 429, "detail": "Rate limit of 120 requests per 60 seconds exceeded.", "instance": "/api/partner/v1/bookings", "code": "rate_limited", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }500Unerwarteter Serverfehler.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#internal_error", "title": "Internal error", "status": 500, "detail": "An unexpected error occurred. Retry later or contact the hotel.", "instance": "/api/partner/v1/bookings", "code": "internal_error", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }
curl -X POST 'https://app.staystryk.com/api/partner/v1/quotes' \
-H "Authorization: Bearer $STRYK_API_KEY" \
-H 'Content-Type: application/json' \
--data '{
"checkIn": "2026-12-01",
"checkOut": "2026-12-04",
"roomTypeId": "3f6c2b1e-8d4a-4c1b-9e2f-5a7b8c9d0e1f",
"ratePlanId": "9e8d7c6b-5a49-4382-8170-6f5e4d3c2b1a",
"adults": 2,
"childrenAges": [6]
}'const response = await fetch('https://app.staystryk.com/api/partner/v1/quotes', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.STRYK_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
checkIn: '2026-12-01',
checkOut: '2026-12-04',
roomTypeId: '3f6c2b1e-8d4a-4c1b-9e2f-5a7b8c9d0e1f',
ratePlanId: '9e8d7c6b-5a49-4382-8170-6f5e4d3c2b1a',
adults: 2,
childrenAges: [6],
}),
});
if (!response.ok) {
const problem = await response.json();
throw new Error(`${problem.code}: ${problem.detail} (request ${problem.requestId})`);
}
const data = await response.json();import os
import requests
response = requests.post(
"https://app.staystryk.com/api/partner/v1/quotes",
headers={
"Authorization": f"Bearer {os.environ['STRYK_API_KEY']}",
},
json={
"checkIn": "2026-12-01",
"checkOut": "2026-12-04",
"roomTypeId": "3f6c2b1e-8d4a-4c1b-9e2f-5a7b8c9d0e1f",
"ratePlanId": "9e8d7c6b-5a49-4382-8170-6f5e4d3c2b1a",
"adults": 2,
"childrenAges": [6],
},
timeout=30,
)
response.raise_for_status()
data = response.json(){
"available": true,
"reasons": [],
"roomTypeId": "3f6c2b1e-8d4a-4c1b-9e2f-5a7b8c9d0e1f",
"ratePlanId": "9e8d7c6b-5a49-4382-8170-6f5e4d3c2b1a",
"checkIn": "2026-12-01",
"checkOut": "2026-12-04",
"nights": 3,
"total": {
"amount": "447.60",
"currency": "EUR"
},
"accommodation": {
"amount": "420.00",
"currency": "EUR"
},
"taxesAndFees": [
{
"name": "Ortstaxe",
"amount": {
"amount": "7.60",
"currency": "EUR"
},
"included": false
},
{
"name": "Endreinigung",
"amount": {
"amount": "20.00",
"currency": "EUR"
},
"included": false
}
],
"nightly": [
{
"date": "2026-12-01",
"price": {
"amount": "140.00",
"currency": "EUR"
}
},
{
"date": "2026-12-02",
"price": {
"amount": "140.00",
"currency": "EUR"
}
},
{
"date": "2026-12-03",
"price": {
"amount": "140.00",
"currency": "EUR"
}
}
],
"cancellationPolicy": {
"summary": "Free cancellation until 7 days before arrival, then 80 %.",
"refundable": true,
"freeCancellationHoursBefore": 168
}
}Bookings
Buchungen lesen, anlegen, ändern und stornieren.
GET/bookingsBuchungen auflisten
/bookingsBuchungen auflistenAlle Buchungen des Hotels (jeder Vertriebsweg), sortiert nach updatedAt, id. Für inkrementellen Abgleich updated_since verwenden.
Scopes: bookings:readoperationId listBookings
Parameter, query
| Name | Ort | Typ | Beschreibung |
|---|---|---|---|
limit | query | integer | Seitengröße 1-200 (Standard 50). |
cursor | query | string | nextCursor der vorherigen Seite. Alle anderen Parameter unverändert lassen. |
updated_since | query | string (date-time) | RFC-3339-Zeitstempel; liefert Einträge mit updatedAt >= Wert. Über id + updatedAt deduplizieren. |
status | query | string | - |
arrivalFrom | query | string (date) | checkIn >= Datum. |
arrivalTo | query | string (date) | checkIn <= Datum. |
externalReference | query | string | Exakte externe Referenz. |
Antworten
200Buchungen.
application/jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
dataarray<Booking>PflichtEinträge dieser Seite, aufsteigend nach updatedAt, dann id sortiert.
Felder anzeigen (21)
idstring (uuid)PflichtreferencestringPflichtBuchungsnummer, die Hotel und Gast sehen.
statusstringPflichtBuchungsstatus.
Werte:
"pending","tentative","confirmed","checked_in","checked_out","cancelled","no_show"channelstringPflichtVertriebsweg.
Werte:
"direct","manual","channels","api"externalReferencestring | nullPflichtPartnerreferenz (eindeutig je Hotel).
checkInstring (date)PflichtcheckOutstring (date)PflichtnightsintegerPflichtadultsintegerPflichtchildrenintegerPflichtchildrenAgesarray<integer>Pflichtroomsarray<BookingRoom>PflichtFelder anzeigen (5)
roomTypeIdstring (uuid)PflichtunitIdstring | null (uuid)PflichtZugewiesene Einheit.
ratePlanIdstring | null (uuid)PflichtadultsintegerPflichtchildrenintegerPflicht
guestBookingGuestPflichtMomentaufnahme des Hauptgasts der Buchung.
Felder anzeigen (5)
idstring | null (uuid)PflichtGästeprofil, falls verknüpft.
firstNamestring | nullPflichtlastNamestring | nullPflichtemailstring | nullPflichtphonestring | nullPflicht
totalobjectPflichtVon STRYK berechneter Gesamtbetrag der Buchung.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
paidobjectPflichtBeglichener Betrag (alle Zahlungswege).
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
outstandingobjectPflichtGesamtbetrag minus Zahlungen, nie negativ.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
notesstring | nullPflichtcancellationBookingCancellation | nullPflichtFelder anzeigen (2)
cancelledAtstring | null (date-time)PflichtfeeMoney | nullPflichtStornogebühr gemäß den Bedingungen des Hotels.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
createdAtstring (date-time)PflichtupdatedAtstring (date-time)PflichtversionstringPflichtETag-Wert ohne Anführungszeichen.
nextCursorstring | nullPflichtUndurchsichtiger Cursor für die nächste Seite; null auf der letzten Seite.
hasMorebooleanPflichtTrue, wenn eine weitere Seite existiert.
{ "data": [ { "id": "5b2e9f1c-7d3a-4e8b-a6c4-0f1e2d3c4b5a", "reference": "B-2026-01842", "status": "confirmed", "channel": "api", "externalReference": "WEB-1234", "checkIn": "2026-12-01", "checkOut": "2026-12-04", "nights": 3, "adults": 2, "children": 1, "childrenAges": [6], "rooms": [ { "roomTypeId": "3f6c2b1e-8d4a-4c1b-9e2f-5a7b8c9d0e1f", "unitId": "c2d3e4f5-a6b7-4c8d-9e0f-1a2b3c4d5e6f", "ratePlanId": "9e8d7c6b-5a49-4382-8170-6f5e4d3c2b1a", "adults": 2, "children": 1 } ], "guest": { "id": "8f7e6d5c-4b3a-4291-8f0e-9d8c7b6a5f4e", "firstName": "Anna", "lastName": "Muster", "email": "anna.muster@example.com", "phone": "+43 660 1234567" }, "total": { "amount": "447.60", "currency": "EUR" }, "paid": { "amount": "0.00", "currency": "EUR" }, "outstanding": { "amount": "447.60", "currency": "EUR" }, "notes": "Late arrival around 22:00.", "cancellation": null, "createdAt": "2026-11-04T08:15:00.000Z", "updatedAt": "2026-11-04T08:15:00.000Z", "version": "7c1e2d3f4a5b6c7d8e9f0a1b" } ], "nextCursor": "djF8MjAyNi0xMS0wNFQwODoxNTowMFp8NWIyZTlmMWM", "hasMore": true }400Fehlerhafte Anfrage: ungültiges JSON, ungültiger Cursor oder fehlender Idempotency-Key.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#invalid_cursor", "title": "Invalid cursor", "status": 400, "detail": "The cursor is invalid or expired. Restart the listing without cursor.", "instance": "/api/partner/v1/bookings", "code": "invalid_cursor", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }401Fehlender, unbekannter, widerrufener oder abgelaufener API-Schlüssel.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#unauthorized", "title": "Unauthorized", "status": 401, "detail": "Send a valid API key in the Authorization header: Bearer stryk_live_….", "instance": "/api/partner/v1/bookings", "code": "unauthorized", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }403Dem Schlüssel fehlt der Scope, die IP ist nicht freigegeben oder das Kanalmodul ist deaktiviert.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#insufficient_scope", "title": "Insufficient scope", "status": 403, "detail": "This API key lacks the scope bookings:write.", "instance": "/api/partner/v1/bookings", "code": "insufficient_scope", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }422Die Anfrage enthält ungültige Felder.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#validation_failed", "title": "Validation failed", "status": 422, "detail": "The request contains invalid fields.", "instance": "/api/partner/v1/bookings", "code": "validation_failed", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b", "errors": [ { "field": "checkOut", "message": "checkOut must be after checkIn." } ] }429Zu viele Anfragen für diesen Schlüssel.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
Retry-After- Sekunden bis zum nächsten Versuch.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#rate_limited", "title": "Too many requests", "status": 429, "detail": "Rate limit of 120 requests per 60 seconds exceeded.", "instance": "/api/partner/v1/bookings", "code": "rate_limited", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }500Unerwarteter Serverfehler.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#internal_error", "title": "Internal error", "status": 500, "detail": "An unexpected error occurred. Retry later or contact the hotel.", "instance": "/api/partner/v1/bookings", "code": "internal_error", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }
curl 'https://app.staystryk.com/api/partner/v1/bookings?updated_since=2026-11-01T00%3A00%3A00Z' \
-H "Authorization: Bearer $STRYK_API_KEY"const response = await fetch('https://app.staystryk.com/api/partner/v1/bookings?updated_since=2026-11-01T00%3A00%3A00Z', {
method: 'GET',
headers: {
Authorization: `Bearer ${process.env.STRYK_API_KEY}`,
},
});
if (!response.ok) {
const problem = await response.json();
throw new Error(`${problem.code}: ${problem.detail} (request ${problem.requestId})`);
}
const data = await response.json();import os
import requests
response = requests.get(
"https://app.staystryk.com/api/partner/v1/bookings",
headers={
"Authorization": f"Bearer {os.environ['STRYK_API_KEY']}",
},
params={"updated_since": "2026-11-01T00:00:00Z"},
timeout=30,
)
response.raise_for_status()
data = response.json(){
"data": [
{
"id": "5b2e9f1c-7d3a-4e8b-a6c4-0f1e2d3c4b5a",
"reference": "B-2026-01842",
"status": "confirmed",
"channel": "api",
"externalReference": "WEB-1234",
"checkIn": "2026-12-01",
"checkOut": "2026-12-04",
"nights": 3,
"adults": 2,
"children": 1,
"childrenAges": [6],
"rooms": [
{
"roomTypeId": "3f6c2b1e-8d4a-4c1b-9e2f-5a7b8c9d0e1f",
"unitId": "c2d3e4f5-a6b7-4c8d-9e0f-1a2b3c4d5e6f",
"ratePlanId": "9e8d7c6b-5a49-4382-8170-6f5e4d3c2b1a",
"adults": 2,
"children": 1
}
],
"guest": {
"id": "8f7e6d5c-4b3a-4291-8f0e-9d8c7b6a5f4e",
"firstName": "Anna",
"lastName": "Muster",
"email": "anna.muster@example.com",
"phone": "+43 660 1234567"
},
"total": {
"amount": "447.60",
"currency": "EUR"
},
"paid": {
"amount": "0.00",
"currency": "EUR"
},
"outstanding": {
"amount": "447.60",
"currency": "EUR"
},
"notes": "Late arrival around 22:00.",
"cancellation": null,
"createdAt": "2026-11-04T08:15:00.000Z",
"updatedAt": "2026-11-04T08:15:00.000Z",
"version": "7c1e2d3f4a5b6c7d8e9f0a1b"
}
],
"nextCursor": "djF8MjAyNi0xMS0wNFQwODoxNTowMFp8NWIyZTlmMWM",
"hasMore": true
}POST/bookingsBuchung anlegen
/bookingsBuchung anlegenLegt eine Buchung mit dem Vertriebsweg api an. STRYK berechnet den Preis (nie der Client) und weist atomar eine Einheit zu. Senden Sie expectedTotal mit dem Preis, den Sie dem Gast gezeigt haben: Ein abweichender Serverpreis ergibt 409 conflict mit currentTotal. Es wird keine Zahlung eingezogen; die Buchung startet mit offenem Saldo. Standardmäßig sendet STRYK für API-Buchungen keine Buchungsbestätigung per E-Mail (vom Hotel eingerichtete Automationen für neue Buchungen laufen weiterhin). Mit notifyGuest: true sendet STRYK seine Standard-Buchungsbestätigung an guest.email, dieselbe Nachricht wie die STRYK Booking Engine, in der Standardsprache des Hotels. Eine idempotente Wiederholung sendet sie nie ein zweites Mal.
Scopes: bookings:writeoperationId createBooking
Header
| Name | Ort | Typ | Beschreibung |
|---|---|---|---|
Idempotency-KeyPflicht | header | string | Eindeutiger Schlüssel je logischem Schreibvorgang (1-160 Zeichen A-Z a-z 0-9 . _ : -), 24 h gespeichert. Eine Wiederholung mit demselben Key und Body liefert die erste Antwort erneut. |
Request-Body
Neue Buchung.
roomTypeIdstring (uuid)PflichtratePlanIdstring | null (uuid)checkInstring (date)PflichtcheckOutstring (date)PflichtadultsintegerPflichtchildrenAgesarray<integer>guestGuestInputPflichtGast einer neuen Buchung.
Felder anzeigen (6)
firstNamestringPflichtlastNamestringPflichtemailstring (email)PflichtE-Mail des Gasts.
phonestring | nullcountrystring | nullWohnsitzland (ISO 3166-1 alpha-2).
addressAddress | nullFelder anzeigen (4)
streetstring | nullStraße und Hausnummer.
postalCodestring | nullPostleitzahl.
citystring | nullOrt.
countrystring | nullLändercode nach ISO 3166-1 alpha-2.
notesstring | nullexternalReferencestring | nullIhre Referenz, eindeutig je Hotel.
statusstring | nullAnfangsstatus (Standard confirmed).
Werte:
"confirmed","tentative",nullexpectedTotalMoney | nullPreis, den Sie dem Gast gezeigt haben; eine Abweichung ergibt 409 conflict mit currentTotal.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
discountCodestring | nullnotifyGuestboolean | nullDie Standard-Buchungsbestätigung von STRYK an
guest.emailsenden (Standard false). Verwendet die Vorlage und Standardsprache des Hotels; vorläufige Buchungen (tentative) erhalten stattdessen die Eingangsbestätigung. Wird je Buchung einmal gesendet, bei einer idempotenten Wiederholung nie erneut.
Antworten
201Buchung angelegt.
application/jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
ETag- Starkes Entity-Tag der gelieferten Version.
Location- URL der angelegten Ressource.
Idempotent-Replayed- true, wenn die Antwort das gespeicherte Ergebnis einer früheren Anfrage mit demselben Idempotency-Key ist.
idstring (uuid)PflichtreferencestringPflichtBuchungsnummer, die Hotel und Gast sehen.
statusstringPflichtBuchungsstatus.
Werte:
"pending","tentative","confirmed","checked_in","checked_out","cancelled","no_show"channelstringPflichtVertriebsweg.
Werte:
"direct","manual","channels","api"externalReferencestring | nullPflichtPartnerreferenz (eindeutig je Hotel).
checkInstring (date)PflichtcheckOutstring (date)PflichtnightsintegerPflichtadultsintegerPflichtchildrenintegerPflichtchildrenAgesarray<integer>Pflichtroomsarray<BookingRoom>PflichtFelder anzeigen (5)
roomTypeIdstring (uuid)PflichtunitIdstring | null (uuid)PflichtZugewiesene Einheit.
ratePlanIdstring | null (uuid)PflichtadultsintegerPflichtchildrenintegerPflicht
guestBookingGuestPflichtMomentaufnahme des Hauptgasts der Buchung.
Felder anzeigen (5)
idstring | null (uuid)PflichtGästeprofil, falls verknüpft.
firstNamestring | nullPflichtlastNamestring | nullPflichtemailstring | nullPflichtphonestring | nullPflicht
totalobjectPflichtVon STRYK berechneter Gesamtbetrag der Buchung.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
paidobjectPflichtBeglichener Betrag (alle Zahlungswege).
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
outstandingobjectPflichtGesamtbetrag minus Zahlungen, nie negativ.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
notesstring | nullPflichtcancellationBookingCancellation | nullPflichtFelder anzeigen (2)
cancelledAtstring | null (date-time)PflichtfeeMoney | nullPflichtStornogebühr gemäß den Bedingungen des Hotels.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
createdAtstring (date-time)PflichtupdatedAtstring (date-time)PflichtversionstringPflichtETag-Wert ohne Anführungszeichen.
{ "id": "5b2e9f1c-7d3a-4e8b-a6c4-0f1e2d3c4b5a", "reference": "B-2026-01842", "status": "confirmed", "channel": "api", "externalReference": "WEB-1234", "checkIn": "2026-12-01", "checkOut": "2026-12-04", "nights": 3, "adults": 2, "children": 1, "childrenAges": [6], "rooms": [ { "roomTypeId": "3f6c2b1e-8d4a-4c1b-9e2f-5a7b8c9d0e1f", "unitId": "c2d3e4f5-a6b7-4c8d-9e0f-1a2b3c4d5e6f", "ratePlanId": "9e8d7c6b-5a49-4382-8170-6f5e4d3c2b1a", "adults": 2, "children": 1 } ], "guest": { "id": "8f7e6d5c-4b3a-4291-8f0e-9d8c7b6a5f4e", "firstName": "Anna", "lastName": "Muster", "email": "anna.muster@example.com", "phone": "+43 660 1234567" }, "total": { "amount": "447.60", "currency": "EUR" }, "paid": { "amount": "0.00", "currency": "EUR" }, "outstanding": { "amount": "447.60", "currency": "EUR" }, "notes": "Late arrival around 22:00.", "cancellation": null, "createdAt": "2026-11-04T08:15:00.000Z", "updatedAt": "2026-11-04T08:15:00.000Z", "version": "7c1e2d3f4a5b6c7d8e9f0a1b" }400Fehlerhafte Anfrage: ungültiges JSON, ungültiger Cursor oder fehlender Idempotency-Key.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#invalid_cursor", "title": "Invalid cursor", "status": 400, "detail": "The cursor is invalid or expired. Restart the listing without cursor.", "instance": "/api/partner/v1/bookings", "code": "invalid_cursor", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }401Fehlender, unbekannter, widerrufener oder abgelaufener API-Schlüssel.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#unauthorized", "title": "Unauthorized", "status": 401, "detail": "Send a valid API key in the Authorization header: Bearer stryk_live_….", "instance": "/api/partner/v1/bookings", "code": "unauthorized", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }403Dem Schlüssel fehlt der Scope, die IP ist nicht freigegeben oder das Kanalmodul ist deaktiviert.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#insufficient_scope", "title": "Insufficient scope", "status": 403, "detail": "This API key lacks the scope bookings:write.", "instance": "/api/partner/v1/bookings", "code": "insufficient_scope", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }409Konflikt mit dem aktuellen Zustand.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#conflict", "title": "Conflict", "status": 409, "detail": "expectedTotal does not match the current price of the stay.", "instance": "/api/partner/v1/bookings", "code": "conflict", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b", "currentTotal": { "amount": "459.60", "currency": "EUR" } }413Body größer als 64 KiB.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#payload_too_large", "title": "Payload too large", "status": 413, "detail": "The request body may have at most 64 KiB.", "instance": "/api/partner/v1/bookings", "code": "payload_too_large", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }415Body ist nicht application/json.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#unsupported_media_type", "title": "Unsupported media type", "status": 415, "detail": "Send the body as application/json.", "instance": "/api/partner/v1/bookings", "code": "unsupported_media_type", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }422Die Anfrage enthält ungültige Felder.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#validation_failed", "title": "Validation failed", "status": 422, "detail": "The request contains invalid fields.", "instance": "/api/partner/v1/bookings", "code": "validation_failed", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b", "errors": [ { "field": "checkOut", "message": "checkOut must be after checkIn." } ] }429Zu viele Anfragen für diesen Schlüssel.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
Retry-After- Sekunden bis zum nächsten Versuch.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#rate_limited", "title": "Too many requests", "status": 429, "detail": "Rate limit of 120 requests per 60 seconds exceeded.", "instance": "/api/partner/v1/bookings", "code": "rate_limited", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }500Unerwarteter Serverfehler.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#internal_error", "title": "Internal error", "status": 500, "detail": "An unexpected error occurred. Retry later or contact the hotel.", "instance": "/api/partner/v1/bookings", "code": "internal_error", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }
curl -X POST 'https://app.staystryk.com/api/partner/v1/bookings' \
-H "Authorization: Bearer $STRYK_API_KEY" \
-H 'Idempotency-Key: web-order-1234-create' \
-H 'Content-Type: application/json' \
--data '{
"roomTypeId": "3f6c2b1e-8d4a-4c1b-9e2f-5a7b8c9d0e1f",
"ratePlanId": "9e8d7c6b-5a49-4382-8170-6f5e4d3c2b1a",
"checkIn": "2026-12-01",
"checkOut": "2026-12-04",
"adults": 2,
"childrenAges": [6],
"guest": {
"firstName": "Anna",
"lastName": "Muster",
"email": "anna.muster@example.com",
"phone": "+43 660 1234567",
"country": "AT",
"address": {
"street": "Hauptplatz 1",
"postalCode": "8010",
"city": "Graz",
"country": "AT"
}
},
"notes": "Late arrival around 22:00.",
"externalReference": "WEB-1234",
"status": "confirmed",
"expectedTotal": {
"amount": "447.60",
"currency": "EUR"
},
"notifyGuest": true
}'const response = await fetch('https://app.staystryk.com/api/partner/v1/bookings', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.STRYK_API_KEY}`,
'Idempotency-Key': 'web-order-1234-create',
'Content-Type': 'application/json',
},
body: JSON.stringify({
roomTypeId: '3f6c2b1e-8d4a-4c1b-9e2f-5a7b8c9d0e1f',
ratePlanId: '9e8d7c6b-5a49-4382-8170-6f5e4d3c2b1a',
checkIn: '2026-12-01',
checkOut: '2026-12-04',
adults: 2,
childrenAges: [6],
guest: {
firstName: 'Anna',
lastName: 'Muster',
email: 'anna.muster@example.com',
phone: '+43 660 1234567',
country: 'AT',
address: {
street: 'Hauptplatz 1',
postalCode: '8010',
city: 'Graz',
country: 'AT',
},
},
notes: 'Late arrival around 22:00.',
externalReference: 'WEB-1234',
status: 'confirmed',
expectedTotal: {
amount: '447.60',
currency: 'EUR',
},
notifyGuest: true,
}),
});
if (!response.ok) {
const problem = await response.json();
throw new Error(`${problem.code}: ${problem.detail} (request ${problem.requestId})`);
}
const data = await response.json();import os
import requests
response = requests.post(
"https://app.staystryk.com/api/partner/v1/bookings",
headers={
"Authorization": f"Bearer {os.environ['STRYK_API_KEY']}",
"Idempotency-Key": "web-order-1234-create",
},
json={
"roomTypeId": "3f6c2b1e-8d4a-4c1b-9e2f-5a7b8c9d0e1f",
"ratePlanId": "9e8d7c6b-5a49-4382-8170-6f5e4d3c2b1a",
"checkIn": "2026-12-01",
"checkOut": "2026-12-04",
"adults": 2,
"childrenAges": [6],
"guest": {
"firstName": "Anna",
"lastName": "Muster",
"email": "anna.muster@example.com",
"phone": "+43 660 1234567",
"country": "AT",
"address": {
"street": "Hauptplatz 1",
"postalCode": "8010",
"city": "Graz",
"country": "AT",
},
},
"notes": "Late arrival around 22:00.",
"externalReference": "WEB-1234",
"status": "confirmed",
"expectedTotal": {
"amount": "447.60",
"currency": "EUR",
},
"notifyGuest": True,
},
timeout=30,
)
response.raise_for_status()
data = response.json(){
"id": "5b2e9f1c-7d3a-4e8b-a6c4-0f1e2d3c4b5a",
"reference": "B-2026-01842",
"status": "confirmed",
"channel": "api",
"externalReference": "WEB-1234",
"checkIn": "2026-12-01",
"checkOut": "2026-12-04",
"nights": 3,
"adults": 2,
"children": 1,
"childrenAges": [6],
"rooms": [
{
"roomTypeId": "3f6c2b1e-8d4a-4c1b-9e2f-5a7b8c9d0e1f",
"unitId": "c2d3e4f5-a6b7-4c8d-9e0f-1a2b3c4d5e6f",
"ratePlanId": "9e8d7c6b-5a49-4382-8170-6f5e4d3c2b1a",
"adults": 2,
"children": 1
}
],
"guest": {
"id": "8f7e6d5c-4b3a-4291-8f0e-9d8c7b6a5f4e",
"firstName": "Anna",
"lastName": "Muster",
"email": "anna.muster@example.com",
"phone": "+43 660 1234567"
},
"total": {
"amount": "447.60",
"currency": "EUR"
},
"paid": {
"amount": "0.00",
"currency": "EUR"
},
"outstanding": {
"amount": "447.60",
"currency": "EUR"
},
"notes": "Late arrival around 22:00.",
"cancellation": null,
"createdAt": "2026-11-04T08:15:00.000Z",
"updatedAt": "2026-11-04T08:15:00.000Z",
"version": "7c1e2d3f4a5b6c7d8e9f0a1b"
}GET/bookings/{bookingId}Buchung abrufen
/bookings/{bookingId}Buchung abrufenEine Buchung mit ETag.
Scopes: bookings:readoperationId getBooking
Parameter, path
| Name | Ort | Typ | Beschreibung |
|---|---|---|---|
bookingIdPflicht | path | string (uuid) | - |
Header
| Name | Ort | Typ | Beschreibung |
|---|---|---|---|
If-None-Match | header | string | ETag, das Sie kennen; 304, wenn unverändert. |
Antworten
200Buchung.
application/jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
ETag- Starkes Entity-Tag der gelieferten Version.
idstring (uuid)PflichtreferencestringPflichtBuchungsnummer, die Hotel und Gast sehen.
statusstringPflichtBuchungsstatus.
Werte:
"pending","tentative","confirmed","checked_in","checked_out","cancelled","no_show"channelstringPflichtVertriebsweg.
Werte:
"direct","manual","channels","api"externalReferencestring | nullPflichtPartnerreferenz (eindeutig je Hotel).
checkInstring (date)PflichtcheckOutstring (date)PflichtnightsintegerPflichtadultsintegerPflichtchildrenintegerPflichtchildrenAgesarray<integer>Pflichtroomsarray<BookingRoom>PflichtFelder anzeigen (5)
roomTypeIdstring (uuid)PflichtunitIdstring | null (uuid)PflichtZugewiesene Einheit.
ratePlanIdstring | null (uuid)PflichtadultsintegerPflichtchildrenintegerPflicht
guestBookingGuestPflichtMomentaufnahme des Hauptgasts der Buchung.
Felder anzeigen (5)
idstring | null (uuid)PflichtGästeprofil, falls verknüpft.
firstNamestring | nullPflichtlastNamestring | nullPflichtemailstring | nullPflichtphonestring | nullPflicht
totalobjectPflichtVon STRYK berechneter Gesamtbetrag der Buchung.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
paidobjectPflichtBeglichener Betrag (alle Zahlungswege).
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
outstandingobjectPflichtGesamtbetrag minus Zahlungen, nie negativ.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
notesstring | nullPflichtcancellationBookingCancellation | nullPflichtFelder anzeigen (2)
cancelledAtstring | null (date-time)PflichtfeeMoney | nullPflichtStornogebühr gemäß den Bedingungen des Hotels.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
createdAtstring (date-time)PflichtupdatedAtstring (date-time)PflichtversionstringPflichtETag-Wert ohne Anführungszeichen.
{ "id": "5b2e9f1c-7d3a-4e8b-a6c4-0f1e2d3c4b5a", "reference": "B-2026-01842", "status": "confirmed", "channel": "api", "externalReference": "WEB-1234", "checkIn": "2026-12-01", "checkOut": "2026-12-04", "nights": 3, "adults": 2, "children": 1, "childrenAges": [6], "rooms": [ { "roomTypeId": "3f6c2b1e-8d4a-4c1b-9e2f-5a7b8c9d0e1f", "unitId": "c2d3e4f5-a6b7-4c8d-9e0f-1a2b3c4d5e6f", "ratePlanId": "9e8d7c6b-5a49-4382-8170-6f5e4d3c2b1a", "adults": 2, "children": 1 } ], "guest": { "id": "8f7e6d5c-4b3a-4291-8f0e-9d8c7b6a5f4e", "firstName": "Anna", "lastName": "Muster", "email": "anna.muster@example.com", "phone": "+43 660 1234567" }, "total": { "amount": "447.60", "currency": "EUR" }, "paid": { "amount": "0.00", "currency": "EUR" }, "outstanding": { "amount": "447.60", "currency": "EUR" }, "notes": "Late arrival around 22:00.", "cancellation": null, "createdAt": "2026-11-04T08:15:00.000Z", "updatedAt": "2026-11-04T08:15:00.000Z", "version": "7c1e2d3f4a5b6c7d8e9f0a1b" }304Nicht geändert (If-None-Match hat gepasst).
RateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
ETag- Starkes Entity-Tag der gelieferten Version.
401Fehlender, unbekannter, widerrufener oder abgelaufener API-Schlüssel.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#unauthorized", "title": "Unauthorized", "status": 401, "detail": "Send a valid API key in the Authorization header: Bearer stryk_live_….", "instance": "/api/partner/v1/bookings", "code": "unauthorized", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }403Dem Schlüssel fehlt der Scope, die IP ist nicht freigegeben oder das Kanalmodul ist deaktiviert.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#insufficient_scope", "title": "Insufficient scope", "status": 403, "detail": "This API key lacks the scope bookings:write.", "instance": "/api/partner/v1/bookings", "code": "insufficient_scope", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }404Die Ressource existiert für dieses Hotel nicht.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#not_found", "title": "Not found", "status": 404, "detail": "Booking was not found.", "instance": "/api/partner/v1/bookings/5b2e9f1c-7d3a-4e8b-a6c4-0f1e2d3c4b5a", "code": "not_found", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }429Zu viele Anfragen für diesen Schlüssel.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
Retry-After- Sekunden bis zum nächsten Versuch.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#rate_limited", "title": "Too many requests", "status": 429, "detail": "Rate limit of 120 requests per 60 seconds exceeded.", "instance": "/api/partner/v1/bookings", "code": "rate_limited", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }500Unerwarteter Serverfehler.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#internal_error", "title": "Internal error", "status": 500, "detail": "An unexpected error occurred. Retry later or contact the hotel.", "instance": "/api/partner/v1/bookings", "code": "internal_error", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }
curl 'https://app.staystryk.com/api/partner/v1/bookings/3f1c2b9a-6d4e-4b8a-9c7e-1a2b3c4d5e6f' \
-H "Authorization: Bearer $STRYK_API_KEY"const response = await fetch('https://app.staystryk.com/api/partner/v1/bookings/3f1c2b9a-6d4e-4b8a-9c7e-1a2b3c4d5e6f', {
method: 'GET',
headers: {
Authorization: `Bearer ${process.env.STRYK_API_KEY}`,
},
});
if (!response.ok) {
const problem = await response.json();
throw new Error(`${problem.code}: ${problem.detail} (request ${problem.requestId})`);
}
const data = await response.json();import os
import requests
response = requests.get(
"https://app.staystryk.com/api/partner/v1/bookings/3f1c2b9a-6d4e-4b8a-9c7e-1a2b3c4d5e6f",
headers={
"Authorization": f"Bearer {os.environ['STRYK_API_KEY']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json(){
"id": "5b2e9f1c-7d3a-4e8b-a6c4-0f1e2d3c4b5a",
"reference": "B-2026-01842",
"status": "confirmed",
"channel": "api",
"externalReference": "WEB-1234",
"checkIn": "2026-12-01",
"checkOut": "2026-12-04",
"nights": 3,
"adults": 2,
"children": 1,
"childrenAges": [6],
"rooms": [
{
"roomTypeId": "3f6c2b1e-8d4a-4c1b-9e2f-5a7b8c9d0e1f",
"unitId": "c2d3e4f5-a6b7-4c8d-9e0f-1a2b3c4d5e6f",
"ratePlanId": "9e8d7c6b-5a49-4382-8170-6f5e4d3c2b1a",
"adults": 2,
"children": 1
}
],
"guest": {
"id": "8f7e6d5c-4b3a-4291-8f0e-9d8c7b6a5f4e",
"firstName": "Anna",
"lastName": "Muster",
"email": "anna.muster@example.com",
"phone": "+43 660 1234567"
},
"total": {
"amount": "447.60",
"currency": "EUR"
},
"paid": {
"amount": "0.00",
"currency": "EUR"
},
"outstanding": {
"amount": "447.60",
"currency": "EUR"
},
"notes": "Late arrival around 22:00.",
"cancellation": null,
"createdAt": "2026-11-04T08:15:00.000Z",
"updatedAt": "2026-11-04T08:15:00.000Z",
"version": "7c1e2d3f4a5b6c7d8e9f0a1b"
}PATCH/bookings/{bookingId}Buchung ändern
/bookings/{bookingId}Buchung ändernÄndert Kontaktdaten des Gasts, Notizen und die externe Referenz. Daten, Zimmerkategorie und Belegung sind in v1 nicht änderbar (stornieren und neu buchen oder das Hotel fragen). Verlangt If-Match. Eingecheckte, ausgecheckte, stornierte oder als No-Show markierte Buchungen ergeben 409 booking_not_modifiable.
Scopes: bookings:writeoperationId updateBooking
Parameter, path
| Name | Ort | Typ | Beschreibung |
|---|---|---|---|
bookingIdPflicht | path | string (uuid) | - |
Header
| Name | Ort | Typ | Beschreibung |
|---|---|---|---|
If-MatchPflicht | header | string | ETag der gelesenen Version. Fehlt er → 428, ist er veraltet → 412. |
Idempotency-Key | header | string | Optionaler Idempotenz-Schlüssel, gleiche Regeln wie bei POST. |
Request-Body
Zu ändernde Felder.
guestBookingGuestPatch | nullFelder anzeigen (4)
firstNamestring | nulllastNamestring | nullemailstring | null (email)phonestring | null
notesstring | nullexternalReferencestring | null
Antworten
200Geänderte Buchung.
application/jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
ETag- Starkes Entity-Tag der gelieferten Version.
Idempotent-Replayed- true, wenn die Antwort das gespeicherte Ergebnis einer früheren Anfrage mit demselben Idempotency-Key ist.
idstring (uuid)PflichtreferencestringPflichtBuchungsnummer, die Hotel und Gast sehen.
statusstringPflichtBuchungsstatus.
Werte:
"pending","tentative","confirmed","checked_in","checked_out","cancelled","no_show"channelstringPflichtVertriebsweg.
Werte:
"direct","manual","channels","api"externalReferencestring | nullPflichtPartnerreferenz (eindeutig je Hotel).
checkInstring (date)PflichtcheckOutstring (date)PflichtnightsintegerPflichtadultsintegerPflichtchildrenintegerPflichtchildrenAgesarray<integer>Pflichtroomsarray<BookingRoom>PflichtFelder anzeigen (5)
roomTypeIdstring (uuid)PflichtunitIdstring | null (uuid)PflichtZugewiesene Einheit.
ratePlanIdstring | null (uuid)PflichtadultsintegerPflichtchildrenintegerPflicht
guestBookingGuestPflichtMomentaufnahme des Hauptgasts der Buchung.
Felder anzeigen (5)
idstring | null (uuid)PflichtGästeprofil, falls verknüpft.
firstNamestring | nullPflichtlastNamestring | nullPflichtemailstring | nullPflichtphonestring | nullPflicht
totalobjectPflichtVon STRYK berechneter Gesamtbetrag der Buchung.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
paidobjectPflichtBeglichener Betrag (alle Zahlungswege).
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
outstandingobjectPflichtGesamtbetrag minus Zahlungen, nie negativ.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
notesstring | nullPflichtcancellationBookingCancellation | nullPflichtFelder anzeigen (2)
cancelledAtstring | null (date-time)PflichtfeeMoney | nullPflichtStornogebühr gemäß den Bedingungen des Hotels.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
createdAtstring (date-time)PflichtupdatedAtstring (date-time)PflichtversionstringPflichtETag-Wert ohne Anführungszeichen.
{ "id": "5b2e9f1c-7d3a-4e8b-a6c4-0f1e2d3c4b5a", "reference": "B-2026-01842", "status": "confirmed", "channel": "api", "externalReference": "WEB-1234", "checkIn": "2026-12-01", "checkOut": "2026-12-04", "nights": 3, "adults": 2, "children": 1, "childrenAges": [6], "rooms": [ { "roomTypeId": "3f6c2b1e-8d4a-4c1b-9e2f-5a7b8c9d0e1f", "unitId": "c2d3e4f5-a6b7-4c8d-9e0f-1a2b3c4d5e6f", "ratePlanId": "9e8d7c6b-5a49-4382-8170-6f5e4d3c2b1a", "adults": 2, "children": 1 } ], "guest": { "id": "8f7e6d5c-4b3a-4291-8f0e-9d8c7b6a5f4e", "firstName": "Anna", "lastName": "Muster", "email": "anna.muster@example.com", "phone": "+43 660 1234567" }, "total": { "amount": "447.60", "currency": "EUR" }, "paid": { "amount": "0.00", "currency": "EUR" }, "outstanding": { "amount": "447.60", "currency": "EUR" }, "notes": "Late arrival around 22:00.", "cancellation": null, "createdAt": "2026-11-04T08:15:00.000Z", "updatedAt": "2026-11-04T08:15:00.000Z", "version": "7c1e2d3f4a5b6c7d8e9f0a1b" }401Fehlender, unbekannter, widerrufener oder abgelaufener API-Schlüssel.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#unauthorized", "title": "Unauthorized", "status": 401, "detail": "Send a valid API key in the Authorization header: Bearer stryk_live_….", "instance": "/api/partner/v1/bookings", "code": "unauthorized", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }403Dem Schlüssel fehlt der Scope, die IP ist nicht freigegeben oder das Kanalmodul ist deaktiviert.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#insufficient_scope", "title": "Insufficient scope", "status": 403, "detail": "This API key lacks the scope bookings:write.", "instance": "/api/partner/v1/bookings", "code": "insufficient_scope", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }404Die Ressource existiert für dieses Hotel nicht.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#not_found", "title": "Not found", "status": 404, "detail": "Booking was not found.", "instance": "/api/partner/v1/bookings/5b2e9f1c-7d3a-4e8b-a6c4-0f1e2d3c4b5a", "code": "not_found", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }409Konflikt mit dem aktuellen Zustand.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#conflict", "title": "Conflict", "status": 409, "detail": "expectedTotal does not match the current price of the stay.", "instance": "/api/partner/v1/bookings", "code": "conflict", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b", "currentTotal": { "amount": "459.60", "currency": "EUR" } }412If-Match passt nicht zur aktuellen Version.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#precondition_failed", "title": "Precondition failed", "status": 412, "detail": "The resource changed since you read it. Fetch it again and retry with the new ETag.", "instance": "/api/partner/v1/bookings/5b2e9f1c-7d3a-4e8b-a6c4-0f1e2d3c4b5a", "code": "precondition_failed", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }413Body größer als 64 KiB.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#payload_too_large", "title": "Payload too large", "status": 413, "detail": "The request body may have at most 64 KiB.", "instance": "/api/partner/v1/bookings", "code": "payload_too_large", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }415Body ist nicht application/json.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#unsupported_media_type", "title": "Unsupported media type", "status": 415, "detail": "Send the body as application/json.", "instance": "/api/partner/v1/bookings", "code": "unsupported_media_type", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }422Die Anfrage enthält ungültige Felder.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#validation_failed", "title": "Validation failed", "status": 422, "detail": "The request contains invalid fields.", "instance": "/api/partner/v1/bookings", "code": "validation_failed", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b", "errors": [ { "field": "checkOut", "message": "checkOut must be after checkIn." } ] }428If-Match-Header fehlt.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#precondition_required", "title": "Precondition required", "status": 428, "detail": "Send the current ETag in the If-Match header.", "instance": "/api/partner/v1/bookings/5b2e9f1c-7d3a-4e8b-a6c4-0f1e2d3c4b5a", "code": "precondition_required", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }429Zu viele Anfragen für diesen Schlüssel.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
Retry-After- Sekunden bis zum nächsten Versuch.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#rate_limited", "title": "Too many requests", "status": 429, "detail": "Rate limit of 120 requests per 60 seconds exceeded.", "instance": "/api/partner/v1/bookings", "code": "rate_limited", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }500Unerwarteter Serverfehler.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#internal_error", "title": "Internal error", "status": 500, "detail": "An unexpected error occurred. Retry later or contact the hotel.", "instance": "/api/partner/v1/bookings", "code": "internal_error", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }
curl -X PATCH 'https://app.staystryk.com/api/partner/v1/bookings/3f1c2b9a-6d4e-4b8a-9c7e-1a2b3c4d5e6f' \
-H "Authorization: Bearer $STRYK_API_KEY" \
-H 'If-Match: "7c1e2d3f4a5b6c7d8e9f0a1b"' \
-H 'Content-Type: application/json' \
--data '{
"guest": {
"phone": "+43 660 7654321"
},
"notes": "Arrival by train, around 18:00.",
"externalReference": "WEB-1234"
}'const response = await fetch('https://app.staystryk.com/api/partner/v1/bookings/3f1c2b9a-6d4e-4b8a-9c7e-1a2b3c4d5e6f', {
method: 'PATCH',
headers: {
Authorization: `Bearer ${process.env.STRYK_API_KEY}`,
'If-Match': '"7c1e2d3f4a5b6c7d8e9f0a1b"',
'Content-Type': 'application/json',
},
body: JSON.stringify({
guest: {
phone: '+43 660 7654321',
},
notes: 'Arrival by train, around 18:00.',
externalReference: 'WEB-1234',
}),
});
if (!response.ok) {
const problem = await response.json();
throw new Error(`${problem.code}: ${problem.detail} (request ${problem.requestId})`);
}
const data = await response.json();import os
import requests
response = requests.patch(
"https://app.staystryk.com/api/partner/v1/bookings/3f1c2b9a-6d4e-4b8a-9c7e-1a2b3c4d5e6f",
headers={
"Authorization": f"Bearer {os.environ['STRYK_API_KEY']}",
"If-Match": "\"7c1e2d3f4a5b6c7d8e9f0a1b\"",
},
json={
"guest": {
"phone": "+43 660 7654321",
},
"notes": "Arrival by train, around 18:00.",
"externalReference": "WEB-1234",
},
timeout=30,
)
response.raise_for_status()
data = response.json(){
"id": "5b2e9f1c-7d3a-4e8b-a6c4-0f1e2d3c4b5a",
"reference": "B-2026-01842",
"status": "confirmed",
"channel": "api",
"externalReference": "WEB-1234",
"checkIn": "2026-12-01",
"checkOut": "2026-12-04",
"nights": 3,
"adults": 2,
"children": 1,
"childrenAges": [6],
"rooms": [
{
"roomTypeId": "3f6c2b1e-8d4a-4c1b-9e2f-5a7b8c9d0e1f",
"unitId": "c2d3e4f5-a6b7-4c8d-9e0f-1a2b3c4d5e6f",
"ratePlanId": "9e8d7c6b-5a49-4382-8170-6f5e4d3c2b1a",
"adults": 2,
"children": 1
}
],
"guest": {
"id": "8f7e6d5c-4b3a-4291-8f0e-9d8c7b6a5f4e",
"firstName": "Anna",
"lastName": "Muster",
"email": "anna.muster@example.com",
"phone": "+43 660 1234567"
},
"total": {
"amount": "447.60",
"currency": "EUR"
},
"paid": {
"amount": "0.00",
"currency": "EUR"
},
"outstanding": {
"amount": "447.60",
"currency": "EUR"
},
"notes": "Late arrival around 22:00.",
"cancellation": null,
"createdAt": "2026-11-04T08:15:00.000Z",
"updatedAt": "2026-11-04T08:15:00.000Z",
"version": "7c1e2d3f4a5b6c7d8e9f0a1b"
}POST/bookings/{bookingId}/cancelBuchung stornieren
/bookings/{bookingId}/cancelBuchung stornierenStorniert über den Stornoablauf des Hotels: Stornobedingung und Stornogebühr der Buchung gelten, die Verfügbarkeit wird freigegeben und die Stornobenachrichtigung des Hotels an den Gast gesendet. Stornierbar sind nur bestätigte Buchungen vor dem Aufenthalt; andere ergeben 409 booking_not_modifiable.
Scopes: bookings:writeoperationId cancelBooking
Parameter, path
| Name | Ort | Typ | Beschreibung |
|---|---|---|---|
bookingIdPflicht | path | string (uuid) | - |
Header
| Name | Ort | Typ | Beschreibung |
|---|---|---|---|
Idempotency-KeyPflicht | header | string | Eindeutiger Schlüssel je logischem Schreibvorgang (1-160 Zeichen A-Z a-z 0-9 . _ : -), 24 h gespeichert. Eine Wiederholung mit demselben Key und Body liefert die erste Antwort erneut. |
Request-Body
Optionaler Grund.
reasonstring | nullGrund für das Protokoll des Hotels.
Antworten
200Stornierte Buchung.
application/jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
ETag- Starkes Entity-Tag der gelieferten Version.
Idempotent-Replayed- true, wenn die Antwort das gespeicherte Ergebnis einer früheren Anfrage mit demselben Idempotency-Key ist.
idstring (uuid)PflichtreferencestringPflichtBuchungsnummer, die Hotel und Gast sehen.
statusstringPflichtBuchungsstatus.
Werte:
"pending","tentative","confirmed","checked_in","checked_out","cancelled","no_show"channelstringPflichtVertriebsweg.
Werte:
"direct","manual","channels","api"externalReferencestring | nullPflichtPartnerreferenz (eindeutig je Hotel).
checkInstring (date)PflichtcheckOutstring (date)PflichtnightsintegerPflichtadultsintegerPflichtchildrenintegerPflichtchildrenAgesarray<integer>Pflichtroomsarray<BookingRoom>PflichtFelder anzeigen (5)
roomTypeIdstring (uuid)PflichtunitIdstring | null (uuid)PflichtZugewiesene Einheit.
ratePlanIdstring | null (uuid)PflichtadultsintegerPflichtchildrenintegerPflicht
guestBookingGuestPflichtMomentaufnahme des Hauptgasts der Buchung.
Felder anzeigen (5)
idstring | null (uuid)PflichtGästeprofil, falls verknüpft.
firstNamestring | nullPflichtlastNamestring | nullPflichtemailstring | nullPflichtphonestring | nullPflicht
totalobjectPflichtVon STRYK berechneter Gesamtbetrag der Buchung.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
paidobjectPflichtBeglichener Betrag (alle Zahlungswege).
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
outstandingobjectPflichtGesamtbetrag minus Zahlungen, nie negativ.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
notesstring | nullPflichtcancellationBookingCancellation | nullPflichtFelder anzeigen (2)
cancelledAtstring | null (date-time)PflichtfeeMoney | nullPflichtStornogebühr gemäß den Bedingungen des Hotels.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
createdAtstring (date-time)PflichtupdatedAtstring (date-time)PflichtversionstringPflichtETag-Wert ohne Anführungszeichen.
{ "id": "5b2e9f1c-7d3a-4e8b-a6c4-0f1e2d3c4b5a", "reference": "B-2026-01842", "status": "cancelled", "channel": "api", "externalReference": "WEB-1234", "checkIn": "2026-12-01", "checkOut": "2026-12-04", "nights": 3, "adults": 2, "children": 1, "childrenAges": [6], "rooms": [ { "roomTypeId": "3f6c2b1e-8d4a-4c1b-9e2f-5a7b8c9d0e1f", "unitId": "c2d3e4f5-a6b7-4c8d-9e0f-1a2b3c4d5e6f", "ratePlanId": "9e8d7c6b-5a49-4382-8170-6f5e4d3c2b1a", "adults": 2, "children": 1 } ], "guest": { "id": "8f7e6d5c-4b3a-4291-8f0e-9d8c7b6a5f4e", "firstName": "Anna", "lastName": "Muster", "email": "anna.muster@example.com", "phone": "+43 660 1234567" }, "total": { "amount": "447.60", "currency": "EUR" }, "paid": { "amount": "0.00", "currency": "EUR" }, "outstanding": { "amount": "447.60", "currency": "EUR" }, "notes": "Late arrival around 22:00.", "cancellation": { "cancelledAt": "2026-11-10T10:00:00.000Z", "fee": { "amount": "0.00", "currency": "EUR" } }, "createdAt": "2026-11-04T08:15:00.000Z", "updatedAt": "2026-11-10T10:00:00.000Z", "version": "9a8b7c6d5e4f3a2b1c0d9e8f" }400Fehlerhafte Anfrage: ungültiges JSON, ungültiger Cursor oder fehlender Idempotency-Key.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#invalid_cursor", "title": "Invalid cursor", "status": 400, "detail": "The cursor is invalid or expired. Restart the listing without cursor.", "instance": "/api/partner/v1/bookings", "code": "invalid_cursor", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }401Fehlender, unbekannter, widerrufener oder abgelaufener API-Schlüssel.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#unauthorized", "title": "Unauthorized", "status": 401, "detail": "Send a valid API key in the Authorization header: Bearer stryk_live_….", "instance": "/api/partner/v1/bookings", "code": "unauthorized", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }403Dem Schlüssel fehlt der Scope, die IP ist nicht freigegeben oder das Kanalmodul ist deaktiviert.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#insufficient_scope", "title": "Insufficient scope", "status": 403, "detail": "This API key lacks the scope bookings:write.", "instance": "/api/partner/v1/bookings", "code": "insufficient_scope", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }404Die Ressource existiert für dieses Hotel nicht.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#not_found", "title": "Not found", "status": 404, "detail": "Booking was not found.", "instance": "/api/partner/v1/bookings/5b2e9f1c-7d3a-4e8b-a6c4-0f1e2d3c4b5a", "code": "not_found", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }409Konflikt mit dem aktuellen Zustand.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#conflict", "title": "Conflict", "status": 409, "detail": "expectedTotal does not match the current price of the stay.", "instance": "/api/partner/v1/bookings", "code": "conflict", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b", "currentTotal": { "amount": "459.60", "currency": "EUR" } }413Body größer als 64 KiB.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#payload_too_large", "title": "Payload too large", "status": 413, "detail": "The request body may have at most 64 KiB.", "instance": "/api/partner/v1/bookings", "code": "payload_too_large", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }415Body ist nicht application/json.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#unsupported_media_type", "title": "Unsupported media type", "status": 415, "detail": "Send the body as application/json.", "instance": "/api/partner/v1/bookings", "code": "unsupported_media_type", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }422Die Anfrage enthält ungültige Felder.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#validation_failed", "title": "Validation failed", "status": 422, "detail": "The request contains invalid fields.", "instance": "/api/partner/v1/bookings", "code": "validation_failed", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b", "errors": [ { "field": "checkOut", "message": "checkOut must be after checkIn." } ] }429Zu viele Anfragen für diesen Schlüssel.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
Retry-After- Sekunden bis zum nächsten Versuch.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#rate_limited", "title": "Too many requests", "status": 429, "detail": "Rate limit of 120 requests per 60 seconds exceeded.", "instance": "/api/partner/v1/bookings", "code": "rate_limited", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }500Unerwarteter Serverfehler.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#internal_error", "title": "Internal error", "status": 500, "detail": "An unexpected error occurred. Retry later or contact the hotel.", "instance": "/api/partner/v1/bookings", "code": "internal_error", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }
curl -X POST 'https://app.staystryk.com/api/partner/v1/bookings/3f1c2b9a-6d4e-4b8a-9c7e-1a2b3c4d5e6f/cancel' \
-H "Authorization: Bearer $STRYK_API_KEY" \
-H 'Idempotency-Key: web-order-1234-create' \
-H 'Content-Type: application/json' \
--data '{
"reason": "Guest cancelled on the partner website."
}'const response = await fetch('https://app.staystryk.com/api/partner/v1/bookings/3f1c2b9a-6d4e-4b8a-9c7e-1a2b3c4d5e6f/cancel', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.STRYK_API_KEY}`,
'Idempotency-Key': 'web-order-1234-create',
'Content-Type': 'application/json',
},
body: JSON.stringify({
reason: 'Guest cancelled on the partner website.',
}),
});
if (!response.ok) {
const problem = await response.json();
throw new Error(`${problem.code}: ${problem.detail} (request ${problem.requestId})`);
}
const data = await response.json();import os
import requests
response = requests.post(
"https://app.staystryk.com/api/partner/v1/bookings/3f1c2b9a-6d4e-4b8a-9c7e-1a2b3c4d5e6f/cancel",
headers={
"Authorization": f"Bearer {os.environ['STRYK_API_KEY']}",
"Idempotency-Key": "web-order-1234-create",
},
json={
"reason": "Guest cancelled on the partner website.",
},
timeout=30,
)
response.raise_for_status()
data = response.json(){
"id": "5b2e9f1c-7d3a-4e8b-a6c4-0f1e2d3c4b5a",
"reference": "B-2026-01842",
"status": "cancelled",
"channel": "api",
"externalReference": "WEB-1234",
"checkIn": "2026-12-01",
"checkOut": "2026-12-04",
"nights": 3,
"adults": 2,
"children": 1,
"childrenAges": [6],
"rooms": [
{
"roomTypeId": "3f6c2b1e-8d4a-4c1b-9e2f-5a7b8c9d0e1f",
"unitId": "c2d3e4f5-a6b7-4c8d-9e0f-1a2b3c4d5e6f",
"ratePlanId": "9e8d7c6b-5a49-4382-8170-6f5e4d3c2b1a",
"adults": 2,
"children": 1
}
],
"guest": {
"id": "8f7e6d5c-4b3a-4291-8f0e-9d8c7b6a5f4e",
"firstName": "Anna",
"lastName": "Muster",
"email": "anna.muster@example.com",
"phone": "+43 660 1234567"
},
"total": {
"amount": "447.60",
"currency": "EUR"
},
"paid": {
"amount": "0.00",
"currency": "EUR"
},
"outstanding": {
"amount": "447.60",
"currency": "EUR"
},
"notes": "Late arrival around 22:00.",
"cancellation": {
"cancelledAt": "2026-11-10T10:00:00.000Z",
"fee": {
"amount": "0.00",
"currency": "EUR"
}
},
"createdAt": "2026-11-04T08:15:00.000Z",
"updatedAt": "2026-11-10T10:00:00.000Z",
"version": "9a8b7c6d5e4f3a2b1c0d9e8f"
}Guests
DSGVO-minimale Gästeprofile.
GET/guestsGäste auflisten
/guestsGäste auflistenGästeprofile (DSGVO-minimal), sortiert nach updatedAt, id. Gelöschte Gäste und Gäste mit eingeschränkter Verarbeitung sind nicht sichtbar.
Scopes: guests:readoperationId listGuests
Parameter, query
| Name | Ort | Typ | Beschreibung |
|---|---|---|---|
limit | query | integer | Seitengröße 1-200 (Standard 50). |
cursor | query | string | nextCursor der vorherigen Seite. Alle anderen Parameter unverändert lassen. |
updated_since | query | string (date-time) | RFC-3339-Zeitstempel; liefert Einträge mit updatedAt >= Wert. Über id + updatedAt deduplizieren. |
email | query | string | Exakte E-Mail (Groß-/Kleinschreibung egal). |
Antworten
200Gäste.
application/jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
dataarray<Guest>PflichtEinträge dieser Seite, aufsteigend nach updatedAt, dann id sortiert.
Felder anzeigen (10)
idstring (uuid)PflichtfirstNamestring | nullPflichtlastNamestring | nullPflichtsalutationstring | nullemailstring | nullphonestring | nullcountrystring | nullISO 3166-1 alpha-2.
addressAddress | nullFelder anzeigen (4)
streetstring | nullStraße und Hausnummer.
postalCodestring | nullPostleitzahl.
citystring | nullOrt.
countrystring | nullLändercode nach ISO 3166-1 alpha-2.
updatedAtstring (date-time)PflichtversionstringPflichtETag-Wert ohne Anführungszeichen.
nextCursorstring | nullPflichtUndurchsichtiger Cursor für die nächste Seite; null auf der letzten Seite.
hasMorebooleanPflichtTrue, wenn eine weitere Seite existiert.
{ "data": [ { "id": "8f7e6d5c-4b3a-4291-8f0e-9d8c7b6a5f4e", "firstName": "Anna", "lastName": "Muster", "salutation": "Frau", "email": "anna.muster@example.com", "phone": "+43 660 1234567", "country": "AT", "address": { "street": "Hauptplatz 1", "postalCode": "8010", "city": "Graz", "country": "AT" }, "updatedAt": "2026-11-04T08:15:00.000Z", "version": "3e4f5a6b7c8d9e0f1a2b3c4d" } ], "nextCursor": "djF8MjAyNi0xMS0wNFQwODoxNTowMFp8NWIyZTlmMWM", "hasMore": true }400Fehlerhafte Anfrage: ungültiges JSON, ungültiger Cursor oder fehlender Idempotency-Key.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#invalid_cursor", "title": "Invalid cursor", "status": 400, "detail": "The cursor is invalid or expired. Restart the listing without cursor.", "instance": "/api/partner/v1/bookings", "code": "invalid_cursor", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }401Fehlender, unbekannter, widerrufener oder abgelaufener API-Schlüssel.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#unauthorized", "title": "Unauthorized", "status": 401, "detail": "Send a valid API key in the Authorization header: Bearer stryk_live_….", "instance": "/api/partner/v1/bookings", "code": "unauthorized", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }403Dem Schlüssel fehlt der Scope, die IP ist nicht freigegeben oder das Kanalmodul ist deaktiviert.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#insufficient_scope", "title": "Insufficient scope", "status": 403, "detail": "This API key lacks the scope bookings:write.", "instance": "/api/partner/v1/bookings", "code": "insufficient_scope", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }422Die Anfrage enthält ungültige Felder.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#validation_failed", "title": "Validation failed", "status": 422, "detail": "The request contains invalid fields.", "instance": "/api/partner/v1/bookings", "code": "validation_failed", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b", "errors": [ { "field": "checkOut", "message": "checkOut must be after checkIn." } ] }429Zu viele Anfragen für diesen Schlüssel.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
Retry-After- Sekunden bis zum nächsten Versuch.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#rate_limited", "title": "Too many requests", "status": 429, "detail": "Rate limit of 120 requests per 60 seconds exceeded.", "instance": "/api/partner/v1/bookings", "code": "rate_limited", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }500Unerwarteter Serverfehler.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#internal_error", "title": "Internal error", "status": 500, "detail": "An unexpected error occurred. Retry later or contact the hotel.", "instance": "/api/partner/v1/bookings", "code": "internal_error", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }
curl 'https://app.staystryk.com/api/partner/v1/guests?updated_since=2026-11-01T00%3A00%3A00Z' \
-H "Authorization: Bearer $STRYK_API_KEY"const response = await fetch('https://app.staystryk.com/api/partner/v1/guests?updated_since=2026-11-01T00%3A00%3A00Z', {
method: 'GET',
headers: {
Authorization: `Bearer ${process.env.STRYK_API_KEY}`,
},
});
if (!response.ok) {
const problem = await response.json();
throw new Error(`${problem.code}: ${problem.detail} (request ${problem.requestId})`);
}
const data = await response.json();import os
import requests
response = requests.get(
"https://app.staystryk.com/api/partner/v1/guests",
headers={
"Authorization": f"Bearer {os.environ['STRYK_API_KEY']}",
},
params={"updated_since": "2026-11-01T00:00:00Z"},
timeout=30,
)
response.raise_for_status()
data = response.json(){
"data": [
{
"id": "8f7e6d5c-4b3a-4291-8f0e-9d8c7b6a5f4e",
"firstName": "Anna",
"lastName": "Muster",
"salutation": "Frau",
"email": "anna.muster@example.com",
"phone": "+43 660 1234567",
"country": "AT",
"address": {
"street": "Hauptplatz 1",
"postalCode": "8010",
"city": "Graz",
"country": "AT"
},
"updatedAt": "2026-11-04T08:15:00.000Z",
"version": "3e4f5a6b7c8d9e0f1a2b3c4d"
}
],
"nextCursor": "djF8MjAyNi0xMS0wNFQwODoxNTowMFp8NWIyZTlmMWM",
"hasMore": true
}GET/guests/{guestId}Gast abrufen
/guests/{guestId}Gast abrufenEin Gästeprofil mit ETag.
Scopes: guests:readoperationId getGuest
Parameter, path
| Name | Ort | Typ | Beschreibung |
|---|---|---|---|
guestIdPflicht | path | string (uuid) | - |
Header
| Name | Ort | Typ | Beschreibung |
|---|---|---|---|
If-None-Match | header | string | ETag, das Sie kennen; 304, wenn unverändert. |
Antworten
200Gast.
application/jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
ETag- Starkes Entity-Tag der gelieferten Version.
idstring (uuid)PflichtfirstNamestring | nullPflichtlastNamestring | nullPflichtsalutationstring | nullemailstring | nullphonestring | nullcountrystring | nullISO 3166-1 alpha-2.
addressAddress | nullFelder anzeigen (4)
streetstring | nullStraße und Hausnummer.
postalCodestring | nullPostleitzahl.
citystring | nullOrt.
countrystring | nullLändercode nach ISO 3166-1 alpha-2.
updatedAtstring (date-time)PflichtversionstringPflichtETag-Wert ohne Anführungszeichen.
{ "id": "8f7e6d5c-4b3a-4291-8f0e-9d8c7b6a5f4e", "firstName": "Anna", "lastName": "Muster", "salutation": "Frau", "email": "anna.muster@example.com", "phone": "+43 660 1234567", "country": "AT", "address": { "street": "Hauptplatz 1", "postalCode": "8010", "city": "Graz", "country": "AT" }, "updatedAt": "2026-11-04T08:15:00.000Z", "version": "3e4f5a6b7c8d9e0f1a2b3c4d" }304Nicht geändert (If-None-Match hat gepasst).
RateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
ETag- Starkes Entity-Tag der gelieferten Version.
401Fehlender, unbekannter, widerrufener oder abgelaufener API-Schlüssel.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#unauthorized", "title": "Unauthorized", "status": 401, "detail": "Send a valid API key in the Authorization header: Bearer stryk_live_….", "instance": "/api/partner/v1/bookings", "code": "unauthorized", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }403Dem Schlüssel fehlt der Scope, die IP ist nicht freigegeben oder das Kanalmodul ist deaktiviert.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#insufficient_scope", "title": "Insufficient scope", "status": 403, "detail": "This API key lacks the scope bookings:write.", "instance": "/api/partner/v1/bookings", "code": "insufficient_scope", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }404Die Ressource existiert für dieses Hotel nicht.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#not_found", "title": "Not found", "status": 404, "detail": "Booking was not found.", "instance": "/api/partner/v1/bookings/5b2e9f1c-7d3a-4e8b-a6c4-0f1e2d3c4b5a", "code": "not_found", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }429Zu viele Anfragen für diesen Schlüssel.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
Retry-After- Sekunden bis zum nächsten Versuch.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#rate_limited", "title": "Too many requests", "status": 429, "detail": "Rate limit of 120 requests per 60 seconds exceeded.", "instance": "/api/partner/v1/bookings", "code": "rate_limited", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }500Unerwarteter Serverfehler.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#internal_error", "title": "Internal error", "status": 500, "detail": "An unexpected error occurred. Retry later or contact the hotel.", "instance": "/api/partner/v1/bookings", "code": "internal_error", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }
curl 'https://app.staystryk.com/api/partner/v1/guests/3f1c2b9a-6d4e-4b8a-9c7e-1a2b3c4d5e6f' \
-H "Authorization: Bearer $STRYK_API_KEY"const response = await fetch('https://app.staystryk.com/api/partner/v1/guests/3f1c2b9a-6d4e-4b8a-9c7e-1a2b3c4d5e6f', {
method: 'GET',
headers: {
Authorization: `Bearer ${process.env.STRYK_API_KEY}`,
},
});
if (!response.ok) {
const problem = await response.json();
throw new Error(`${problem.code}: ${problem.detail} (request ${problem.requestId})`);
}
const data = await response.json();import os
import requests
response = requests.get(
"https://app.staystryk.com/api/partner/v1/guests/3f1c2b9a-6d4e-4b8a-9c7e-1a2b3c4d5e6f",
headers={
"Authorization": f"Bearer {os.environ['STRYK_API_KEY']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json(){
"id": "8f7e6d5c-4b3a-4291-8f0e-9d8c7b6a5f4e",
"firstName": "Anna",
"lastName": "Muster",
"salutation": "Frau",
"email": "anna.muster@example.com",
"phone": "+43 660 1234567",
"country": "AT",
"address": {
"street": "Hauptplatz 1",
"postalCode": "8010",
"city": "Graz",
"country": "AT"
},
"updatedAt": "2026-11-04T08:15:00.000Z",
"version": "3e4f5a6b7c8d9e0f1a2b3c4d"
}PATCH/guests/{guestId}Kontaktdaten eines Gasts ändern
/guests/{guestId}Kontaktdaten eines Gasts ändernÄndert Name, Anrede, E-Mail, Telefon, Land und Adresse eines Gästeprofils. Verlangt If-Match.
Scopes: guests:writeoperationId updateGuest
Parameter, path
| Name | Ort | Typ | Beschreibung |
|---|---|---|---|
guestIdPflicht | path | string (uuid) | - |
Header
| Name | Ort | Typ | Beschreibung |
|---|---|---|---|
If-MatchPflicht | header | string | ETag der gelesenen Version. Fehlt er → 428, ist er veraltet → 412. |
Idempotency-Key | header | string | Optionaler Idempotenz-Schlüssel, gleiche Regeln wie bei POST. |
Request-Body
Zu ändernde Felder.
firstNamestring | nulllastNamestring | nullsalutationstring | nullemailstring | null (email)phonestring | nullcountrystring | nulladdressAddress | nullFelder anzeigen (4)
streetstring | nullStraße und Hausnummer.
postalCodestring | nullPostleitzahl.
citystring | nullOrt.
countrystring | nullLändercode nach ISO 3166-1 alpha-2.
Antworten
200Geänderter Gast.
application/jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
ETag- Starkes Entity-Tag der gelieferten Version.
Idempotent-Replayed- true, wenn die Antwort das gespeicherte Ergebnis einer früheren Anfrage mit demselben Idempotency-Key ist.
idstring (uuid)PflichtfirstNamestring | nullPflichtlastNamestring | nullPflichtsalutationstring | nullemailstring | nullphonestring | nullcountrystring | nullISO 3166-1 alpha-2.
addressAddress | nullFelder anzeigen (4)
streetstring | nullStraße und Hausnummer.
postalCodestring | nullPostleitzahl.
citystring | nullOrt.
countrystring | nullLändercode nach ISO 3166-1 alpha-2.
updatedAtstring (date-time)PflichtversionstringPflichtETag-Wert ohne Anführungszeichen.
{ "id": "8f7e6d5c-4b3a-4291-8f0e-9d8c7b6a5f4e", "firstName": "Anna", "lastName": "Muster", "salutation": "Frau", "email": "anna.muster@example.com", "phone": "+43 660 1234567", "country": "AT", "address": { "street": "Hauptplatz 1", "postalCode": "8010", "city": "Graz", "country": "AT" }, "updatedAt": "2026-11-04T08:15:00.000Z", "version": "3e4f5a6b7c8d9e0f1a2b3c4d" }401Fehlender, unbekannter, widerrufener oder abgelaufener API-Schlüssel.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#unauthorized", "title": "Unauthorized", "status": 401, "detail": "Send a valid API key in the Authorization header: Bearer stryk_live_….", "instance": "/api/partner/v1/bookings", "code": "unauthorized", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }403Dem Schlüssel fehlt der Scope, die IP ist nicht freigegeben oder das Kanalmodul ist deaktiviert.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#insufficient_scope", "title": "Insufficient scope", "status": 403, "detail": "This API key lacks the scope bookings:write.", "instance": "/api/partner/v1/bookings", "code": "insufficient_scope", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }404Die Ressource existiert für dieses Hotel nicht.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#not_found", "title": "Not found", "status": 404, "detail": "Booking was not found.", "instance": "/api/partner/v1/bookings/5b2e9f1c-7d3a-4e8b-a6c4-0f1e2d3c4b5a", "code": "not_found", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }409Konflikt mit dem aktuellen Zustand.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#conflict", "title": "Conflict", "status": 409, "detail": "expectedTotal does not match the current price of the stay.", "instance": "/api/partner/v1/bookings", "code": "conflict", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b", "currentTotal": { "amount": "459.60", "currency": "EUR" } }412If-Match passt nicht zur aktuellen Version.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#precondition_failed", "title": "Precondition failed", "status": 412, "detail": "The resource changed since you read it. Fetch it again and retry with the new ETag.", "instance": "/api/partner/v1/bookings/5b2e9f1c-7d3a-4e8b-a6c4-0f1e2d3c4b5a", "code": "precondition_failed", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }413Body größer als 64 KiB.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#payload_too_large", "title": "Payload too large", "status": 413, "detail": "The request body may have at most 64 KiB.", "instance": "/api/partner/v1/bookings", "code": "payload_too_large", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }415Body ist nicht application/json.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#unsupported_media_type", "title": "Unsupported media type", "status": 415, "detail": "Send the body as application/json.", "instance": "/api/partner/v1/bookings", "code": "unsupported_media_type", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }422Die Anfrage enthält ungültige Felder.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#validation_failed", "title": "Validation failed", "status": 422, "detail": "The request contains invalid fields.", "instance": "/api/partner/v1/bookings", "code": "validation_failed", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b", "errors": [ { "field": "checkOut", "message": "checkOut must be after checkIn." } ] }428If-Match-Header fehlt.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#precondition_required", "title": "Precondition required", "status": 428, "detail": "Send the current ETag in the If-Match header.", "instance": "/api/partner/v1/bookings/5b2e9f1c-7d3a-4e8b-a6c4-0f1e2d3c4b5a", "code": "precondition_required", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }429Zu viele Anfragen für diesen Schlüssel.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
Retry-After- Sekunden bis zum nächsten Versuch.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#rate_limited", "title": "Too many requests", "status": 429, "detail": "Rate limit of 120 requests per 60 seconds exceeded.", "instance": "/api/partner/v1/bookings", "code": "rate_limited", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }500Unerwarteter Serverfehler.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#internal_error", "title": "Internal error", "status": 500, "detail": "An unexpected error occurred. Retry later or contact the hotel.", "instance": "/api/partner/v1/bookings", "code": "internal_error", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }
curl -X PATCH 'https://app.staystryk.com/api/partner/v1/guests/3f1c2b9a-6d4e-4b8a-9c7e-1a2b3c4d5e6f' \
-H "Authorization: Bearer $STRYK_API_KEY" \
-H 'If-Match: "7c1e2d3f4a5b6c7d8e9f0a1b"' \
-H 'Content-Type: application/json' \
--data '{
"email": "anna.muster@example.org",
"phone": "+43 660 7654321"
}'const response = await fetch('https://app.staystryk.com/api/partner/v1/guests/3f1c2b9a-6d4e-4b8a-9c7e-1a2b3c4d5e6f', {
method: 'PATCH',
headers: {
Authorization: `Bearer ${process.env.STRYK_API_KEY}`,
'If-Match': '"7c1e2d3f4a5b6c7d8e9f0a1b"',
'Content-Type': 'application/json',
},
body: JSON.stringify({
email: 'anna.muster@example.org',
phone: '+43 660 7654321',
}),
});
if (!response.ok) {
const problem = await response.json();
throw new Error(`${problem.code}: ${problem.detail} (request ${problem.requestId})`);
}
const data = await response.json();import os
import requests
response = requests.patch(
"https://app.staystryk.com/api/partner/v1/guests/3f1c2b9a-6d4e-4b8a-9c7e-1a2b3c4d5e6f",
headers={
"Authorization": f"Bearer {os.environ['STRYK_API_KEY']}",
"If-Match": "\"7c1e2d3f4a5b6c7d8e9f0a1b\"",
},
json={
"email": "anna.muster@example.org",
"phone": "+43 660 7654321",
},
timeout=30,
)
response.raise_for_status()
data = response.json(){
"id": "8f7e6d5c-4b3a-4291-8f0e-9d8c7b6a5f4e",
"firstName": "Anna",
"lastName": "Muster",
"salutation": "Frau",
"email": "anna.muster@example.com",
"phone": "+43 660 1234567",
"country": "AT",
"address": {
"street": "Hauptplatz 1",
"postalCode": "8010",
"city": "Graz",
"country": "AT"
},
"updatedAt": "2026-11-04T08:15:00.000Z",
"version": "3e4f5a6b7c8d9e0f1a2b3c4d"
}Payments
Zahlungsstatus von Buchungen; Überweisungen auf ausgestellte Rechnungen.
GET/bookings/{bookingId}/paymentsZahlungsstatus einer Buchung abrufen
/bookings/{bookingId}/paymentsZahlungsstatus einer Buchung abrufenGesamt-, bezahlter und offener Betrag sowie Onlinezahlungen. Nur lesend; die API nimmt nie Zahlungsdaten an.
Scopes: payments:readoperationId getBookingPayments
Parameter, path
| Name | Ort | Typ | Beschreibung |
|---|---|---|---|
bookingIdPflicht | path | string (uuid) | - |
Antworten
200Zahlungsstatus.
application/jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
bookingIdstring (uuid)PflichtstatusstringPflichtWerte:
"unpaid","partially_paid","paid","refunded","overpaid"totalMoneyPflichtGeldbetrag: Dezimal-String mit genau zwei Nachkommastellen und einer ISO-4217-Währung. Verwenden Sie dafür nie binäre Gleitkommazahlen.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
paidMoneyPflichtGeldbetrag: Dezimal-String mit genau zwei Nachkommastellen und einer ISO-4217-Währung. Verwenden Sie dafür nie binäre Gleitkommazahlen.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
outstandingMoneyPflichtGeldbetrag: Dezimal-String mit genau zwei Nachkommastellen und einer ISO-4217-Währung. Verwenden Sie dafür nie binäre Gleitkommazahlen.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
paymentsarray<Payment>PflichtOnlinezahlungen (höchstens 50). Zahlungen an der Rezeption sind nur in paid enthalten.
Felder anzeigen (5)
idstring (uuid)PflichtstatusstringPflichtWerte:
"requires_action","authorized","captured","partially_refunded","refunded","failed","cancelled","expired","unknown"methodstringPflichtWerte:
"bank_transfer","provider_checkout","credit_card","paypal","google_pay","apple_pay","eps","point_of_sale","other"amountMoneyPflichtGeldbetrag: Dezimal-String mit genau zwei Nachkommastellen und einer ISO-4217-Währung. Verwenden Sie dafür nie binäre Gleitkommazahlen.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
createdAtstring (date-time)Pflicht
{ "bookingId": "5b2e9f1c-7d3a-4e8b-a6c4-0f1e2d3c4b5a", "status": "partially_paid", "total": { "amount": "447.60", "currency": "EUR" }, "paid": { "amount": "100.00", "currency": "EUR" }, "outstanding": { "amount": "347.60", "currency": "EUR" }, "payments": [ { "id": "6e5d4c3b-2a19-4f8e-9d7c-6b5a4f3e2d1c", "status": "captured", "method": "credit_card", "amount": { "amount": "100.00", "currency": "EUR" }, "createdAt": "2026-11-04T08:20:31.000Z" } ] }401Fehlender, unbekannter, widerrufener oder abgelaufener API-Schlüssel.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#unauthorized", "title": "Unauthorized", "status": 401, "detail": "Send a valid API key in the Authorization header: Bearer stryk_live_….", "instance": "/api/partner/v1/bookings", "code": "unauthorized", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }403Dem Schlüssel fehlt der Scope, die IP ist nicht freigegeben oder das Kanalmodul ist deaktiviert.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#insufficient_scope", "title": "Insufficient scope", "status": 403, "detail": "This API key lacks the scope bookings:write.", "instance": "/api/partner/v1/bookings", "code": "insufficient_scope", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }404Die Ressource existiert für dieses Hotel nicht.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#not_found", "title": "Not found", "status": 404, "detail": "Booking was not found.", "instance": "/api/partner/v1/bookings/5b2e9f1c-7d3a-4e8b-a6c4-0f1e2d3c4b5a", "code": "not_found", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }429Zu viele Anfragen für diesen Schlüssel.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
Retry-After- Sekunden bis zum nächsten Versuch.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#rate_limited", "title": "Too many requests", "status": 429, "detail": "Rate limit of 120 requests per 60 seconds exceeded.", "instance": "/api/partner/v1/bookings", "code": "rate_limited", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }500Unerwarteter Serverfehler.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#internal_error", "title": "Internal error", "status": 500, "detail": "An unexpected error occurred. Retry later or contact the hotel.", "instance": "/api/partner/v1/bookings", "code": "internal_error", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }
curl 'https://app.staystryk.com/api/partner/v1/bookings/3f1c2b9a-6d4e-4b8a-9c7e-1a2b3c4d5e6f/payments' \
-H "Authorization: Bearer $STRYK_API_KEY"const response = await fetch('https://app.staystryk.com/api/partner/v1/bookings/3f1c2b9a-6d4e-4b8a-9c7e-1a2b3c4d5e6f/payments', {
method: 'GET',
headers: {
Authorization: `Bearer ${process.env.STRYK_API_KEY}`,
},
});
if (!response.ok) {
const problem = await response.json();
throw new Error(`${problem.code}: ${problem.detail} (request ${problem.requestId})`);
}
const data = await response.json();import os
import requests
response = requests.get(
"https://app.staystryk.com/api/partner/v1/bookings/3f1c2b9a-6d4e-4b8a-9c7e-1a2b3c4d5e6f/payments",
headers={
"Authorization": f"Bearer {os.environ['STRYK_API_KEY']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json(){
"bookingId": "5b2e9f1c-7d3a-4e8b-a6c4-0f1e2d3c4b5a",
"status": "partially_paid",
"total": {
"amount": "447.60",
"currency": "EUR"
},
"paid": {
"amount": "100.00",
"currency": "EUR"
},
"outstanding": {
"amount": "347.60",
"currency": "EUR"
},
"payments": [
{
"id": "6e5d4c3b-2a19-4f8e-9d7c-6b5a4f3e2d1c",
"status": "captured",
"method": "credit_card",
"amount": {
"amount": "100.00",
"currency": "EUR"
},
"createdAt": "2026-11-04T08:20:31.000Z"
}
]
}POST/invoices/{invoiceId}/paymentsÜberweisung auf eine Rechnung buchen
/invoices/{invoiceId}/paymentsÜberweisung auf eine Rechnung buchenBucht eine eingegangene Überweisung auf eine ausgestellte Rechnung über den Finanz-Owner des Hotels (offener Betrag, Buchhaltung, Forderungen, bezahlter Betrag der Buchung → payment.updated). Nur Überweisungen; Bar- und Kartenzahlungen brauchen den Registrierkassenbeleg des Hotels und werden nicht angenommen. Der Betrag darf den offenen Betrag nicht übersteigen. Verlangt Idempotency-Key.
Scopes: payments:writeoperationId createInvoicePayment
Parameter, path
| Name | Ort | Typ | Beschreibung |
|---|---|---|---|
invoiceIdPflicht | path | string (uuid) | - |
Header
| Name | Ort | Typ | Beschreibung |
|---|---|---|---|
Idempotency-KeyPflicht | header | string | Eindeutiger Schlüssel je logischem Schreibvorgang (1-160 Zeichen A-Z a-z 0-9 . _ : -), 24 h gespeichert. Eine Wiederholung mit demselben Key und Body liefert die erste Antwort erneut. |
Request-Body
Eingegangene Überweisung.
amountMoneyPflichtBetrag in Rechnungswährung, höchstens der offene Betrag.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
paidAtstring | null (date)Valutadatum (Standard heute).
referencestring | nullBankreferenz (max. 140).
Antworten
201Gebuchte Zahlung.
application/jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
Idempotent-Replayed- true, wenn die Antwort das gespeicherte Ergebnis einer früheren Anfrage mit demselben Idempotency-Key ist.
invoiceIdstring (uuid)PflichtRechnung.
methodstringPflichtImmer bank_transfer.
amountMoneyPflichtGebuchter Betrag.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
invoiceStatusstringPflichtRechnungsstatus danach (issued, partially_paid, paid, …).
outstandingMoneyPflichtOffener Betrag danach.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
{ "invoiceId": "1b2c3d4e-5f6a-4b7c-8d9e-0f1a2b3c4d5e", "method": "bank_transfer", "amount": { "amount": "447.60", "currency": "EUR" }, "invoiceStatus": "paid", "outstanding": { "amount": "0.00", "currency": "EUR" } }400Fehlerhafte Anfrage: ungültiges JSON, ungültiger Cursor oder fehlender Idempotency-Key.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#invalid_cursor", "title": "Invalid cursor", "status": 400, "detail": "The cursor is invalid or expired. Restart the listing without cursor.", "instance": "/api/partner/v1/bookings", "code": "invalid_cursor", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }401Fehlender, unbekannter, widerrufener oder abgelaufener API-Schlüssel.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#unauthorized", "title": "Unauthorized", "status": 401, "detail": "Send a valid API key in the Authorization header: Bearer stryk_live_….", "instance": "/api/partner/v1/bookings", "code": "unauthorized", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }403Dem Schlüssel fehlt der Scope, die IP ist nicht freigegeben oder das Kanalmodul ist deaktiviert.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#insufficient_scope", "title": "Insufficient scope", "status": 403, "detail": "This API key lacks the scope bookings:write.", "instance": "/api/partner/v1/bookings", "code": "insufficient_scope", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }404Die Ressource existiert für dieses Hotel nicht.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#not_found", "title": "Not found", "status": 404, "detail": "Booking was not found.", "instance": "/api/partner/v1/bookings/5b2e9f1c-7d3a-4e8b-a6c4-0f1e2d3c4b5a", "code": "not_found", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }409Konflikt mit dem aktuellen Zustand.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#conflict", "title": "Conflict", "status": 409, "detail": "expectedTotal does not match the current price of the stay.", "instance": "/api/partner/v1/bookings", "code": "conflict", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b", "currentTotal": { "amount": "459.60", "currency": "EUR" } }413Body größer als 64 KiB.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#payload_too_large", "title": "Payload too large", "status": 413, "detail": "The request body may have at most 64 KiB.", "instance": "/api/partner/v1/bookings", "code": "payload_too_large", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }415Body ist nicht application/json.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#unsupported_media_type", "title": "Unsupported media type", "status": 415, "detail": "Send the body as application/json.", "instance": "/api/partner/v1/bookings", "code": "unsupported_media_type", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }422Die Anfrage enthält ungültige Felder.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#validation_failed", "title": "Validation failed", "status": 422, "detail": "The request contains invalid fields.", "instance": "/api/partner/v1/bookings", "code": "validation_failed", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b", "errors": [ { "field": "checkOut", "message": "checkOut must be after checkIn." } ] }429Zu viele Anfragen für diesen Schlüssel.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
Retry-After- Sekunden bis zum nächsten Versuch.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#rate_limited", "title": "Too many requests", "status": 429, "detail": "Rate limit of 120 requests per 60 seconds exceeded.", "instance": "/api/partner/v1/bookings", "code": "rate_limited", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }500Unerwarteter Serverfehler.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#internal_error", "title": "Internal error", "status": 500, "detail": "An unexpected error occurred. Retry later or contact the hotel.", "instance": "/api/partner/v1/bookings", "code": "internal_error", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }
curl -X POST 'https://app.staystryk.com/api/partner/v1/invoices/3f1c2b9a-6d4e-4b8a-9c7e-1a2b3c4d5e6f/payments' \
-H "Authorization: Bearer $STRYK_API_KEY" \
-H 'Idempotency-Key: web-order-1234-create' \
-H 'Content-Type: application/json' \
--data '{
"amount": {
"amount": "447.60",
"currency": "EUR"
},
"paidAt": "2026-11-04",
"reference": "SEPA E2E 20261104-0042"
}'const response = await fetch('https://app.staystryk.com/api/partner/v1/invoices/3f1c2b9a-6d4e-4b8a-9c7e-1a2b3c4d5e6f/payments', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.STRYK_API_KEY}`,
'Idempotency-Key': 'web-order-1234-create',
'Content-Type': 'application/json',
},
body: JSON.stringify({
amount: {
amount: '447.60',
currency: 'EUR',
},
paidAt: '2026-11-04',
reference: 'SEPA E2E 20261104-0042',
}),
});
if (!response.ok) {
const problem = await response.json();
throw new Error(`${problem.code}: ${problem.detail} (request ${problem.requestId})`);
}
const data = await response.json();import os
import requests
response = requests.post(
"https://app.staystryk.com/api/partner/v1/invoices/3f1c2b9a-6d4e-4b8a-9c7e-1a2b3c4d5e6f/payments",
headers={
"Authorization": f"Bearer {os.environ['STRYK_API_KEY']}",
"Idempotency-Key": "web-order-1234-create",
},
json={
"amount": {
"amount": "447.60",
"currency": "EUR",
},
"paidAt": "2026-11-04",
"reference": "SEPA E2E 20261104-0042",
},
timeout=30,
)
response.raise_for_status()
data = response.json(){
"invoiceId": "1b2c3d4e-5f6a-4b7c-8d9e-0f1a2b3c4d5e",
"method": "bank_transfer",
"amount": {
"amount": "447.60",
"currency": "EUR"
},
"invoiceStatus": "paid",
"outstanding": {
"amount": "0.00",
"currency": "EUR"
}
}Invoices
Ausgestellte Rechnungen (nur lesend; Rechnungen sind Fiskalbelege des Hotels).
GET/invoicesRechnungen auflisten
/invoicesRechnungen auflistenAusgestellte Rechnungen, Korrekturen und Gutschriften (nie Entwürfe), sortiert nach updatedAt, id.
Scopes: invoices:readoperationId listInvoices
Parameter, query
| Name | Ort | Typ | Beschreibung |
|---|---|---|---|
limit | query | integer | Seitengröße 1-200 (Standard 50). |
cursor | query | string | nextCursor der vorherigen Seite. Alle anderen Parameter unverändert lassen. |
updated_since | query | string (date-time) | RFC-3339-Zeitstempel; liefert Einträge mit updatedAt >= Wert. Über id + updatedAt deduplizieren. |
bookingId | query | string (uuid) | Nur Belege dieser Buchung. |
Antworten
200Rechnungen.
application/jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
dataarray<Invoice>PflichtEinträge dieser Seite, aufsteigend nach updatedAt, dann id sortiert.
Felder anzeigen (12)
idstring (uuid)Pflichtnumberstring | nullPflichtRechnungsnummer.
typestringPflichtWerte:
"invoice","correction","credit_note"bookingIdstring | null (uuid)PflichtstatusstringPflichtWerte:
"issued","partially_paid","paid","overdue","cancelled","credited"issuedAtstring | null (date-time)PflichttotalobjectPflichtBruttobetrag.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
netMoneyPflichtGeldbetrag: Dezimal-String mit genau zwei Nachkommastellen und einer ISO-4217-Währung. Verwenden Sie dafür nie binäre Gleitkommazahlen.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
taxMoneyPflichtGeldbetrag: Dezimal-String mit genau zwei Nachkommastellen und einer ISO-4217-Währung. Verwenden Sie dafür nie binäre Gleitkommazahlen.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
outstandingMoneyPflichtGeldbetrag: Dezimal-String mit genau zwei Nachkommastellen und einer ISO-4217-Währung. Verwenden Sie dafür nie binäre Gleitkommazahlen.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
updatedAtstring (date-time)PflichtversionstringPflichtETag-Wert ohne Anführungszeichen.
nextCursorstring | nullPflichtUndurchsichtiger Cursor für die nächste Seite; null auf der letzten Seite.
hasMorebooleanPflichtTrue, wenn eine weitere Seite existiert.
{ "data": [ { "id": "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d", "number": "RE-2026-00412", "type": "invoice", "bookingId": "5b2e9f1c-7d3a-4e8b-a6c4-0f1e2d3c4b5a", "status": "partially_paid", "issuedAt": "2026-12-04T10:05:00.000Z", "total": { "amount": "447.60", "currency": "EUR" }, "net": { "amount": "398.16", "currency": "EUR" }, "tax": { "amount": "49.44", "currency": "EUR" }, "outstanding": { "amount": "347.60", "currency": "EUR" }, "updatedAt": "2026-12-04T10:05:00.000Z", "version": "5d6e7f8a9b0c1d2e3f4a5b6c" } ], "nextCursor": "djF8MjAyNi0xMS0wNFQwODoxNTowMFp8NWIyZTlmMWM", "hasMore": true }400Fehlerhafte Anfrage: ungültiges JSON, ungültiger Cursor oder fehlender Idempotency-Key.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#invalid_cursor", "title": "Invalid cursor", "status": 400, "detail": "The cursor is invalid or expired. Restart the listing without cursor.", "instance": "/api/partner/v1/bookings", "code": "invalid_cursor", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }401Fehlender, unbekannter, widerrufener oder abgelaufener API-Schlüssel.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#unauthorized", "title": "Unauthorized", "status": 401, "detail": "Send a valid API key in the Authorization header: Bearer stryk_live_….", "instance": "/api/partner/v1/bookings", "code": "unauthorized", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }403Dem Schlüssel fehlt der Scope, die IP ist nicht freigegeben oder das Kanalmodul ist deaktiviert.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#insufficient_scope", "title": "Insufficient scope", "status": 403, "detail": "This API key lacks the scope bookings:write.", "instance": "/api/partner/v1/bookings", "code": "insufficient_scope", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }422Die Anfrage enthält ungültige Felder.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#validation_failed", "title": "Validation failed", "status": 422, "detail": "The request contains invalid fields.", "instance": "/api/partner/v1/bookings", "code": "validation_failed", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b", "errors": [ { "field": "checkOut", "message": "checkOut must be after checkIn." } ] }429Zu viele Anfragen für diesen Schlüssel.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
Retry-After- Sekunden bis zum nächsten Versuch.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#rate_limited", "title": "Too many requests", "status": 429, "detail": "Rate limit of 120 requests per 60 seconds exceeded.", "instance": "/api/partner/v1/bookings", "code": "rate_limited", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }500Unerwarteter Serverfehler.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#internal_error", "title": "Internal error", "status": 500, "detail": "An unexpected error occurred. Retry later or contact the hotel.", "instance": "/api/partner/v1/bookings", "code": "internal_error", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }
curl 'https://app.staystryk.com/api/partner/v1/invoices?updated_since=2026-11-01T00%3A00%3A00Z' \
-H "Authorization: Bearer $STRYK_API_KEY"const response = await fetch('https://app.staystryk.com/api/partner/v1/invoices?updated_since=2026-11-01T00%3A00%3A00Z', {
method: 'GET',
headers: {
Authorization: `Bearer ${process.env.STRYK_API_KEY}`,
},
});
if (!response.ok) {
const problem = await response.json();
throw new Error(`${problem.code}: ${problem.detail} (request ${problem.requestId})`);
}
const data = await response.json();import os
import requests
response = requests.get(
"https://app.staystryk.com/api/partner/v1/invoices",
headers={
"Authorization": f"Bearer {os.environ['STRYK_API_KEY']}",
},
params={"updated_since": "2026-11-01T00:00:00Z"},
timeout=30,
)
response.raise_for_status()
data = response.json(){
"data": [
{
"id": "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
"number": "RE-2026-00412",
"type": "invoice",
"bookingId": "5b2e9f1c-7d3a-4e8b-a6c4-0f1e2d3c4b5a",
"status": "partially_paid",
"issuedAt": "2026-12-04T10:05:00.000Z",
"total": {
"amount": "447.60",
"currency": "EUR"
},
"net": {
"amount": "398.16",
"currency": "EUR"
},
"tax": {
"amount": "49.44",
"currency": "EUR"
},
"outstanding": {
"amount": "347.60",
"currency": "EUR"
},
"updatedAt": "2026-12-04T10:05:00.000Z",
"version": "5d6e7f8a9b0c1d2e3f4a5b6c"
}
],
"nextCursor": "djF8MjAyNi0xMS0wNFQwODoxNTowMFp8NWIyZTlmMWM",
"hasMore": true
}GET/invoices/{invoiceId}Rechnung abrufen
/invoices/{invoiceId}Rechnung abrufenKopf und Summen eines ausgestellten Belegs. Kein PDF in v1.
Scopes: invoices:readoperationId getInvoice
Parameter, path
| Name | Ort | Typ | Beschreibung |
|---|---|---|---|
invoiceIdPflicht | path | string (uuid) | - |
Header
| Name | Ort | Typ | Beschreibung |
|---|---|---|---|
If-None-Match | header | string | ETag, das Sie kennen; 304, wenn unverändert. |
Antworten
200Rechnung.
application/jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
ETag- Starkes Entity-Tag der gelieferten Version.
idstring (uuid)Pflichtnumberstring | nullPflichtRechnungsnummer.
typestringPflichtWerte:
"invoice","correction","credit_note"bookingIdstring | null (uuid)PflichtstatusstringPflichtWerte:
"issued","partially_paid","paid","overdue","cancelled","credited"issuedAtstring | null (date-time)PflichttotalobjectPflichtBruttobetrag.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
netMoneyPflichtGeldbetrag: Dezimal-String mit genau zwei Nachkommastellen und einer ISO-4217-Währung. Verwenden Sie dafür nie binäre Gleitkommazahlen.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
taxMoneyPflichtGeldbetrag: Dezimal-String mit genau zwei Nachkommastellen und einer ISO-4217-Währung. Verwenden Sie dafür nie binäre Gleitkommazahlen.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
outstandingMoneyPflichtGeldbetrag: Dezimal-String mit genau zwei Nachkommastellen und einer ISO-4217-Währung. Verwenden Sie dafür nie binäre Gleitkommazahlen.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
updatedAtstring (date-time)PflichtversionstringPflichtETag-Wert ohne Anführungszeichen.
{ "id": "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d", "number": "RE-2026-00412", "type": "invoice", "bookingId": "5b2e9f1c-7d3a-4e8b-a6c4-0f1e2d3c4b5a", "status": "partially_paid", "issuedAt": "2026-12-04T10:05:00.000Z", "total": { "amount": "447.60", "currency": "EUR" }, "net": { "amount": "398.16", "currency": "EUR" }, "tax": { "amount": "49.44", "currency": "EUR" }, "outstanding": { "amount": "347.60", "currency": "EUR" }, "updatedAt": "2026-12-04T10:05:00.000Z", "version": "5d6e7f8a9b0c1d2e3f4a5b6c" }304Nicht geändert (If-None-Match hat gepasst).
RateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
ETag- Starkes Entity-Tag der gelieferten Version.
401Fehlender, unbekannter, widerrufener oder abgelaufener API-Schlüssel.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#unauthorized", "title": "Unauthorized", "status": 401, "detail": "Send a valid API key in the Authorization header: Bearer stryk_live_….", "instance": "/api/partner/v1/bookings", "code": "unauthorized", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }403Dem Schlüssel fehlt der Scope, die IP ist nicht freigegeben oder das Kanalmodul ist deaktiviert.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#insufficient_scope", "title": "Insufficient scope", "status": 403, "detail": "This API key lacks the scope bookings:write.", "instance": "/api/partner/v1/bookings", "code": "insufficient_scope", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }404Die Ressource existiert für dieses Hotel nicht.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#not_found", "title": "Not found", "status": 404, "detail": "Booking was not found.", "instance": "/api/partner/v1/bookings/5b2e9f1c-7d3a-4e8b-a6c4-0f1e2d3c4b5a", "code": "not_found", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }429Zu viele Anfragen für diesen Schlüssel.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
Retry-After- Sekunden bis zum nächsten Versuch.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#rate_limited", "title": "Too many requests", "status": 429, "detail": "Rate limit of 120 requests per 60 seconds exceeded.", "instance": "/api/partner/v1/bookings", "code": "rate_limited", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }500Unerwarteter Serverfehler.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#internal_error", "title": "Internal error", "status": 500, "detail": "An unexpected error occurred. Retry later or contact the hotel.", "instance": "/api/partner/v1/bookings", "code": "internal_error", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }
curl 'https://app.staystryk.com/api/partner/v1/invoices/3f1c2b9a-6d4e-4b8a-9c7e-1a2b3c4d5e6f' \
-H "Authorization: Bearer $STRYK_API_KEY"const response = await fetch('https://app.staystryk.com/api/partner/v1/invoices/3f1c2b9a-6d4e-4b8a-9c7e-1a2b3c4d5e6f', {
method: 'GET',
headers: {
Authorization: `Bearer ${process.env.STRYK_API_KEY}`,
},
});
if (!response.ok) {
const problem = await response.json();
throw new Error(`${problem.code}: ${problem.detail} (request ${problem.requestId})`);
}
const data = await response.json();import os
import requests
response = requests.get(
"https://app.staystryk.com/api/partner/v1/invoices/3f1c2b9a-6d4e-4b8a-9c7e-1a2b3c4d5e6f",
headers={
"Authorization": f"Bearer {os.environ['STRYK_API_KEY']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json(){
"id": "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
"number": "RE-2026-00412",
"type": "invoice",
"bookingId": "5b2e9f1c-7d3a-4e8b-a6c4-0f1e2d3c4b5a",
"status": "partially_paid",
"issuedAt": "2026-12-04T10:05:00.000Z",
"total": {
"amount": "447.60",
"currency": "EUR"
},
"net": {
"amount": "398.16",
"currency": "EUR"
},
"tax": {
"amount": "49.44",
"currency": "EUR"
},
"outstanding": {
"amount": "347.60",
"currency": "EUR"
},
"updatedAt": "2026-12-04T10:05:00.000Z",
"version": "5d6e7f8a9b0c1d2e3f4a5b6c"
}Webhooks
Signierte, schlanke Ereignisse, die STRYK an Ihren Endpunkt sendet.
GET/webhook-event-typesWebhook-Ereignistypen auflisten
/webhook-event-typesWebhook-Ereignistypen auflistenAlle Ereignistypen, die ein Webhook-Endpunkt abonnieren kann. Endpunkte verwaltet das Hotel in STRYK (Kanäle → API).
Scopes: Jeder gültige SchlüsseloperationId listWebhookEventTypes
Antworten
200Ereignistypen.
application/jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
dataarray<WebhookEventTypeInfo>PflichtEinträge dieser Seite, aufsteigend nach updatedAt, dann id sortiert.
Felder anzeigen (2)
typestringPflichtWebhook-Ereignistyp.
Werte:
"booking.created","booking.updated","booking.cancelled","guest.updated","availability.changed","rate.changed","payment.updated","unit.updated","webhook.test"descriptionstringPflichtWas das Ereignis auslöst.
nextCursorstring | nullPflichtUndurchsichtiger Cursor für die nächste Seite; null auf der letzten Seite.
hasMorebooleanPflichtTrue, wenn eine weitere Seite existiert.
{ "data": [ { "type": "booking.created", "description": "A booking was created (by the hotel, a channel, the booking engine or the API)." }, { "type": "booking.updated", "description": "Booking data changed: dates, room type, guests, status, notes or price." }, { "type": "booking.cancelled", "description": "A booking was cancelled." } ], "nextCursor": null, "hasMore": false }401Fehlender, unbekannter, widerrufener oder abgelaufener API-Schlüssel.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#unauthorized", "title": "Unauthorized", "status": 401, "detail": "Send a valid API key in the Authorization header: Bearer stryk_live_….", "instance": "/api/partner/v1/bookings", "code": "unauthorized", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }403Dem Schlüssel fehlt der Scope, die IP ist nicht freigegeben oder das Kanalmodul ist deaktiviert.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#insufficient_scope", "title": "Insufficient scope", "status": 403, "detail": "This API key lacks the scope bookings:write.", "instance": "/api/partner/v1/bookings", "code": "insufficient_scope", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }429Zu viele Anfragen für diesen Schlüssel.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
Retry-After- Sekunden bis zum nächsten Versuch.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#rate_limited", "title": "Too many requests", "status": 429, "detail": "Rate limit of 120 requests per 60 seconds exceeded.", "instance": "/api/partner/v1/bookings", "code": "rate_limited", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }500Unerwarteter Serverfehler.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#internal_error", "title": "Internal error", "status": 500, "detail": "An unexpected error occurred. Retry later or contact the hotel.", "instance": "/api/partner/v1/bookings", "code": "internal_error", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }
curl 'https://app.staystryk.com/api/partner/v1/webhook-event-types' \
-H "Authorization: Bearer $STRYK_API_KEY"const response = await fetch('https://app.staystryk.com/api/partner/v1/webhook-event-types', {
method: 'GET',
headers: {
Authorization: `Bearer ${process.env.STRYK_API_KEY}`,
},
});
if (!response.ok) {
const problem = await response.json();
throw new Error(`${problem.code}: ${problem.detail} (request ${problem.requestId})`);
}
const data = await response.json();import os
import requests
response = requests.get(
"https://app.staystryk.com/api/partner/v1/webhook-event-types",
headers={
"Authorization": f"Bearer {os.environ['STRYK_API_KEY']}",
},
timeout=30,
)
response.raise_for_status()
data = response.json(){
"data": [
{
"type": "booking.created",
"description": "A booking was created (by the hotel, a channel, the booking engine or the API)."
},
{
"type": "booking.updated",
"description": "Booking data changed: dates, room type, guests, status, notes or price."
},
{
"type": "booking.cancelled",
"description": "A booking was cancelled."
}
],
"nextCursor": null,
"hasMore": false
}Availability
POST/availability/restrictionsVerfügbarkeitsbeschränkung anlegen
/availability/restrictionsVerfügbarkeitsbeschränkung anlegenSchließt eine Zimmerkategorie, begrenzt ihre verkaufbaren Einheiten oder sperrt An- bzw. Abreise für einen Zeitraum einschließlich (höchstens 500 Tage). Läuft über den Verfügbarkeits-Owner des Hotels; die Änderung erreicht Booking Engine, Kanäle und availability.changed sofort. Der Schlüssel kann nur selbst angelegte Beschränkungen löschen.
Scopes: availability:writeoperationId createRestriction
Header
| Name | Ort | Typ | Beschreibung |
|---|---|---|---|
Idempotency-KeyPflicht | header | string | Eindeutiger Schlüssel je logischem Schreibvorgang (1-160 Zeichen A-Z a-z 0-9 . _ : -), 24 h gespeichert. Eine Wiederholung mit demselben Key und Body liefert die erste Antwort erneut. |
Request-Body
Anzulegende Beschränkung.
roomTypeIdstring (uuid)PflichtAktive Zimmerkategorie.
typestringPflichtclosure(nicht verkaufbar),capacity_cap(höchstenscapacityEinheiten),closed_to_arrival,closed_to_departure.Werte:
"closure","capacity_cap","closed_to_arrival","closed_to_departure"fromstring (date)PflichtErster Tag (einschließlich).
tostring (date)PflichtLetzter Tag (einschließlich), höchstens 500 Tage nach from.
capacityinteger | nullNur bei capacity_cap; 0 bis aktive Einheiten − 1.
namestring | nullBezeichnung für das Hotel (max. 120).
Antworten
201Angelegte Beschränkung.
application/jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
Idempotent-Replayed- true, wenn die Antwort das gespeicherte Ergebnis einer früheren Anfrage mit demselben Idempotency-Key ist.
idstring (uuid)PflichtID der Beschränkung.
roomTypeIdstring (uuid)PflichtZimmerkategorie.
typestringPflichtArt der Beschränkung.
fromstring (date)PflichtErster Tag.
tostring (date)PflichtLetzter Tag.
capacityinteger | nullObergrenze bei capacity_cap.
namestring | nullBezeichnung.
createdAtstring (date-time)PflichtAnlagezeitpunkt.
{ "id": "6a7b8c9d-0e1f-4a2b-8c3d-4e5f6a7b8c9d", "roomTypeId": "3f6c2b1e-8d4a-4c1b-9e2f-5a7b8c9d0e1f", "type": "capacity_cap", "from": "2026-12-24", "to": "2026-12-26", "capacity": 2, "name": "RMS cap Christmas", "createdAt": "2026-11-05T09:00:00.000Z" }400Fehlerhafte Anfrage: ungültiges JSON, ungültiger Cursor oder fehlender Idempotency-Key.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#invalid_cursor", "title": "Invalid cursor", "status": 400, "detail": "The cursor is invalid or expired. Restart the listing without cursor.", "instance": "/api/partner/v1/bookings", "code": "invalid_cursor", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }401Fehlender, unbekannter, widerrufener oder abgelaufener API-Schlüssel.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#unauthorized", "title": "Unauthorized", "status": 401, "detail": "Send a valid API key in the Authorization header: Bearer stryk_live_….", "instance": "/api/partner/v1/bookings", "code": "unauthorized", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }403Dem Schlüssel fehlt der Scope, die IP ist nicht freigegeben oder das Kanalmodul ist deaktiviert.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#insufficient_scope", "title": "Insufficient scope", "status": 403, "detail": "This API key lacks the scope bookings:write.", "instance": "/api/partner/v1/bookings", "code": "insufficient_scope", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }404Die Ressource existiert für dieses Hotel nicht.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#not_found", "title": "Not found", "status": 404, "detail": "Booking was not found.", "instance": "/api/partner/v1/bookings/5b2e9f1c-7d3a-4e8b-a6c4-0f1e2d3c4b5a", "code": "not_found", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }409Konflikt mit dem aktuellen Zustand.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#conflict", "title": "Conflict", "status": 409, "detail": "expectedTotal does not match the current price of the stay.", "instance": "/api/partner/v1/bookings", "code": "conflict", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b", "currentTotal": { "amount": "459.60", "currency": "EUR" } }413Body größer als 64 KiB.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#payload_too_large", "title": "Payload too large", "status": 413, "detail": "The request body may have at most 64 KiB.", "instance": "/api/partner/v1/bookings", "code": "payload_too_large", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }415Body ist nicht application/json.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#unsupported_media_type", "title": "Unsupported media type", "status": 415, "detail": "Send the body as application/json.", "instance": "/api/partner/v1/bookings", "code": "unsupported_media_type", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }422Die Anfrage enthält ungültige Felder.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#validation_failed", "title": "Validation failed", "status": 422, "detail": "The request contains invalid fields.", "instance": "/api/partner/v1/bookings", "code": "validation_failed", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b", "errors": [ { "field": "checkOut", "message": "checkOut must be after checkIn." } ] }429Zu viele Anfragen für diesen Schlüssel.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
Retry-After- Sekunden bis zum nächsten Versuch.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#rate_limited", "title": "Too many requests", "status": 429, "detail": "Rate limit of 120 requests per 60 seconds exceeded.", "instance": "/api/partner/v1/bookings", "code": "rate_limited", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }500Unerwarteter Serverfehler.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#internal_error", "title": "Internal error", "status": 500, "detail": "An unexpected error occurred. Retry later or contact the hotel.", "instance": "/api/partner/v1/bookings", "code": "internal_error", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }
curl -X POST 'https://app.staystryk.com/api/partner/v1/availability/restrictions' \
-H "Authorization: Bearer $STRYK_API_KEY" \
-H 'Idempotency-Key: web-order-1234-create' \
-H 'Content-Type: application/json' \
--data '{
"roomTypeId": "3f6c2b1e-8d4a-4c1b-9e2f-5a7b8c9d0e1f",
"type": "capacity_cap",
"from": "2026-12-24",
"to": "2026-12-26",
"capacity": 2,
"name": "RMS cap Christmas"
}'const response = await fetch('https://app.staystryk.com/api/partner/v1/availability/restrictions', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.STRYK_API_KEY}`,
'Idempotency-Key': 'web-order-1234-create',
'Content-Type': 'application/json',
},
body: JSON.stringify({
roomTypeId: '3f6c2b1e-8d4a-4c1b-9e2f-5a7b8c9d0e1f',
type: 'capacity_cap',
from: '2026-12-24',
to: '2026-12-26',
capacity: 2,
name: 'RMS cap Christmas',
}),
});
if (!response.ok) {
const problem = await response.json();
throw new Error(`${problem.code}: ${problem.detail} (request ${problem.requestId})`);
}
const data = await response.json();import os
import requests
response = requests.post(
"https://app.staystryk.com/api/partner/v1/availability/restrictions",
headers={
"Authorization": f"Bearer {os.environ['STRYK_API_KEY']}",
"Idempotency-Key": "web-order-1234-create",
},
json={
"roomTypeId": "3f6c2b1e-8d4a-4c1b-9e2f-5a7b8c9d0e1f",
"type": "capacity_cap",
"from": "2026-12-24",
"to": "2026-12-26",
"capacity": 2,
"name": "RMS cap Christmas",
},
timeout=30,
)
response.raise_for_status()
data = response.json(){
"id": "6a7b8c9d-0e1f-4a2b-8c3d-4e5f6a7b8c9d",
"roomTypeId": "3f6c2b1e-8d4a-4c1b-9e2f-5a7b8c9d0e1f",
"type": "capacity_cap",
"from": "2026-12-24",
"to": "2026-12-26",
"capacity": 2,
"name": "RMS cap Christmas",
"createdAt": "2026-11-05T09:00:00.000Z"
}DELETE/availability/restrictions/{restrictionId}Von diesem Schlüssel angelegte Beschränkung löschen
/availability/restrictions/{restrictionId}Von diesem Schlüssel angelegte Beschränkung löschenEntfernt eine Beschränkung, die dieser API-Schlüssel angelegt hat, und liefert sie im letzten Stand. Beschränkungen des Hotels oder von Intelligent Pricing ergeben 404.
Scopes: availability:writeoperationId deleteRestriction
Parameter, path
| Name | Ort | Typ | Beschreibung |
|---|---|---|---|
restrictionIdPflicht | path | string (uuid) | - |
Antworten
200Gelöschte Beschränkung.
application/jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
idstring (uuid)PflichtID der Beschränkung.
roomTypeIdstring (uuid)PflichtZimmerkategorie.
typestringPflichtArt der Beschränkung.
fromstring (date)PflichtErster Tag.
tostring (date)PflichtLetzter Tag.
capacityinteger | nullObergrenze bei capacity_cap.
namestring | nullBezeichnung.
createdAtstring (date-time)PflichtAnlagezeitpunkt.
{ "id": "6a7b8c9d-0e1f-4a2b-8c3d-4e5f6a7b8c9d", "roomTypeId": "3f6c2b1e-8d4a-4c1b-9e2f-5a7b8c9d0e1f", "type": "capacity_cap", "from": "2026-12-24", "to": "2026-12-26", "capacity": 2, "name": "RMS cap Christmas", "createdAt": "2026-11-05T09:00:00.000Z" }401Fehlender, unbekannter, widerrufener oder abgelaufener API-Schlüssel.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#unauthorized", "title": "Unauthorized", "status": 401, "detail": "Send a valid API key in the Authorization header: Bearer stryk_live_….", "instance": "/api/partner/v1/bookings", "code": "unauthorized", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }403Dem Schlüssel fehlt der Scope, die IP ist nicht freigegeben oder das Kanalmodul ist deaktiviert.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#insufficient_scope", "title": "Insufficient scope", "status": 403, "detail": "This API key lacks the scope bookings:write.", "instance": "/api/partner/v1/bookings", "code": "insufficient_scope", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }404Die Ressource existiert für dieses Hotel nicht.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#not_found", "title": "Not found", "status": 404, "detail": "Booking was not found.", "instance": "/api/partner/v1/bookings/5b2e9f1c-7d3a-4e8b-a6c4-0f1e2d3c4b5a", "code": "not_found", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }409Konflikt mit dem aktuellen Zustand.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#conflict", "title": "Conflict", "status": 409, "detail": "expectedTotal does not match the current price of the stay.", "instance": "/api/partner/v1/bookings", "code": "conflict", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b", "currentTotal": { "amount": "459.60", "currency": "EUR" } }429Zu viele Anfragen für diesen Schlüssel.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
Retry-After- Sekunden bis zum nächsten Versuch.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#rate_limited", "title": "Too many requests", "status": 429, "detail": "Rate limit of 120 requests per 60 seconds exceeded.", "instance": "/api/partner/v1/bookings", "code": "rate_limited", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }500Unerwarteter Serverfehler.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#internal_error", "title": "Internal error", "status": 500, "detail": "An unexpected error occurred. Retry later or contact the hotel.", "instance": "/api/partner/v1/bookings", "code": "internal_error", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }
curl -X DELETE 'https://app.staystryk.com/api/partner/v1/availability/restrictions/3f1c2b9a-6d4e-4b8a-9c7e-1a2b3c4d5e6f' \
-H "Authorization: Bearer $STRYK_API_KEY"const response = await fetch('https://app.staystryk.com/api/partner/v1/availability/restrictions/3f1c2b9a-6d4e-4b8a-9c7e-1a2b3c4d5e6f', {
method: 'DELETE',
headers: {
Authorization: `Bearer ${process.env.STRYK_API_KEY}`,
},
});
if (!response.ok) {
const problem = await response.json();
throw new Error(`${problem.code}: ${problem.detail} (request ${problem.requestId})`);
}import os
import requests
response = requests.delete(
"https://app.staystryk.com/api/partner/v1/availability/restrictions/3f1c2b9a-6d4e-4b8a-9c7e-1a2b3c4d5e6f",
headers={
"Authorization": f"Bearer {os.environ['STRYK_API_KEY']}",
},
timeout=30,
)
response.raise_for_status(){
"id": "6a7b8c9d-0e1f-4a2b-8c3d-4e5f6a7b8c9d",
"roomTypeId": "3f6c2b1e-8d4a-4c1b-9e2f-5a7b8c9d0e1f",
"type": "capacity_cap",
"from": "2026-12-24",
"to": "2026-12-26",
"capacity": 2,
"name": "RMS cap Christmas",
"createdAt": "2026-11-05T09:00:00.000Z"
}PUT/ratesTagespreise einer Zimmerkategorie setzen
/ratesTagespreise einer Zimmerkategorie setzenSetzt oder entfernt (price null) den Tagespreis einer Zimmerkategorie für bis zu 366 Tage ab heute, über den Preis-Owner des Hotels (Kategoriegrenzen, Kanalverteilung, Preisprotokoll). Die Währung muss die Hotelwährung sein. Preisregeln und Tarife bleiben unverändert. Löst rate.changed aus.
Scopes: rates:writeoperationId updateRates
Header
| Name | Ort | Typ | Beschreibung |
|---|---|---|---|
Idempotency-Key | header | string | Optionaler Idempotenz-Schlüssel, gleiche Regeln wie bei POST. |
Request-Body
Tagespreise.
roomTypeIdstring (uuid)PflichtAktive Zimmerkategorie.
pricesarray<RatePriceInput>Pflicht1-366 Tage, jedes Datum einmal, innerhalb von 366 Tagen.
Felder anzeigen (2)
datestring (date)PflichtTag (heute oder später).
priceMoney | nullPreis pro Nacht in der Hotelwährung oder null.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
Antworten
200Ergebnis.
application/jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
Idempotent-Replayed- true, wenn die Antwort das gespeicherte Ergebnis einer früheren Anfrage mit demselben Idempotency-Key ist.
roomTypeIdstring (uuid)PflichtZimmerkategorie.
fromstring (date)PflichtErster betroffener Tag.
tostring (date)PflichtLetzter betroffener Tag.
changedintegerPflichtTage mit neuem Preis.
unchangedintegerPflichtTage, die diesen Preis schon hatten oder nichts zum Zurücksetzen.
resetintegerPflichtAuf die Preisregeln zurückgesetzte Tage.
{ "roomTypeId": "3f6c2b1e-8d4a-4c1b-9e2f-5a7b8c9d0e1f", "from": "2026-12-24", "to": "2026-12-25", "changed": 1, "unchanged": 0, "reset": 1 }400Fehlerhafte Anfrage: ungültiges JSON, ungültiger Cursor oder fehlender Idempotency-Key.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#invalid_cursor", "title": "Invalid cursor", "status": 400, "detail": "The cursor is invalid or expired. Restart the listing without cursor.", "instance": "/api/partner/v1/bookings", "code": "invalid_cursor", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }401Fehlender, unbekannter, widerrufener oder abgelaufener API-Schlüssel.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#unauthorized", "title": "Unauthorized", "status": 401, "detail": "Send a valid API key in the Authorization header: Bearer stryk_live_….", "instance": "/api/partner/v1/bookings", "code": "unauthorized", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }403Dem Schlüssel fehlt der Scope, die IP ist nicht freigegeben oder das Kanalmodul ist deaktiviert.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#insufficient_scope", "title": "Insufficient scope", "status": 403, "detail": "This API key lacks the scope bookings:write.", "instance": "/api/partner/v1/bookings", "code": "insufficient_scope", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }404Die Ressource existiert für dieses Hotel nicht.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#not_found", "title": "Not found", "status": 404, "detail": "Booking was not found.", "instance": "/api/partner/v1/bookings/5b2e9f1c-7d3a-4e8b-a6c4-0f1e2d3c4b5a", "code": "not_found", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }409Konflikt mit dem aktuellen Zustand.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#conflict", "title": "Conflict", "status": 409, "detail": "expectedTotal does not match the current price of the stay.", "instance": "/api/partner/v1/bookings", "code": "conflict", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b", "currentTotal": { "amount": "459.60", "currency": "EUR" } }413Body größer als 64 KiB.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#payload_too_large", "title": "Payload too large", "status": 413, "detail": "The request body may have at most 64 KiB.", "instance": "/api/partner/v1/bookings", "code": "payload_too_large", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }415Body ist nicht application/json.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#unsupported_media_type", "title": "Unsupported media type", "status": 415, "detail": "Send the body as application/json.", "instance": "/api/partner/v1/bookings", "code": "unsupported_media_type", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }422Die Anfrage enthält ungültige Felder.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#validation_failed", "title": "Validation failed", "status": 422, "detail": "The request contains invalid fields.", "instance": "/api/partner/v1/bookings", "code": "validation_failed", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b", "errors": [ { "field": "checkOut", "message": "checkOut must be after checkIn." } ] }429Zu viele Anfragen für diesen Schlüssel.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
Retry-After- Sekunden bis zum nächsten Versuch.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#rate_limited", "title": "Too many requests", "status": 429, "detail": "Rate limit of 120 requests per 60 seconds exceeded.", "instance": "/api/partner/v1/bookings", "code": "rate_limited", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }500Unerwarteter Serverfehler.
application/problem+jsonRateLimit-Limit- Erlaubte Anfragen je Fenster für diesen Schlüssel (Standard 120).
RateLimit-Remaining- Verbleibende Anfragen im aktuellen Fenster.
RateLimit-Reset- Sekunden bis zum Zurücksetzen des Fensters.
X-Request-Id- Request-ID (auch in Problem-Bodies); nennen Sie sie dem Support.
typestring (uri)PflichtURI der Fehlerdokumentation.
titlestringPflichtKurze Zusammenfassung der Fehlerklasse.
statusintegerPflichtHTTP-Statuscode.
detailstringErklärung dieses konkreten Falls für Menschen.
instancestringRequest-Pfad.
codestringPflichtStabiler maschinenlesbarer Fehlercode.
Werte:
"unauthorized","key_expired","ip_not_allowed","insufficient_scope","module_disabled","not_found","method_not_allowed","conflict","idempotency_in_progress","not_available","booking_not_modifiable","precondition_failed","payload_too_large","unsupported_media_type","validation_failed","idempotency_key_reused","precondition_required","rate_limited","idempotency_key_required","invalid_cursor","bad_request","internal_error","service_unavailable"requestIdstringPflichtGleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.
errorsarray<object>Feldfehler bei validation_failed.
Felder anzeigen (2)
fieldstringPflichtFeld der Anfrage (Punktnotation).
messagestringPflichtWas daran falsch ist.
currentTotalobjectconflict bei POST /bookings: der aktuelle Serverpreis.
Felder anzeigen (2)
amountstringPflichtDezimal-String, genau zwei Nachkommastellen.
currencystringPflichtISO-4217-Währungscode.
bookingIdstring (uuid)conflict bei bereits verwendeter externalReference: die Buchung, die sie verwendet.
{ "type": "https://staystryk.com/developers/errors#internal_error", "title": "Internal error", "status": 500, "detail": "An unexpected error occurred. Retry later or contact the hotel.", "instance": "/api/partner/v1/bookings", "code": "internal_error", "requestId": "6f1d2c3b-4a5e-4f60-8a7b-9c0d1e2f3a4b" }
curl -X PUT 'https://app.staystryk.com/api/partner/v1/rates' \
-H "Authorization: Bearer $STRYK_API_KEY" \
-H 'Content-Type: application/json' \
--data '{
"roomTypeId": "3f6c2b1e-8d4a-4c1b-9e2f-5a7b8c9d0e1f",
"prices": [
{
"date": "2026-12-24",
"price": {
"amount": "219.00",
"currency": "EUR"
}
},
{
"date": "2026-12-25",
"price": null
}
]
}'const response = await fetch('https://app.staystryk.com/api/partner/v1/rates', {
method: 'PUT',
headers: {
Authorization: `Bearer ${process.env.STRYK_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
roomTypeId: '3f6c2b1e-8d4a-4c1b-9e2f-5a7b8c9d0e1f',
prices: [
{
date: '2026-12-24',
price: {
amount: '219.00',
currency: 'EUR',
},
},
{
date: '2026-12-25',
price: null,
},
],
}),
});
if (!response.ok) {
const problem = await response.json();
throw new Error(`${problem.code}: ${problem.detail} (request ${problem.requestId})`);
}
const data = await response.json();import os
import requests
response = requests.put(
"https://app.staystryk.com/api/partner/v1/rates",
headers={
"Authorization": f"Bearer {os.environ['STRYK_API_KEY']}",
},
json={
"roomTypeId": "3f6c2b1e-8d4a-4c1b-9e2f-5a7b8c9d0e1f",
"prices": [
{
"date": "2026-12-24",
"price": {
"amount": "219.00",
"currency": "EUR",
},
},
{
"date": "2026-12-25",
"price": None,
},
],
},
timeout=30,
)
response.raise_for_status()
data = response.json(){
"roomTypeId": "3f6c2b1e-8d4a-4c1b-9e2f-5a7b8c9d0e1f",
"from": "2026-12-24",
"to": "2026-12-25",
"changed": 1,
"unchanged": 0,
"reset": 1
}Webhook-Ereignisse
Signaturprüfung und Wiederholungen
POSTbooking.createdbooking.created
booking.createdbooking.createdEine Buchung wurde angelegt (vom Hotel, über einen Kanal, die Booking Engine oder die API). Antworten Sie innerhalb von 10 Sekunden mit einem beliebigen 2xx; andere Antworten werden nach 1 min, 5 min, 30 min, 2 h, 6 h, 12 h und 24 h wiederholt (8 Versuche).
Zustell-Header
| Name | Ort | Typ | Beschreibung |
|---|---|---|---|
STRYK-Event-IdPflicht | header | string | Ereignis-ID (gleich der id im Body). |
STRYK-Event-TypePflicht | header | string | Ereignistyp. |
STRYK-Delivery-IdPflicht | header | string | ID dieser Zustellung (je Endpunkt verschieden). |
STRYK-Delivery-AttemptPflicht | header | string | Versuchsnummer, 1-8. |
STRYK-SignaturePflicht | header | string | t=<Unix-Sekunden>,v1=<hex HMAC-SHA256(secret, "<t>.<roher Body>")>. Während einer Secret-Rotation werden 24 h lang zwei v1-Werte gesendet. Lehnen Sie Zeitstempel ab, die älter als 300 s sind; vergleichen Sie in konstanter Zeit. |
Payload
idstringPflichtEreignis-ID (evt_<uuid>); deduplizieren Sie darüber.
typestringPflichtWebhook-Ereignistyp.
Werte:
"booking.created","booking.updated","booking.cancelled","guest.updated","availability.changed","rate.changed","payment.updated","unit.updated","webhook.test"apiVersionstringPflichtcreatedAtstring (date-time)PflichthotelIdstringPflichtdataobjectPflichtFelder anzeigen (8)
objectstringPflichtWerte:
"booking","guest","availability","rate","payment","webhook"idstringObjekt-ID (Ereignisse zu Buchung, Gast und webhook.test).
bookingIdstring (uuid)payment.updated: Buchung, deren Zahlungsstatus sich geändert hat; lesen Sie GET /bookings/{bookingId}/payments.
changesarray<string>booking.updated: geänderte Bereiche (status, rooms, guest, details, deleted). Zusammengefasste Änderungen vereinen die Bereiche.
Werte:
"status","rooms","guest","details","deleted"roomTypeIdsarray<string (uuid)>availability/rate: betroffene Zimmerkategorien.
ratePlanIdsarray<string (uuid)>rate.changed nach einer Tarifänderung: betroffene Tarife.
fromstring (date)availability/rate: erstes betroffenes Datum.
tostring (date)availability/rate: letztes betroffenes Datum.
Antworten
- 2XXZustellung angenommen.
{
"id": "evt_2c9a7b6e-1d4f-4e3a-9b8c-7d6e5f4a3b2c",
"type": "booking.created",
"apiVersion": "v1",
"createdAt": "2026-11-04T08:15:01.204Z",
"hotelId": "hotel-alpenblick",
"data": {
"object": "booking",
"id": "5b2e9f1c-7d3a-4e8b-a6c4-0f1e2d3c4b5a"
}
}POSTbooking.updatedbooking.updated
booking.updatedbooking.updatedBuchungsdaten haben sich geändert: Daten, Zimmerkategorie, Gäste, Status, Notizen oder Preis. Antworten Sie innerhalb von 10 Sekunden mit einem beliebigen 2xx; andere Antworten werden nach 1 min, 5 min, 30 min, 2 h, 6 h, 12 h und 24 h wiederholt (8 Versuche).
Zustell-Header
| Name | Ort | Typ | Beschreibung |
|---|---|---|---|
STRYK-Event-IdPflicht | header | string | Ereignis-ID (gleich der id im Body). |
STRYK-Event-TypePflicht | header | string | Ereignistyp. |
STRYK-Delivery-IdPflicht | header | string | ID dieser Zustellung (je Endpunkt verschieden). |
STRYK-Delivery-AttemptPflicht | header | string | Versuchsnummer, 1-8. |
STRYK-SignaturePflicht | header | string | t=<Unix-Sekunden>,v1=<hex HMAC-SHA256(secret, "<t>.<roher Body>")>. Während einer Secret-Rotation werden 24 h lang zwei v1-Werte gesendet. Lehnen Sie Zeitstempel ab, die älter als 300 s sind; vergleichen Sie in konstanter Zeit. |
Payload
idstringPflichtEreignis-ID (evt_<uuid>); deduplizieren Sie darüber.
typestringPflichtWebhook-Ereignistyp.
Werte:
"booking.created","booking.updated","booking.cancelled","guest.updated","availability.changed","rate.changed","payment.updated","unit.updated","webhook.test"apiVersionstringPflichtcreatedAtstring (date-time)PflichthotelIdstringPflichtdataobjectPflichtFelder anzeigen (8)
objectstringPflichtWerte:
"booking","guest","availability","rate","payment","webhook"idstringObjekt-ID (Ereignisse zu Buchung, Gast und webhook.test).
bookingIdstring (uuid)payment.updated: Buchung, deren Zahlungsstatus sich geändert hat; lesen Sie GET /bookings/{bookingId}/payments.
changesarray<string>booking.updated: geänderte Bereiche (status, rooms, guest, details, deleted). Zusammengefasste Änderungen vereinen die Bereiche.
Werte:
"status","rooms","guest","details","deleted"roomTypeIdsarray<string (uuid)>availability/rate: betroffene Zimmerkategorien.
ratePlanIdsarray<string (uuid)>rate.changed nach einer Tarifänderung: betroffene Tarife.
fromstring (date)availability/rate: erstes betroffenes Datum.
tostring (date)availability/rate: letztes betroffenes Datum.
Antworten
- 2XXZustellung angenommen.
{
"id": "evt_2c9a7b6e-1d4f-4e3a-9b8c-7d6e5f4a3b2c",
"type": "booking.updated",
"apiVersion": "v1",
"createdAt": "2026-11-04T08:15:01.204Z",
"hotelId": "hotel-alpenblick",
"data": {
"object": "booking",
"id": "5b2e9f1c-7d3a-4e8b-a6c4-0f1e2d3c4b5a",
"changes": ["status"]
}
}POSTbooking.cancelledbooking.cancelled
booking.cancelledbooking.cancelledEine Buchung wurde storniert. Antworten Sie innerhalb von 10 Sekunden mit einem beliebigen 2xx; andere Antworten werden nach 1 min, 5 min, 30 min, 2 h, 6 h, 12 h und 24 h wiederholt (8 Versuche).
Zustell-Header
| Name | Ort | Typ | Beschreibung |
|---|---|---|---|
STRYK-Event-IdPflicht | header | string | Ereignis-ID (gleich der id im Body). |
STRYK-Event-TypePflicht | header | string | Ereignistyp. |
STRYK-Delivery-IdPflicht | header | string | ID dieser Zustellung (je Endpunkt verschieden). |
STRYK-Delivery-AttemptPflicht | header | string | Versuchsnummer, 1-8. |
STRYK-SignaturePflicht | header | string | t=<Unix-Sekunden>,v1=<hex HMAC-SHA256(secret, "<t>.<roher Body>")>. Während einer Secret-Rotation werden 24 h lang zwei v1-Werte gesendet. Lehnen Sie Zeitstempel ab, die älter als 300 s sind; vergleichen Sie in konstanter Zeit. |
Payload
idstringPflichtEreignis-ID (evt_<uuid>); deduplizieren Sie darüber.
typestringPflichtWebhook-Ereignistyp.
Werte:
"booking.created","booking.updated","booking.cancelled","guest.updated","availability.changed","rate.changed","payment.updated","unit.updated","webhook.test"apiVersionstringPflichtcreatedAtstring (date-time)PflichthotelIdstringPflichtdataobjectPflichtFelder anzeigen (8)
objectstringPflichtWerte:
"booking","guest","availability","rate","payment","webhook"idstringObjekt-ID (Ereignisse zu Buchung, Gast und webhook.test).
bookingIdstring (uuid)payment.updated: Buchung, deren Zahlungsstatus sich geändert hat; lesen Sie GET /bookings/{bookingId}/payments.
changesarray<string>booking.updated: geänderte Bereiche (status, rooms, guest, details, deleted). Zusammengefasste Änderungen vereinen die Bereiche.
Werte:
"status","rooms","guest","details","deleted"roomTypeIdsarray<string (uuid)>availability/rate: betroffene Zimmerkategorien.
ratePlanIdsarray<string (uuid)>rate.changed nach einer Tarifänderung: betroffene Tarife.
fromstring (date)availability/rate: erstes betroffenes Datum.
tostring (date)availability/rate: letztes betroffenes Datum.
Antworten
- 2XXZustellung angenommen.
{
"id": "evt_2c9a7b6e-1d4f-4e3a-9b8c-7d6e5f4a3b2c",
"type": "booking.cancelled",
"apiVersion": "v1",
"createdAt": "2026-11-04T08:15:01.204Z",
"hotelId": "hotel-alpenblick",
"data": {
"object": "booking",
"id": "5b2e9f1c-7d3a-4e8b-a6c4-0f1e2d3c4b5a"
}
}POSTguest.updatedguest.updated
guest.updatedguest.updatedKontaktdaten eines Gästeprofils haben sich geändert. Antworten Sie innerhalb von 10 Sekunden mit einem beliebigen 2xx; andere Antworten werden nach 1 min, 5 min, 30 min, 2 h, 6 h, 12 h und 24 h wiederholt (8 Versuche).
Zustell-Header
| Name | Ort | Typ | Beschreibung |
|---|---|---|---|
STRYK-Event-IdPflicht | header | string | Ereignis-ID (gleich der id im Body). |
STRYK-Event-TypePflicht | header | string | Ereignistyp. |
STRYK-Delivery-IdPflicht | header | string | ID dieser Zustellung (je Endpunkt verschieden). |
STRYK-Delivery-AttemptPflicht | header | string | Versuchsnummer, 1-8. |
STRYK-SignaturePflicht | header | string | t=<Unix-Sekunden>,v1=<hex HMAC-SHA256(secret, "<t>.<roher Body>")>. Während einer Secret-Rotation werden 24 h lang zwei v1-Werte gesendet. Lehnen Sie Zeitstempel ab, die älter als 300 s sind; vergleichen Sie in konstanter Zeit. |
Payload
idstringPflichtEreignis-ID (evt_<uuid>); deduplizieren Sie darüber.
typestringPflichtWebhook-Ereignistyp.
Werte:
"booking.created","booking.updated","booking.cancelled","guest.updated","availability.changed","rate.changed","payment.updated","unit.updated","webhook.test"apiVersionstringPflichtcreatedAtstring (date-time)PflichthotelIdstringPflichtdataobjectPflichtFelder anzeigen (8)
objectstringPflichtWerte:
"booking","guest","availability","rate","payment","webhook"idstringObjekt-ID (Ereignisse zu Buchung, Gast und webhook.test).
bookingIdstring (uuid)payment.updated: Buchung, deren Zahlungsstatus sich geändert hat; lesen Sie GET /bookings/{bookingId}/payments.
changesarray<string>booking.updated: geänderte Bereiche (status, rooms, guest, details, deleted). Zusammengefasste Änderungen vereinen die Bereiche.
Werte:
"status","rooms","guest","details","deleted"roomTypeIdsarray<string (uuid)>availability/rate: betroffene Zimmerkategorien.
ratePlanIdsarray<string (uuid)>rate.changed nach einer Tarifänderung: betroffene Tarife.
fromstring (date)availability/rate: erstes betroffenes Datum.
tostring (date)availability/rate: letztes betroffenes Datum.
Antworten
- 2XXZustellung angenommen.
{
"id": "evt_2c9a7b6e-1d4f-4e3a-9b8c-7d6e5f4a3b2c",
"type": "guest.updated",
"apiVersion": "v1",
"createdAt": "2026-11-04T08:15:01.204Z",
"hotelId": "hotel-alpenblick",
"data": {
"object": "guest",
"id": "8f7e6d5c-4b3a-4291-8f0e-9d8c7b6a5f4e"
}
}POSTavailability.changedavailability.changed
availability.changedavailability.changedVerkaufbare Verfügbarkeit oder Aufenthaltsbeschränkungen haben sich für Zimmerkategorien und einen Zeitraum geändert. Antworten Sie innerhalb von 10 Sekunden mit einem beliebigen 2xx; andere Antworten werden nach 1 min, 5 min, 30 min, 2 h, 6 h, 12 h und 24 h wiederholt (8 Versuche).
Zustell-Header
| Name | Ort | Typ | Beschreibung |
|---|---|---|---|
STRYK-Event-IdPflicht | header | string | Ereignis-ID (gleich der id im Body). |
STRYK-Event-TypePflicht | header | string | Ereignistyp. |
STRYK-Delivery-IdPflicht | header | string | ID dieser Zustellung (je Endpunkt verschieden). |
STRYK-Delivery-AttemptPflicht | header | string | Versuchsnummer, 1-8. |
STRYK-SignaturePflicht | header | string | t=<Unix-Sekunden>,v1=<hex HMAC-SHA256(secret, "<t>.<roher Body>")>. Während einer Secret-Rotation werden 24 h lang zwei v1-Werte gesendet. Lehnen Sie Zeitstempel ab, die älter als 300 s sind; vergleichen Sie in konstanter Zeit. |
Payload
idstringPflichtEreignis-ID (evt_<uuid>); deduplizieren Sie darüber.
typestringPflichtWebhook-Ereignistyp.
Werte:
"booking.created","booking.updated","booking.cancelled","guest.updated","availability.changed","rate.changed","payment.updated","unit.updated","webhook.test"apiVersionstringPflichtcreatedAtstring (date-time)PflichthotelIdstringPflichtdataobjectPflichtFelder anzeigen (8)
objectstringPflichtWerte:
"booking","guest","availability","rate","payment","webhook"idstringObjekt-ID (Ereignisse zu Buchung, Gast und webhook.test).
bookingIdstring (uuid)payment.updated: Buchung, deren Zahlungsstatus sich geändert hat; lesen Sie GET /bookings/{bookingId}/payments.
changesarray<string>booking.updated: geänderte Bereiche (status, rooms, guest, details, deleted). Zusammengefasste Änderungen vereinen die Bereiche.
Werte:
"status","rooms","guest","details","deleted"roomTypeIdsarray<string (uuid)>availability/rate: betroffene Zimmerkategorien.
ratePlanIdsarray<string (uuid)>rate.changed nach einer Tarifänderung: betroffene Tarife.
fromstring (date)availability/rate: erstes betroffenes Datum.
tostring (date)availability/rate: letztes betroffenes Datum.
Antworten
- 2XXZustellung angenommen.
{
"id": "evt_2c9a7b6e-1d4f-4e3a-9b8c-7d6e5f4a3b2c",
"type": "availability.changed",
"apiVersion": "v1",
"createdAt": "2026-11-04T08:15:01.204Z",
"hotelId": "hotel-alpenblick",
"data": {
"object": "availability",
"roomTypeIds": ["3f6c2b1e-8d4a-4c1b-9e2f-5a7b8c9d0e1f"],
"from": "2026-12-01",
"to": "2026-12-07"
}
}POSTrate.changedrate.changed
rate.changedrate.changedTagespreise oder Tarife haben sich für Zimmerkategorien und einen Zeitraum geändert. Antworten Sie innerhalb von 10 Sekunden mit einem beliebigen 2xx; andere Antworten werden nach 1 min, 5 min, 30 min, 2 h, 6 h, 12 h und 24 h wiederholt (8 Versuche).
Zustell-Header
| Name | Ort | Typ | Beschreibung |
|---|---|---|---|
STRYK-Event-IdPflicht | header | string | Ereignis-ID (gleich der id im Body). |
STRYK-Event-TypePflicht | header | string | Ereignistyp. |
STRYK-Delivery-IdPflicht | header | string | ID dieser Zustellung (je Endpunkt verschieden). |
STRYK-Delivery-AttemptPflicht | header | string | Versuchsnummer, 1-8. |
STRYK-SignaturePflicht | header | string | t=<Unix-Sekunden>,v1=<hex HMAC-SHA256(secret, "<t>.<roher Body>")>. Während einer Secret-Rotation werden 24 h lang zwei v1-Werte gesendet. Lehnen Sie Zeitstempel ab, die älter als 300 s sind; vergleichen Sie in konstanter Zeit. |
Payload
idstringPflichtEreignis-ID (evt_<uuid>); deduplizieren Sie darüber.
typestringPflichtWebhook-Ereignistyp.
Werte:
"booking.created","booking.updated","booking.cancelled","guest.updated","availability.changed","rate.changed","payment.updated","unit.updated","webhook.test"apiVersionstringPflichtcreatedAtstring (date-time)PflichthotelIdstringPflichtdataobjectPflichtFelder anzeigen (8)
objectstringPflichtWerte:
"booking","guest","availability","rate","payment","webhook"idstringObjekt-ID (Ereignisse zu Buchung, Gast und webhook.test).
bookingIdstring (uuid)payment.updated: Buchung, deren Zahlungsstatus sich geändert hat; lesen Sie GET /bookings/{bookingId}/payments.
changesarray<string>booking.updated: geänderte Bereiche (status, rooms, guest, details, deleted). Zusammengefasste Änderungen vereinen die Bereiche.
Werte:
"status","rooms","guest","details","deleted"roomTypeIdsarray<string (uuid)>availability/rate: betroffene Zimmerkategorien.
ratePlanIdsarray<string (uuid)>rate.changed nach einer Tarifänderung: betroffene Tarife.
fromstring (date)availability/rate: erstes betroffenes Datum.
tostring (date)availability/rate: letztes betroffenes Datum.
Antworten
- 2XXZustellung angenommen.
{
"id": "evt_2c9a7b6e-1d4f-4e3a-9b8c-7d6e5f4a3b2c",
"type": "rate.changed",
"apiVersion": "v1",
"createdAt": "2026-11-04T08:15:01.204Z",
"hotelId": "hotel-alpenblick",
"data": {
"object": "rate",
"roomTypeIds": ["3f6c2b1e-8d4a-4c1b-9e2f-5a7b8c9d0e1f"],
"from": "2026-12-01",
"to": "2026-12-07"
}
}POSTpayment.updatedpayment.updated
payment.updatedpayment.updatedDer Zahlungsstatus einer Buchung hat sich geändert. Antworten Sie innerhalb von 10 Sekunden mit einem beliebigen 2xx; andere Antworten werden nach 1 min, 5 min, 30 min, 2 h, 6 h, 12 h und 24 h wiederholt (8 Versuche).
Zustell-Header
| Name | Ort | Typ | Beschreibung |
|---|---|---|---|
STRYK-Event-IdPflicht | header | string | Ereignis-ID (gleich der id im Body). |
STRYK-Event-TypePflicht | header | string | Ereignistyp. |
STRYK-Delivery-IdPflicht | header | string | ID dieser Zustellung (je Endpunkt verschieden). |
STRYK-Delivery-AttemptPflicht | header | string | Versuchsnummer, 1-8. |
STRYK-SignaturePflicht | header | string | t=<Unix-Sekunden>,v1=<hex HMAC-SHA256(secret, "<t>.<roher Body>")>. Während einer Secret-Rotation werden 24 h lang zwei v1-Werte gesendet. Lehnen Sie Zeitstempel ab, die älter als 300 s sind; vergleichen Sie in konstanter Zeit. |
Payload
idstringPflichtEreignis-ID (evt_<uuid>); deduplizieren Sie darüber.
typestringPflichtWebhook-Ereignistyp.
Werte:
"booking.created","booking.updated","booking.cancelled","guest.updated","availability.changed","rate.changed","payment.updated","unit.updated","webhook.test"apiVersionstringPflichtcreatedAtstring (date-time)PflichthotelIdstringPflichtdataobjectPflichtFelder anzeigen (8)
objectstringPflichtWerte:
"booking","guest","availability","rate","payment","webhook"idstringObjekt-ID (Ereignisse zu Buchung, Gast und webhook.test).
bookingIdstring (uuid)payment.updated: Buchung, deren Zahlungsstatus sich geändert hat; lesen Sie GET /bookings/{bookingId}/payments.
changesarray<string>booking.updated: geänderte Bereiche (status, rooms, guest, details, deleted). Zusammengefasste Änderungen vereinen die Bereiche.
Werte:
"status","rooms","guest","details","deleted"roomTypeIdsarray<string (uuid)>availability/rate: betroffene Zimmerkategorien.
ratePlanIdsarray<string (uuid)>rate.changed nach einer Tarifänderung: betroffene Tarife.
fromstring (date)availability/rate: erstes betroffenes Datum.
tostring (date)availability/rate: letztes betroffenes Datum.
Antworten
- 2XXZustellung angenommen.
{
"id": "evt_2c9a7b6e-1d4f-4e3a-9b8c-7d6e5f4a3b2c",
"type": "payment.updated",
"apiVersion": "v1",
"createdAt": "2026-11-04T08:15:01.204Z",
"hotelId": "hotel-alpenblick",
"data": {
"object": "payment",
"bookingId": "5b2e9f1c-7d3a-4e8b-a6c4-0f1e2d3c4b5a"
}
}POSTunit.updatedunit.updated
unit.updatedunit.updatedDer Reinigungsstatus einer Einheit hat sich geändert (jede Quelle). Antworten Sie innerhalb von 10 Sekunden mit einem beliebigen 2xx; andere Antworten werden nach 1 min, 5 min, 30 min, 2 h, 6 h, 12 h und 24 h wiederholt (8 Versuche).
Zustell-Header
| Name | Ort | Typ | Beschreibung |
|---|---|---|---|
STRYK-Event-IdPflicht | header | string | Ereignis-ID (gleich der id im Body). |
STRYK-Event-TypePflicht | header | string | Ereignistyp. |
STRYK-Delivery-IdPflicht | header | string | ID dieser Zustellung (je Endpunkt verschieden). |
STRYK-Delivery-AttemptPflicht | header | string | Versuchsnummer, 1-8. |
STRYK-SignaturePflicht | header | string | t=<Unix-Sekunden>,v1=<hex HMAC-SHA256(secret, "<t>.<roher Body>")>. Während einer Secret-Rotation werden 24 h lang zwei v1-Werte gesendet. Lehnen Sie Zeitstempel ab, die älter als 300 s sind; vergleichen Sie in konstanter Zeit. |
Payload
idstringPflichtEreignis-ID (evt_<uuid>); deduplizieren Sie darüber.
typestringPflichtWebhook-Ereignistyp.
Werte:
"booking.created","booking.updated","booking.cancelled","guest.updated","availability.changed","rate.changed","payment.updated","unit.updated","webhook.test"apiVersionstringPflichtcreatedAtstring (date-time)PflichthotelIdstringPflichtdataobjectPflichtFelder anzeigen (8)
objectstringPflichtWerte:
"booking","guest","availability","rate","payment","webhook"idstringObjekt-ID (Ereignisse zu Buchung, Gast und webhook.test).
bookingIdstring (uuid)payment.updated: Buchung, deren Zahlungsstatus sich geändert hat; lesen Sie GET /bookings/{bookingId}/payments.
changesarray<string>booking.updated: geänderte Bereiche (status, rooms, guest, details, deleted). Zusammengefasste Änderungen vereinen die Bereiche.
Werte:
"status","rooms","guest","details","deleted"roomTypeIdsarray<string (uuid)>availability/rate: betroffene Zimmerkategorien.
ratePlanIdsarray<string (uuid)>rate.changed nach einer Tarifänderung: betroffene Tarife.
fromstring (date)availability/rate: erstes betroffenes Datum.
tostring (date)availability/rate: letztes betroffenes Datum.
Antworten
- 2XXZustellung angenommen.
{
"id": "evt_2c9a7b6e-1d4f-4e3a-9b8c-7d6e5f4a3b2c",
"type": "unit.updated",
"apiVersion": "v1",
"createdAt": "2026-11-04T08:15:01.204Z",
"hotelId": "hotel-alpenblick",
"data": {
"object": "unit",
"id": "c2d3e4f5-a6b7-4c8d-9e0f-1a2b3c4d5e6f",
"changes": ["housekeeping"]
}
}POSTwebhook.testwebhook.test
webhook.testwebhook.testTestereignis aus den Kanaleinstellungen, um Endpunkt und Signatur zu prüfen. Antworten Sie innerhalb von 10 Sekunden mit einem beliebigen 2xx; andere Antworten werden nach 1 min, 5 min, 30 min, 2 h, 6 h, 12 h und 24 h wiederholt (8 Versuche).
Zustell-Header
| Name | Ort | Typ | Beschreibung |
|---|---|---|---|
STRYK-Event-IdPflicht | header | string | Ereignis-ID (gleich der id im Body). |
STRYK-Event-TypePflicht | header | string | Ereignistyp. |
STRYK-Delivery-IdPflicht | header | string | ID dieser Zustellung (je Endpunkt verschieden). |
STRYK-Delivery-AttemptPflicht | header | string | Versuchsnummer, 1-8. |
STRYK-SignaturePflicht | header | string | t=<Unix-Sekunden>,v1=<hex HMAC-SHA256(secret, "<t>.<roher Body>")>. Während einer Secret-Rotation werden 24 h lang zwei v1-Werte gesendet. Lehnen Sie Zeitstempel ab, die älter als 300 s sind; vergleichen Sie in konstanter Zeit. |
Payload
idstringPflichtEreignis-ID (evt_<uuid>); deduplizieren Sie darüber.
typestringPflichtWebhook-Ereignistyp.
Werte:
"booking.created","booking.updated","booking.cancelled","guest.updated","availability.changed","rate.changed","payment.updated","unit.updated","webhook.test"apiVersionstringPflichtcreatedAtstring (date-time)PflichthotelIdstringPflichtdataobjectPflichtFelder anzeigen (8)
objectstringPflichtWerte:
"booking","guest","availability","rate","payment","webhook"idstringObjekt-ID (Ereignisse zu Buchung, Gast und webhook.test).
bookingIdstring (uuid)payment.updated: Buchung, deren Zahlungsstatus sich geändert hat; lesen Sie GET /bookings/{bookingId}/payments.
changesarray<string>booking.updated: geänderte Bereiche (status, rooms, guest, details, deleted). Zusammengefasste Änderungen vereinen die Bereiche.
Werte:
"status","rooms","guest","details","deleted"roomTypeIdsarray<string (uuid)>availability/rate: betroffene Zimmerkategorien.
ratePlanIdsarray<string (uuid)>rate.changed nach einer Tarifänderung: betroffene Tarife.
fromstring (date)availability/rate: erstes betroffenes Datum.
tostring (date)availability/rate: letztes betroffenes Datum.
Antworten
- 2XXZustellung angenommen.
{
"id": "evt_2c9a7b6e-1d4f-4e3a-9b8c-7d6e5f4a3b2c",
"type": "webhook.test",
"apiVersion": "v1",
"createdAt": "2026-11-04T08:15:01.204Z",
"hotelId": "hotel-alpenblick",
"data": {
"object": "webhook",
"id": "4d3c2b1a-0f9e-4d8c-8b7a-6f5e4d3c2b1a"
}
}