Zum Inhalt springen

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

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.

Account

Der aufrufende Schlüssel.

GET/meAufrufenden Schlüssel beschreiben

Liefert 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/json
    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.
    • keyIdstring (uuid)Pflicht

      Schlüssel-ID.

    • keyNamestringPflicht

      Vom Hotel vergebener Name.

    • keyPrefixstring | nullPflicht

      Öffentliches Präfix (die ersten 8 Zeichen nach stryk_live_).

    • scopesarray<string>Pflicht

      Erteilte 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"

    • hotelHotelRefPflicht

      Hotel, zu dem der API-Schlüssel gehört.

      Felder anzeigen (2)
      • idstringPflicht

        Hotel-ID.

      • namestring | nullPflicht

        Anzeigename.

    • expiresAtstring | null (date-time)Pflicht

      Ablauf; null, wenn der Schlüssel nicht abläuft.

    • rateLimitRateLimitPflicht

      Rate-Limit des Schlüssels.

      Felder anzeigen (2)
      • limitintegerPflicht

        Anfragen je Fenster für diesen Schlüssel (Standard 120; eine andere Stufe stellt STRYK auf Anfrage ein).

      • windowSecondsintegerPflicht

        Fensterlä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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    Retry-After
    Sekunden bis zum nächsten Versuch.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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"
Beispiel, 200
{
  "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

Name, Adresse, Zeitzone, Währung, Sprachen, Check-in-/Check-out-Zeiten und Kontaktdaten.

Scopes: property:readoperationId getHotel

Header

NameOrtTypBeschreibung
If-None-Matchheaderstring

ETag, das Sie kennen; 304, wenn unverändert.

Antworten

  • 200Hotel.application/json
    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.
    • idstringPflicht

      Hotel-ID.

    • namestring | nullPflicht

      Anzeigename.

    • legalNamestring | null

      Rechtlicher Name (auf Rechnungen), wenn er vom Anzeigenamen abweicht.

    • addressAddressPflicht

      Postanschrift.

      Felder anzeigen (4)
      • streetstring | null

        Straße und Hausnummer.

      • postalCodestring | null

        Postleitzahl.

      • citystring | null

        Ort.

      • countrystring | null

        Ländercode nach ISO 3166-1 alpha-2.

    • timezonestringPflicht

      IANA-Zeitzone, z. B. Europe/Vienna.

    • currencystringPflicht

      Hotelwährung (ISO 4217).

    • languagesarray<string>Pflicht

      Gastsprachen, für die das Hotel Inhalte pflegt (ISO 639-1).

    • checkInFromstring | null

      Früheste Check-in-Zeit HH:MM (hotel-lokal).

    • checkOutUntilstring | null

      Späteste Check-out-Zeit HH:MM (hotel-lokal).

    • contactContactPflicht

      Öffentliche Kontaktdaten des Hotels.

      Felder anzeigen (3)
      • emailstring | null

        E-Mail.

      • phonestring | null

        Telefon.

      • websitestring | null

        URL der Website.

    • versionstringPflicht

      ETag-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    Retry-After
    Sekunden bis zum nächsten Versuch.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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"
Beispiel, 200
{
  "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

Alle 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

NameOrtTypBeschreibung
limitqueryinteger

Seitengröße 1-200 (Standard 50).

cursorquerystring

nextCursor der vorherigen Seite. Alle anderen Parameter unverändert lassen.

Antworten

  • 200Zimmerkategorien.application/json
    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.
    • dataarray<RoomType>Pflicht

      Einträge dieser Seite, aufsteigend nach updatedAt, dann id sortiert.

      Felder anzeigen (15)
      • idstring (uuid)Pflicht

        ID der Zimmerkategorie.

      • namestringPflicht

        Name.

      • codestring | null

        Kurzcode.

      • descriptionobjectPflicht

        Beschreibung je Sprachcode (ISO 639-1); und, wenn die Sprache unbekannt ist.

      • maxOccupancyintegerPflicht

        Höchstzahl Gäste einschließlich Zustellbetten.

      • maxAdultsintegerPflicht

        Höchstzahl Erwachsene in einer erlaubten Belegung.

      • maxChildrenintegerPflicht

        Höchstzahl Kinder in einer erlaubten Belegung.

      • standardOccupancyintegerPflicht

        Belegung, auf die sich der Grundpreis bezieht.

      • bedConfigurationarray<string>Pflicht

        Betten, z. B. double_bed, twin_beds, sofa_bed.

      • sizeSqminteger | null

        Größe in Quadratmetern.

      • amenitiesarray<Amenity>Pflicht
        Felder anzeigen (2)
        • codestring | nullPflicht

          Stabiler Ausstattungsschlüssel.

        • namestring | nullPflicht

          Bezeichnung in der Hotelsprache.

      • imagesarray<Image>Pflicht

        Leer, wenn das Hotel keine Booking-Engine-Adresse hat.

        Felder anzeigen (3)
        • urlstring (uri)Pflicht

          Öffentliche HTTPS-URL.

        • altstring | null

          Alternativtext.

        • positionintegerPflicht

          Sortierposition, 0 zuerst.

      • unitCountintegerPflicht

        Aktive Einheiten dieser Kategorie.

      • activebooleanPflicht

        Verkaufbare Kategorie.

      • versionstringPflicht

        ETag-Wert ohne Anführungszeichen.

    • nextCursorstring | nullPflicht

      Undurchsichtiger Cursor für die nächste Seite; null auf der letzten Seite.

    • hasMorebooleanPflicht

      True, 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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    Retry-After
    Sekunden bis zum nächsten Versuch.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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"
Beispiel, 200
{
  "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

Eine Zimmerkategorie mit Belegung, Betten, Ausstattung und Bildern.

Scopes: property:readoperationId getRoomType

Parameter, path

NameOrtTypBeschreibung
roomTypeIdPflichtpathstring (uuid)-

Header

NameOrtTypBeschreibung
If-None-Matchheaderstring

ETag, das Sie kennen; 304, wenn unverändert.

Antworten

  • 200Zimmerkategorie.application/json
    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.
    • idstring (uuid)Pflicht

      ID der Zimmerkategorie.

    • namestringPflicht

      Name.

    • codestring | null

      Kurzcode.

    • descriptionobjectPflicht

      Beschreibung je Sprachcode (ISO 639-1); und, wenn die Sprache unbekannt ist.

    • maxOccupancyintegerPflicht

      Höchstzahl Gäste einschließlich Zustellbetten.

    • maxAdultsintegerPflicht

      Höchstzahl Erwachsene in einer erlaubten Belegung.

    • maxChildrenintegerPflicht

      Höchstzahl Kinder in einer erlaubten Belegung.

    • standardOccupancyintegerPflicht

      Belegung, auf die sich der Grundpreis bezieht.

    • bedConfigurationarray<string>Pflicht

      Betten, z. B. double_bed, twin_beds, sofa_bed.

    • sizeSqminteger | null

      Größe in Quadratmetern.

    • amenitiesarray<Amenity>Pflicht
      Felder anzeigen (2)
      • codestring | nullPflicht

        Stabiler Ausstattungsschlüssel.

      • namestring | nullPflicht

        Bezeichnung in der Hotelsprache.

    • imagesarray<Image>Pflicht

      Leer, wenn das Hotel keine Booking-Engine-Adresse hat.

      Felder anzeigen (3)
      • urlstring (uri)Pflicht

        Öffentliche HTTPS-URL.

      • altstring | null

        Alternativtext.

      • positionintegerPflicht

        Sortierposition, 0 zuerst.

    • unitCountintegerPflicht

      Aktive Einheiten dieser Kategorie.

    • activebooleanPflicht

      Verkaufbare Kategorie.

    • versionstringPflicht

      ETag-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    Retry-After
    Sekunden bis zum nächsten Versuch.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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"
Beispiel, 200
{
  "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

Zimmer und Apartments (ohne Housekeeping-Interna), sortiert nach updatedAt, id.

Scopes: property:readoperationId listUnits

Parameter, query

NameOrtTypBeschreibung
limitqueryinteger

Seitengröße 1-200 (Standard 50).

cursorquerystring

nextCursor der vorherigen Seite. Alle anderen Parameter unverändert lassen.

updated_sincequerystring (date-time)

RFC-3339-Zeitstempel; liefert Einträge mit updatedAt >= Wert. Über id + updatedAt deduplizieren.

roomTypeIdquerystring (uuid)

Nur diese Zimmerkategorie.

Antworten

  • 200Einheiten.application/json
    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.
    • dataarray<Unit>Pflicht

      Einträge dieser Seite, aufsteigend nach updatedAt, dann id sortiert.

      Felder anzeigen (8)
      • idstring (uuid)Pflicht

        ID der Einheit.

      • numberstringPflicht

        Zimmernummer.

      • roomTypeIdstring (uuid)Pflicht

        Zimmerkategorie.

      • floorinteger | null

        Etage.

      • activebooleanPflicht

        In Betrieb.

      • housekeepingStatusstring | null

        Reinigungsstatus (siehe UnitUpdateRequest); hoteleigene Status behalten ihre ID.

      • updatedAtstring (date-time)Pflicht

        Letzte Änderung der Zimmerstammdaten.

      • versionstringPflicht

        ETag-Wert ohne Anführungszeichen; ändert sich mit Stammdaten und Reinigungsstatus.

    • nextCursorstring | nullPflicht

      Undurchsichtiger Cursor für die nächste Seite; null auf der letzten Seite.

    • hasMorebooleanPflicht

      True, 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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    Retry-After
    Sekunden bis zum nächsten Versuch.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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"
Beispiel, 200
{
  "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

Ein Zimmer oder Apartment.

Scopes: property:readoperationId getUnit

Parameter, path

NameOrtTypBeschreibung
unitIdPflichtpathstring (uuid)-

Header

NameOrtTypBeschreibung
If-None-Matchheaderstring

ETag, das Sie kennen; 304, wenn unverändert.

Antworten

  • 200Einheit.application/json
    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.
    • idstring (uuid)Pflicht

      ID der Einheit.

    • numberstringPflicht

      Zimmernummer.

    • roomTypeIdstring (uuid)Pflicht

      Zimmerkategorie.

    • floorinteger | null

      Etage.

    • activebooleanPflicht

      In Betrieb.

    • housekeepingStatusstring | null

      Reinigungsstatus (siehe UnitUpdateRequest); hoteleigene Status behalten ihre ID.

    • updatedAtstring (date-time)Pflicht

      Letzte Änderung der Zimmerstammdaten.

    • versionstringPflicht

      ETag-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    Retry-After
    Sekunden bis zum nächsten Versuch.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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"
Beispiel, 200
{
  "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

Setzt 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

NameOrtTypBeschreibung
unitIdPflichtpathstring (uuid)-

Header

NameOrtTypBeschreibung
If-MatchPflichtheaderstring

ETag der gelesenen Version. Fehlt er → 428, ist er veraltet → 412.

Idempotency-Keyheaderstring

Optionaler Idempotenz-Schlüssel, gleiche Regeln wie bei POST.

Request-Body application/json, Pflicht

Neuer Reinigungsstatus.

  • housekeepingStatusstringPflicht

    Eingebauter 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/json
    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.
    Idempotent-Replayed
    true, wenn die Antwort das gespeicherte Ergebnis einer früheren Anfrage mit demselben Idempotency-Key ist.
    • idstring (uuid)Pflicht

      ID der Einheit.

    • numberstringPflicht

      Zimmernummer.

    • roomTypeIdstring (uuid)Pflicht

      Zimmerkategorie.

    • floorinteger | null

      Etage.

    • activebooleanPflicht

      In Betrieb.

    • housekeepingStatusstring | null

      Reinigungsstatus (siehe UnitUpdateRequest); hoteleigene Status behalten ihre ID.

    • updatedAtstring (date-time)Pflicht

      Letzte Änderung der Zimmerstammdaten.

    • versionstringPflicht

      ETag-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    Retry-After
    Sekunden bis zum nächsten Versuch.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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"
}'
Beispiel, 200
{
  "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

Verkaufbare 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

NameOrtTypBeschreibung
fromPflichtquerystring (date)

Erstes Datum (YYYY-MM-DD, hotel-lokal).

toPflichtquerystring (date)

Letztes Datum, einschließlich; der Zeitraum umfasst höchstens 366 Tage.

roomTypeIdquerystring (uuid)

Nur diese Zimmerkategorie.

Antworten

  • 200Verfügbarkeit.application/json
    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.
    • fromstring (date)Pflicht
    • tostring (date)Pflicht
    • dataarray<AvailabilityDay>Pflicht
      Felder anzeigen (7)
      • roomTypeIdstring (uuid)Pflicht
      • datestring (date)Pflicht

        Nacht (hotel-lokal).

      • availableintegerPflicht

        Für diese Nacht noch verkaufbare Einheiten.

      • closedbooleanPflicht

        Für den Verkauf geschlossen.

      • minStayintegerPflicht

        Mindestaufenthalt in Nächten für Anreisen an diesem Datum.

      • closedToArrivalbooleanPflicht

        Keine Anreise an diesem Datum.

      • closedToDeparturebooleanPflicht

        Keine 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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    Retry-After
    Sekunden bis zum nächsten Versuch.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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"
Beispiel, 200
{
  "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

Ü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

NameOrtTypBeschreibung
fromPflichtquerystring (date)

Erstes Datum (YYYY-MM-DD, hotel-lokal).

toPflichtquerystring (date)

Letztes Datum, einschließlich; der Zeitraum umfasst höchstens 366 Tage.

roomTypeIdquerystring (uuid)

Nur diese Zimmerkategorie.

ratePlanIdquerystring (uuid)

Nur dieser Tarif.

Antworten

  • 200Preise.application/json
    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.
    • fromstring (date)Pflicht
    • tostring (date)Pflicht
    • dataarray<RateDay>Pflicht
      Felder anzeigen (5)
      • roomTypeIdstring (uuid)Pflicht
      • ratePlanIdstring | null (uuid)Pflicht

        Null, wenn kein Tarif über die API verkauft wird (Grundpreis).

      • datestring (date)Pflicht
      • priceobjectPflicht

        Übernachtungspreis einer Nacht.

        Felder anzeigen (2)
        • amountstringPflicht

          Dezimal-String, genau zwei Nachkommastellen.

        • currencystringPflicht

          ISO-4217-Währungscode.

      • occupancyintegerPflicht

        Gä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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    Retry-After
    Sekunden bis zum nächsten Versuch.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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"
Beispiel, 200
{
  "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

Tarife, die über den Vertriebsweg API verkauft werden, einschließlich inaktiver.

Scopes: rates:readoperationId listRatePlans

Parameter, query

NameOrtTypBeschreibung
limitqueryinteger

Seitengröße 1-200 (Standard 50).

cursorquerystring

nextCursor der vorherigen Seite. Alle anderen Parameter unverändert lassen.

updated_sincequerystring (date-time)

RFC-3339-Zeitstempel; liefert Einträge mit updatedAt >= Wert. Über id + updatedAt deduplizieren.

Antworten

  • 200Tarife.application/json
    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.
    • dataarray<RatePlan>Pflicht

      Einträge dieser Seite, aufsteigend nach updatedAt, dann id sortiert.

      Felder anzeigen (9)
      • idstring (uuid)Pflicht

        Tarif-ID.

      • namestringPflicht

        Name.

      • codestring | null

        Kurzcode.

      • descriptionstring | null

        Beschreibung.

      • roomTypeIdsarray<string (uuid)>Pflicht

        Zimmerkategorien, für die der Tarif gilt; leer bedeutet alle.

      • mealPlanstring | null

        Verpflegung.

        Werte: "breakfast", "room_only", null

      • cancellationPolicyCancellationPolicy | null
        Felder anzeigen (3)
        • summarystring | null

          Zusammenfassung für Gäste in der Hotelsprache.

        • refundableboolean | null

          Kostenlose Stornierung ist zu einem Zeitpunkt möglich.

        • freeCancellationHoursBeforeinteger | null

          Kostenlose Stornierung bis so viele Stunden vor Anreise.

      • activebooleanPflicht

        Derzeit verkaufbar.

      • updatedAtstring (date-time)Pflicht

        Letzte Änderung.

    • nextCursorstring | nullPflicht

      Undurchsichtiger Cursor für die nächste Seite; null auf der letzten Seite.

    • hasMorebooleanPflicht

      True, 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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    Retry-After
    Sekunden bis zum nächsten Versuch.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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"
Beispiel, 200
{
  "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

Berechnet 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 application/json, Pflicht

Zu bepreisender Aufenthalt.

  • checkInstring (date)Pflicht

    Anreise (hotel-lokal), nicht vor heute.

  • checkOutstring (date)Pflicht

    Abreise, nach checkIn (höchstens 365 Nächte).

  • roomTypeIdstring (uuid)Pflicht
  • ratePlanIdstring | null (uuid)

    Optionaler Tarif, der über die API verkauft wird.

  • adultsintegerPflicht

    Erwachsene (>= 1).

  • childrenAgesarray<integer>

    Alter jedes Kindes (0-17).

  • discountCodestring | null

    Rabattcode des Hotels.

Antworten

  • 200Angebot.application/json
    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.
    • availablebooleanPflicht

      False: siehe reasons; Preise sind null.

    • reasonsarray<QuoteReason>Pflicht
      Felder anzeigen (2)
      • codestringPflicht

        Grundcode.

        Werte: "sold_out", "min_stay_not_met", "closed_to_arrival", "closed_to_departure", "rate_plan_not_applicable", "not_bookable"

      • messagestringPflicht

        Englische Erklärung.

    • roomTypeIdstring (uuid)Pflicht
    • ratePlanIdstring | null (uuid)Pflicht
    • checkInstring (date)Pflicht
    • checkOutstring (date)Pflicht
    • nightsintegerPflicht
    • totalMoney | nullPflicht

      Was die Buchung kosten wird: Übernachtung plus nicht enthaltene Steuern und Gebühren.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-4217-Währungscode.

    • accommodationMoney | nullPflicht

      Übernachtungspreis nach Rabatten.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-4217-Währungscode.

    • taxesAndFeesarray<TaxOrFee>Pflicht
      Felder anzeigen (3)
      • namestringPflicht

        Bezeichnung in der Hotelsprache.

      • amountMoneyPflicht

        Geldbetrag: Dezimal-String mit genau zwei Nachkommastellen und einer ISO-4217-Währung. Verwenden Sie dafür nie binäre Gleitkommazahlen.

        Felder anzeigen (2)
        • amountstringPflicht

          Dezimal-String, genau zwei Nachkommastellen.

        • currencystringPflicht

          ISO-4217-Währungscode.

      • includedbooleanPflicht

        True: bereits in accommodation enthalten; false: kommt in total hinzu.

    • nightlyarray<NightlyPrice>Pflicht
      Felder anzeigen (2)
      • datestring (date)Pflicht
      • priceMoneyPflicht

        Geldbetrag: Dezimal-String mit genau zwei Nachkommastellen und einer ISO-4217-Währung. Verwenden Sie dafür nie binäre Gleitkommazahlen.

        Felder anzeigen (2)
        • amountstringPflicht

          Dezimal-String, genau zwei Nachkommastellen.

        • currencystringPflicht

          ISO-4217-Währungscode.

    • cancellationPolicyCancellationPolicy | nullPflicht
      Felder anzeigen (3)
      • summarystring | null

        Zusammenfassung für Gäste in der Hotelsprache.

      • refundableboolean | null

        Kostenlose Stornierung ist zu einem Zeitpunkt möglich.

      • freeCancellationHoursBeforeinteger | null

        Kostenlose 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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    Retry-After
    Sekunden bis zum nächsten Versuch.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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]
}'
Beispiel, 200
{
  "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

Alle Buchungen des Hotels (jeder Vertriebsweg), sortiert nach updatedAt, id. Für inkrementellen Abgleich updated_since verwenden.

Scopes: bookings:readoperationId listBookings

Parameter, query

NameOrtTypBeschreibung
limitqueryinteger

Seitengröße 1-200 (Standard 50).

cursorquerystring

nextCursor der vorherigen Seite. Alle anderen Parameter unverändert lassen.

updated_sincequerystring (date-time)

RFC-3339-Zeitstempel; liefert Einträge mit updatedAt >= Wert. Über id + updatedAt deduplizieren.

statusquerystring-
arrivalFromquerystring (date)

checkIn >= Datum.

arrivalToquerystring (date)

checkIn <= Datum.

externalReferencequerystring

Exakte externe Referenz.

Antworten

  • 200Buchungen.application/json
    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.
    • dataarray<Booking>Pflicht

      Einträge dieser Seite, aufsteigend nach updatedAt, dann id sortiert.

      Felder anzeigen (21)
      • idstring (uuid)Pflicht
      • referencestringPflicht

        Buchungsnummer, die Hotel und Gast sehen.

      • statusstringPflicht

        Buchungsstatus.

        Werte: "pending", "tentative", "confirmed", "checked_in", "checked_out", "cancelled", "no_show"

      • channelstringPflicht

        Vertriebsweg.

        Werte: "direct", "manual", "channels", "api"

      • externalReferencestring | nullPflicht

        Partnerreferenz (eindeutig je Hotel).

      • checkInstring (date)Pflicht
      • checkOutstring (date)Pflicht
      • nightsintegerPflicht
      • adultsintegerPflicht
      • childrenintegerPflicht
      • childrenAgesarray<integer>Pflicht
      • roomsarray<BookingRoom>Pflicht
        Felder anzeigen (5)
        • roomTypeIdstring (uuid)Pflicht
        • unitIdstring | null (uuid)Pflicht

          Zugewiesene Einheit.

        • ratePlanIdstring | null (uuid)Pflicht
        • adultsintegerPflicht
        • childrenintegerPflicht
      • guestBookingGuestPflicht

        Momentaufnahme des Hauptgasts der Buchung.

        Felder anzeigen (5)
        • idstring | null (uuid)Pflicht

          Gästeprofil, falls verknüpft.

        • firstNamestring | nullPflicht
        • lastNamestring | nullPflicht
        • emailstring | nullPflicht
        • phonestring | nullPflicht
      • totalobjectPflicht

        Von STRYK berechneter Gesamtbetrag der Buchung.

        Felder anzeigen (2)
        • amountstringPflicht

          Dezimal-String, genau zwei Nachkommastellen.

        • currencystringPflicht

          ISO-4217-Währungscode.

      • paidobjectPflicht

        Beglichener Betrag (alle Zahlungswege).

        Felder anzeigen (2)
        • amountstringPflicht

          Dezimal-String, genau zwei Nachkommastellen.

        • currencystringPflicht

          ISO-4217-Währungscode.

      • outstandingobjectPflicht

        Gesamtbetrag minus Zahlungen, nie negativ.

        Felder anzeigen (2)
        • amountstringPflicht

          Dezimal-String, genau zwei Nachkommastellen.

        • currencystringPflicht

          ISO-4217-Währungscode.

      • notesstring | nullPflicht
      • cancellationBookingCancellation | nullPflicht
        Felder anzeigen (2)
        • cancelledAtstring | null (date-time)Pflicht
        • feeMoney | nullPflicht

          Stornogebühr gemäß den Bedingungen des Hotels.

          Felder anzeigen (2)
          • amountstringPflicht

            Dezimal-String, genau zwei Nachkommastellen.

          • currencystringPflicht

            ISO-4217-Währungscode.

      • createdAtstring (date-time)Pflicht
      • updatedAtstring (date-time)Pflicht
      • versionstringPflicht

        ETag-Wert ohne Anführungszeichen.

    • nextCursorstring | nullPflicht

      Undurchsichtiger Cursor für die nächste Seite; null auf der letzten Seite.

    • hasMorebooleanPflicht

      True, 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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    Retry-After
    Sekunden bis zum nächsten Versuch.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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"
Beispiel, 200
{
  "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

Legt 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

NameOrtTypBeschreibung
Idempotency-KeyPflichtheaderstring

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 application/json, Pflicht

Neue Buchung.

  • roomTypeIdstring (uuid)Pflicht
  • ratePlanIdstring | null (uuid)
  • checkInstring (date)Pflicht
  • checkOutstring (date)Pflicht
  • adultsintegerPflicht
  • childrenAgesarray<integer>
  • guestGuestInputPflicht

    Gast einer neuen Buchung.

    Felder anzeigen (6)
    • firstNamestringPflicht
    • lastNamestringPflicht
    • emailstring (email)Pflicht

      E-Mail des Gasts.

    • phonestring | null
    • countrystring | null

      Wohnsitzland (ISO 3166-1 alpha-2).

    • addressAddress | null
      Felder anzeigen (4)
      • streetstring | null

        Straße und Hausnummer.

      • postalCodestring | null

        Postleitzahl.

      • citystring | null

        Ort.

      • countrystring | null

        Ländercode nach ISO 3166-1 alpha-2.

  • notesstring | null
  • externalReferencestring | null

    Ihre Referenz, eindeutig je Hotel.

  • statusstring | null

    Anfangsstatus (Standard confirmed).

    Werte: "confirmed", "tentative", null

  • expectedTotalMoney | null

    Preis, den Sie dem Gast gezeigt haben; eine Abweichung ergibt 409 conflict mit currentTotal.

    Felder anzeigen (2)
    • amountstringPflicht

      Dezimal-String, genau zwei Nachkommastellen.

    • currencystringPflicht

      ISO-4217-Währungscode.

  • discountCodestring | null
  • notifyGuestboolean | null

    Die Standard-Buchungsbestätigung von STRYK an guest.email senden (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/json
    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.
    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)Pflicht
    • referencestringPflicht

      Buchungsnummer, die Hotel und Gast sehen.

    • statusstringPflicht

      Buchungsstatus.

      Werte: "pending", "tentative", "confirmed", "checked_in", "checked_out", "cancelled", "no_show"

    • channelstringPflicht

      Vertriebsweg.

      Werte: "direct", "manual", "channels", "api"

    • externalReferencestring | nullPflicht

      Partnerreferenz (eindeutig je Hotel).

    • checkInstring (date)Pflicht
    • checkOutstring (date)Pflicht
    • nightsintegerPflicht
    • adultsintegerPflicht
    • childrenintegerPflicht
    • childrenAgesarray<integer>Pflicht
    • roomsarray<BookingRoom>Pflicht
      Felder anzeigen (5)
      • roomTypeIdstring (uuid)Pflicht
      • unitIdstring | null (uuid)Pflicht

        Zugewiesene Einheit.

      • ratePlanIdstring | null (uuid)Pflicht
      • adultsintegerPflicht
      • childrenintegerPflicht
    • guestBookingGuestPflicht

      Momentaufnahme des Hauptgasts der Buchung.

      Felder anzeigen (5)
      • idstring | null (uuid)Pflicht

        Gästeprofil, falls verknüpft.

      • firstNamestring | nullPflicht
      • lastNamestring | nullPflicht
      • emailstring | nullPflicht
      • phonestring | nullPflicht
    • totalobjectPflicht

      Von STRYK berechneter Gesamtbetrag der Buchung.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-4217-Währungscode.

    • paidobjectPflicht

      Beglichener Betrag (alle Zahlungswege).

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-4217-Währungscode.

    • outstandingobjectPflicht

      Gesamtbetrag minus Zahlungen, nie negativ.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-4217-Währungscode.

    • notesstring | nullPflicht
    • cancellationBookingCancellation | nullPflicht
      Felder anzeigen (2)
      • cancelledAtstring | null (date-time)Pflicht
      • feeMoney | nullPflicht

        Stornogebühr gemäß den Bedingungen des Hotels.

        Felder anzeigen (2)
        • amountstringPflicht

          Dezimal-String, genau zwei Nachkommastellen.

        • currencystringPflicht

          ISO-4217-Währungscode.

    • createdAtstring (date-time)Pflicht
    • updatedAtstring (date-time)Pflicht
    • versionstringPflicht

      ETag-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    Retry-After
    Sekunden bis zum nächsten Versuch.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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
}'
Beispiel, 201
{
  "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

Eine Buchung mit ETag.

Scopes: bookings:readoperationId getBooking

Parameter, path

NameOrtTypBeschreibung
bookingIdPflichtpathstring (uuid)-

Header

NameOrtTypBeschreibung
If-None-Matchheaderstring

ETag, das Sie kennen; 304, wenn unverändert.

Antworten

  • 200Buchung.application/json
    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.
    • idstring (uuid)Pflicht
    • referencestringPflicht

      Buchungsnummer, die Hotel und Gast sehen.

    • statusstringPflicht

      Buchungsstatus.

      Werte: "pending", "tentative", "confirmed", "checked_in", "checked_out", "cancelled", "no_show"

    • channelstringPflicht

      Vertriebsweg.

      Werte: "direct", "manual", "channels", "api"

    • externalReferencestring | nullPflicht

      Partnerreferenz (eindeutig je Hotel).

    • checkInstring (date)Pflicht
    • checkOutstring (date)Pflicht
    • nightsintegerPflicht
    • adultsintegerPflicht
    • childrenintegerPflicht
    • childrenAgesarray<integer>Pflicht
    • roomsarray<BookingRoom>Pflicht
      Felder anzeigen (5)
      • roomTypeIdstring (uuid)Pflicht
      • unitIdstring | null (uuid)Pflicht

        Zugewiesene Einheit.

      • ratePlanIdstring | null (uuid)Pflicht
      • adultsintegerPflicht
      • childrenintegerPflicht
    • guestBookingGuestPflicht

      Momentaufnahme des Hauptgasts der Buchung.

      Felder anzeigen (5)
      • idstring | null (uuid)Pflicht

        Gästeprofil, falls verknüpft.

      • firstNamestring | nullPflicht
      • lastNamestring | nullPflicht
      • emailstring | nullPflicht
      • phonestring | nullPflicht
    • totalobjectPflicht

      Von STRYK berechneter Gesamtbetrag der Buchung.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-4217-Währungscode.

    • paidobjectPflicht

      Beglichener Betrag (alle Zahlungswege).

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-4217-Währungscode.

    • outstandingobjectPflicht

      Gesamtbetrag minus Zahlungen, nie negativ.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-4217-Währungscode.

    • notesstring | nullPflicht
    • cancellationBookingCancellation | nullPflicht
      Felder anzeigen (2)
      • cancelledAtstring | null (date-time)Pflicht
      • feeMoney | nullPflicht

        Stornogebühr gemäß den Bedingungen des Hotels.

        Felder anzeigen (2)
        • amountstringPflicht

          Dezimal-String, genau zwei Nachkommastellen.

        • currencystringPflicht

          ISO-4217-Währungscode.

    • createdAtstring (date-time)Pflicht
    • updatedAtstring (date-time)Pflicht
    • versionstringPflicht

      ETag-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    Retry-After
    Sekunden bis zum nächsten Versuch.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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"
Beispiel, 200
{
  "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

Ä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

NameOrtTypBeschreibung
bookingIdPflichtpathstring (uuid)-

Header

NameOrtTypBeschreibung
If-MatchPflichtheaderstring

ETag der gelesenen Version. Fehlt er → 428, ist er veraltet → 412.

Idempotency-Keyheaderstring

Optionaler Idempotenz-Schlüssel, gleiche Regeln wie bei POST.

Request-Body application/json, Pflicht

Zu ändernde Felder.

  • guestBookingGuestPatch | null
    Felder anzeigen (4)
    • firstNamestring | null
    • lastNamestring | null
    • emailstring | null (email)
    • phonestring | null
  • notesstring | null
  • externalReferencestring | null

Antworten

  • 200Geänderte Buchung.application/json
    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.
    Idempotent-Replayed
    true, wenn die Antwort das gespeicherte Ergebnis einer früheren Anfrage mit demselben Idempotency-Key ist.
    • idstring (uuid)Pflicht
    • referencestringPflicht

      Buchungsnummer, die Hotel und Gast sehen.

    • statusstringPflicht

      Buchungsstatus.

      Werte: "pending", "tentative", "confirmed", "checked_in", "checked_out", "cancelled", "no_show"

    • channelstringPflicht

      Vertriebsweg.

      Werte: "direct", "manual", "channels", "api"

    • externalReferencestring | nullPflicht

      Partnerreferenz (eindeutig je Hotel).

    • checkInstring (date)Pflicht
    • checkOutstring (date)Pflicht
    • nightsintegerPflicht
    • adultsintegerPflicht
    • childrenintegerPflicht
    • childrenAgesarray<integer>Pflicht
    • roomsarray<BookingRoom>Pflicht
      Felder anzeigen (5)
      • roomTypeIdstring (uuid)Pflicht
      • unitIdstring | null (uuid)Pflicht

        Zugewiesene Einheit.

      • ratePlanIdstring | null (uuid)Pflicht
      • adultsintegerPflicht
      • childrenintegerPflicht
    • guestBookingGuestPflicht

      Momentaufnahme des Hauptgasts der Buchung.

      Felder anzeigen (5)
      • idstring | null (uuid)Pflicht

        Gästeprofil, falls verknüpft.

      • firstNamestring | nullPflicht
      • lastNamestring | nullPflicht
      • emailstring | nullPflicht
      • phonestring | nullPflicht
    • totalobjectPflicht

      Von STRYK berechneter Gesamtbetrag der Buchung.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-4217-Währungscode.

    • paidobjectPflicht

      Beglichener Betrag (alle Zahlungswege).

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-4217-Währungscode.

    • outstandingobjectPflicht

      Gesamtbetrag minus Zahlungen, nie negativ.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-4217-Währungscode.

    • notesstring | nullPflicht
    • cancellationBookingCancellation | nullPflicht
      Felder anzeigen (2)
      • cancelledAtstring | null (date-time)Pflicht
      • feeMoney | nullPflicht

        Stornogebühr gemäß den Bedingungen des Hotels.

        Felder anzeigen (2)
        • amountstringPflicht

          Dezimal-String, genau zwei Nachkommastellen.

        • currencystringPflicht

          ISO-4217-Währungscode.

    • createdAtstring (date-time)Pflicht
    • updatedAtstring (date-time)Pflicht
    • versionstringPflicht

      ETag-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    Retry-After
    Sekunden bis zum nächsten Versuch.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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"
}'
Beispiel, 200
{
  "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

Storniert ü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

NameOrtTypBeschreibung
bookingIdPflichtpathstring (uuid)-

Header

NameOrtTypBeschreibung
Idempotency-KeyPflichtheaderstring

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 application/json, Pflicht

Optionaler Grund.

  • reasonstring | null

    Grund für das Protokoll des Hotels.

Antworten

  • 200Stornierte Buchung.application/json
    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.
    Idempotent-Replayed
    true, wenn die Antwort das gespeicherte Ergebnis einer früheren Anfrage mit demselben Idempotency-Key ist.
    • idstring (uuid)Pflicht
    • referencestringPflicht

      Buchungsnummer, die Hotel und Gast sehen.

    • statusstringPflicht

      Buchungsstatus.

      Werte: "pending", "tentative", "confirmed", "checked_in", "checked_out", "cancelled", "no_show"

    • channelstringPflicht

      Vertriebsweg.

      Werte: "direct", "manual", "channels", "api"

    • externalReferencestring | nullPflicht

      Partnerreferenz (eindeutig je Hotel).

    • checkInstring (date)Pflicht
    • checkOutstring (date)Pflicht
    • nightsintegerPflicht
    • adultsintegerPflicht
    • childrenintegerPflicht
    • childrenAgesarray<integer>Pflicht
    • roomsarray<BookingRoom>Pflicht
      Felder anzeigen (5)
      • roomTypeIdstring (uuid)Pflicht
      • unitIdstring | null (uuid)Pflicht

        Zugewiesene Einheit.

      • ratePlanIdstring | null (uuid)Pflicht
      • adultsintegerPflicht
      • childrenintegerPflicht
    • guestBookingGuestPflicht

      Momentaufnahme des Hauptgasts der Buchung.

      Felder anzeigen (5)
      • idstring | null (uuid)Pflicht

        Gästeprofil, falls verknüpft.

      • firstNamestring | nullPflicht
      • lastNamestring | nullPflicht
      • emailstring | nullPflicht
      • phonestring | nullPflicht
    • totalobjectPflicht

      Von STRYK berechneter Gesamtbetrag der Buchung.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-4217-Währungscode.

    • paidobjectPflicht

      Beglichener Betrag (alle Zahlungswege).

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-4217-Währungscode.

    • outstandingobjectPflicht

      Gesamtbetrag minus Zahlungen, nie negativ.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-4217-Währungscode.

    • notesstring | nullPflicht
    • cancellationBookingCancellation | nullPflicht
      Felder anzeigen (2)
      • cancelledAtstring | null (date-time)Pflicht
      • feeMoney | nullPflicht

        Stornogebühr gemäß den Bedingungen des Hotels.

        Felder anzeigen (2)
        • amountstringPflicht

          Dezimal-String, genau zwei Nachkommastellen.

        • currencystringPflicht

          ISO-4217-Währungscode.

    • createdAtstring (date-time)Pflicht
    • updatedAtstring (date-time)Pflicht
    • versionstringPflicht

      ETag-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    Retry-After
    Sekunden bis zum nächsten Versuch.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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."
}'
Beispiel, 200
{
  "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

Gä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

NameOrtTypBeschreibung
limitqueryinteger

Seitengröße 1-200 (Standard 50).

cursorquerystring

nextCursor der vorherigen Seite. Alle anderen Parameter unverändert lassen.

updated_sincequerystring (date-time)

RFC-3339-Zeitstempel; liefert Einträge mit updatedAt >= Wert. Über id + updatedAt deduplizieren.

emailquerystring

Exakte E-Mail (Groß-/Kleinschreibung egal).

Antworten

  • 200Gäste.application/json
    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.
    • dataarray<Guest>Pflicht

      Einträge dieser Seite, aufsteigend nach updatedAt, dann id sortiert.

      Felder anzeigen (10)
      • idstring (uuid)Pflicht
      • firstNamestring | nullPflicht
      • lastNamestring | nullPflicht
      • salutationstring | null
      • emailstring | null
      • phonestring | null
      • countrystring | null

        ISO 3166-1 alpha-2.

      • addressAddress | null
        Felder anzeigen (4)
        • streetstring | null

          Straße und Hausnummer.

        • postalCodestring | null

          Postleitzahl.

        • citystring | null

          Ort.

        • countrystring | null

          Ländercode nach ISO 3166-1 alpha-2.

      • updatedAtstring (date-time)Pflicht
      • versionstringPflicht

        ETag-Wert ohne Anführungszeichen.

    • nextCursorstring | nullPflicht

      Undurchsichtiger Cursor für die nächste Seite; null auf der letzten Seite.

    • hasMorebooleanPflicht

      True, 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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    Retry-After
    Sekunden bis zum nächsten Versuch.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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"
Beispiel, 200
{
  "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

Ein Gästeprofil mit ETag.

Scopes: guests:readoperationId getGuest

Parameter, path

NameOrtTypBeschreibung
guestIdPflichtpathstring (uuid)-

Header

NameOrtTypBeschreibung
If-None-Matchheaderstring

ETag, das Sie kennen; 304, wenn unverändert.

Antworten

  • 200Gast.application/json
    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.
    • idstring (uuid)Pflicht
    • firstNamestring | nullPflicht
    • lastNamestring | nullPflicht
    • salutationstring | null
    • emailstring | null
    • phonestring | null
    • countrystring | null

      ISO 3166-1 alpha-2.

    • addressAddress | null
      Felder anzeigen (4)
      • streetstring | null

        Straße und Hausnummer.

      • postalCodestring | null

        Postleitzahl.

      • citystring | null

        Ort.

      • countrystring | null

        Ländercode nach ISO 3166-1 alpha-2.

    • updatedAtstring (date-time)Pflicht
    • versionstringPflicht

      ETag-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    Retry-After
    Sekunden bis zum nächsten Versuch.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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"
Beispiel, 200
{
  "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

Ändert Name, Anrede, E-Mail, Telefon, Land und Adresse eines Gästeprofils. Verlangt If-Match.

Scopes: guests:writeoperationId updateGuest

Parameter, path

NameOrtTypBeschreibung
guestIdPflichtpathstring (uuid)-

Header

NameOrtTypBeschreibung
If-MatchPflichtheaderstring

ETag der gelesenen Version. Fehlt er → 428, ist er veraltet → 412.

Idempotency-Keyheaderstring

Optionaler Idempotenz-Schlüssel, gleiche Regeln wie bei POST.

Request-Body application/json, Pflicht

Zu ändernde Felder.

  • firstNamestring | null
  • lastNamestring | null
  • salutationstring | null
  • emailstring | null (email)
  • phonestring | null
  • countrystring | null
  • addressAddress | null
    Felder anzeigen (4)
    • streetstring | null

      Straße und Hausnummer.

    • postalCodestring | null

      Postleitzahl.

    • citystring | null

      Ort.

    • countrystring | null

      Ländercode nach ISO 3166-1 alpha-2.

Antworten

  • 200Geänderter Gast.application/json
    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.
    Idempotent-Replayed
    true, wenn die Antwort das gespeicherte Ergebnis einer früheren Anfrage mit demselben Idempotency-Key ist.
    • idstring (uuid)Pflicht
    • firstNamestring | nullPflicht
    • lastNamestring | nullPflicht
    • salutationstring | null
    • emailstring | null
    • phonestring | null
    • countrystring | null

      ISO 3166-1 alpha-2.

    • addressAddress | null
      Felder anzeigen (4)
      • streetstring | null

        Straße und Hausnummer.

      • postalCodestring | null

        Postleitzahl.

      • citystring | null

        Ort.

      • countrystring | null

        Ländercode nach ISO 3166-1 alpha-2.

    • updatedAtstring (date-time)Pflicht
    • versionstringPflicht

      ETag-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    Retry-After
    Sekunden bis zum nächsten Versuch.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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"
}'
Beispiel, 200
{
  "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

Gesamt-, bezahlter und offener Betrag sowie Onlinezahlungen. Nur lesend; die API nimmt nie Zahlungsdaten an.

Scopes: payments:readoperationId getBookingPayments

Parameter, path

NameOrtTypBeschreibung
bookingIdPflichtpathstring (uuid)-

Antworten

  • 200Zahlungsstatus.application/json
    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.
    • bookingIdstring (uuid)Pflicht
    • statusstringPflicht

      Werte: "unpaid", "partially_paid", "paid", "refunded", "overpaid"

    • totalMoneyPflicht

      Geldbetrag: Dezimal-String mit genau zwei Nachkommastellen und einer ISO-4217-Währung. Verwenden Sie dafür nie binäre Gleitkommazahlen.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-4217-Währungscode.

    • paidMoneyPflicht

      Geldbetrag: Dezimal-String mit genau zwei Nachkommastellen und einer ISO-4217-Währung. Verwenden Sie dafür nie binäre Gleitkommazahlen.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-4217-Währungscode.

    • outstandingMoneyPflicht

      Geldbetrag: Dezimal-String mit genau zwei Nachkommastellen und einer ISO-4217-Währung. Verwenden Sie dafür nie binäre Gleitkommazahlen.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-4217-Währungscode.

    • paymentsarray<Payment>Pflicht

      Onlinezahlungen (höchstens 50). Zahlungen an der Rezeption sind nur in paid enthalten.

      Felder anzeigen (5)
      • idstring (uuid)Pflicht
      • statusstringPflicht

        Werte: "requires_action", "authorized", "captured", "partially_refunded", "refunded", "failed", "cancelled", "expired", "unknown"

      • methodstringPflicht

        Werte: "bank_transfer", "provider_checkout", "credit_card", "paypal", "google_pay", "apple_pay", "eps", "point_of_sale", "other"

      • amountMoneyPflicht

        Geldbetrag: Dezimal-String mit genau zwei Nachkommastellen und einer ISO-4217-Währung. Verwenden Sie dafür nie binäre Gleitkommazahlen.

        Felder anzeigen (2)
        • amountstringPflicht

          Dezimal-String, genau zwei Nachkommastellen.

        • currencystringPflicht

          ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    Retry-After
    Sekunden bis zum nächsten Versuch.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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"
Beispiel, 200
{
  "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

Bucht 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

NameOrtTypBeschreibung
invoiceIdPflichtpathstring (uuid)-

Header

NameOrtTypBeschreibung
Idempotency-KeyPflichtheaderstring

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 application/json, Pflicht

Eingegangene Überweisung.

  • amountMoneyPflicht

    Betrag in Rechnungswährung, höchstens der offene Betrag.

    Felder anzeigen (2)
    • amountstringPflicht

      Dezimal-String, genau zwei Nachkommastellen.

    • currencystringPflicht

      ISO-4217-Währungscode.

  • paidAtstring | null (date)

    Valutadatum (Standard heute).

  • referencestring | null

    Bankreferenz (max. 140).

Antworten

  • 201Gebuchte Zahlung.application/json
    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.
    Idempotent-Replayed
    true, wenn die Antwort das gespeicherte Ergebnis einer früheren Anfrage mit demselben Idempotency-Key ist.
    • invoiceIdstring (uuid)Pflicht

      Rechnung.

    • methodstringPflicht

      Immer bank_transfer.

    • amountMoneyPflicht

      Gebuchter Betrag.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-4217-Währungscode.

    • invoiceStatusstringPflicht

      Rechnungsstatus danach (issued, partially_paid, paid, …).

    • outstandingMoneyPflicht

      Offener Betrag danach.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    Retry-After
    Sekunden bis zum nächsten Versuch.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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"
}'
Beispiel, 201
{
  "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

Ausgestellte Rechnungen, Korrekturen und Gutschriften (nie Entwürfe), sortiert nach updatedAt, id.

Scopes: invoices:readoperationId listInvoices

Parameter, query

NameOrtTypBeschreibung
limitqueryinteger

Seitengröße 1-200 (Standard 50).

cursorquerystring

nextCursor der vorherigen Seite. Alle anderen Parameter unverändert lassen.

updated_sincequerystring (date-time)

RFC-3339-Zeitstempel; liefert Einträge mit updatedAt >= Wert. Über id + updatedAt deduplizieren.

bookingIdquerystring (uuid)

Nur Belege dieser Buchung.

Antworten

  • 200Rechnungen.application/json
    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.
    • dataarray<Invoice>Pflicht

      Einträge dieser Seite, aufsteigend nach updatedAt, dann id sortiert.

      Felder anzeigen (12)
      • idstring (uuid)Pflicht
      • numberstring | nullPflicht

        Rechnungsnummer.

      • typestringPflicht

        Werte: "invoice", "correction", "credit_note"

      • bookingIdstring | null (uuid)Pflicht
      • statusstringPflicht

        Werte: "issued", "partially_paid", "paid", "overdue", "cancelled", "credited"

      • issuedAtstring | null (date-time)Pflicht
      • totalobjectPflicht

        Bruttobetrag.

        Felder anzeigen (2)
        • amountstringPflicht

          Dezimal-String, genau zwei Nachkommastellen.

        • currencystringPflicht

          ISO-4217-Währungscode.

      • netMoneyPflicht

        Geldbetrag: Dezimal-String mit genau zwei Nachkommastellen und einer ISO-4217-Währung. Verwenden Sie dafür nie binäre Gleitkommazahlen.

        Felder anzeigen (2)
        • amountstringPflicht

          Dezimal-String, genau zwei Nachkommastellen.

        • currencystringPflicht

          ISO-4217-Währungscode.

      • taxMoneyPflicht

        Geldbetrag: Dezimal-String mit genau zwei Nachkommastellen und einer ISO-4217-Währung. Verwenden Sie dafür nie binäre Gleitkommazahlen.

        Felder anzeigen (2)
        • amountstringPflicht

          Dezimal-String, genau zwei Nachkommastellen.

        • currencystringPflicht

          ISO-4217-Währungscode.

      • outstandingMoneyPflicht

        Geldbetrag: Dezimal-String mit genau zwei Nachkommastellen und einer ISO-4217-Währung. Verwenden Sie dafür nie binäre Gleitkommazahlen.

        Felder anzeigen (2)
        • amountstringPflicht

          Dezimal-String, genau zwei Nachkommastellen.

        • currencystringPflicht

          ISO-4217-Währungscode.

      • updatedAtstring (date-time)Pflicht
      • versionstringPflicht

        ETag-Wert ohne Anführungszeichen.

    • nextCursorstring | nullPflicht

      Undurchsichtiger Cursor für die nächste Seite; null auf der letzten Seite.

    • hasMorebooleanPflicht

      True, 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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    Retry-After
    Sekunden bis zum nächsten Versuch.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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"
Beispiel, 200
{
  "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

Kopf und Summen eines ausgestellten Belegs. Kein PDF in v1.

Scopes: invoices:readoperationId getInvoice

Parameter, path

NameOrtTypBeschreibung
invoiceIdPflichtpathstring (uuid)-

Header

NameOrtTypBeschreibung
If-None-Matchheaderstring

ETag, das Sie kennen; 304, wenn unverändert.

Antworten

  • 200Rechnung.application/json
    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.
    • idstring (uuid)Pflicht
    • numberstring | nullPflicht

      Rechnungsnummer.

    • typestringPflicht

      Werte: "invoice", "correction", "credit_note"

    • bookingIdstring | null (uuid)Pflicht
    • statusstringPflicht

      Werte: "issued", "partially_paid", "paid", "overdue", "cancelled", "credited"

    • issuedAtstring | null (date-time)Pflicht
    • totalobjectPflicht

      Bruttobetrag.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-4217-Währungscode.

    • netMoneyPflicht

      Geldbetrag: Dezimal-String mit genau zwei Nachkommastellen und einer ISO-4217-Währung. Verwenden Sie dafür nie binäre Gleitkommazahlen.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-4217-Währungscode.

    • taxMoneyPflicht

      Geldbetrag: Dezimal-String mit genau zwei Nachkommastellen und einer ISO-4217-Währung. Verwenden Sie dafür nie binäre Gleitkommazahlen.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-4217-Währungscode.

    • outstandingMoneyPflicht

      Geldbetrag: Dezimal-String mit genau zwei Nachkommastellen und einer ISO-4217-Währung. Verwenden Sie dafür nie binäre Gleitkommazahlen.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-4217-Währungscode.

    • updatedAtstring (date-time)Pflicht
    • versionstringPflicht

      ETag-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    Retry-After
    Sekunden bis zum nächsten Versuch.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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"
Beispiel, 200
{
  "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

Alle 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/json
    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.
    • dataarray<WebhookEventTypeInfo>Pflicht

      Einträge dieser Seite, aufsteigend nach updatedAt, dann id sortiert.

      Felder anzeigen (2)
      • typestringPflicht

        Webhook-Ereignistyp.

        Werte: "booking.created", "booking.updated", "booking.cancelled", "guest.updated", "availability.changed", "rate.changed", "payment.updated", "unit.updated", "webhook.test"

      • descriptionstringPflicht

        Was das Ereignis auslöst.

    • nextCursorstring | nullPflicht

      Undurchsichtiger Cursor für die nächste Seite; null auf der letzten Seite.

    • hasMorebooleanPflicht

      True, 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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    Retry-After
    Sekunden bis zum nächsten Versuch.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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"
Beispiel, 200
{
  "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

Schließ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

NameOrtTypBeschreibung
Idempotency-KeyPflichtheaderstring

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 application/json, Pflicht

Anzulegende Beschränkung.

  • roomTypeIdstring (uuid)Pflicht

    Aktive Zimmerkategorie.

  • typestringPflicht

    closure (nicht verkaufbar), capacity_cap (höchstens capacity Einheiten), closed_to_arrival, closed_to_departure.

    Werte: "closure", "capacity_cap", "closed_to_arrival", "closed_to_departure"

  • fromstring (date)Pflicht

    Erster Tag (einschließlich).

  • tostring (date)Pflicht

    Letzter Tag (einschließlich), höchstens 500 Tage nach from.

  • capacityinteger | null

    Nur bei capacity_cap; 0 bis aktive Einheiten − 1.

  • namestring | null

    Bezeichnung für das Hotel (max. 120).

Antworten

  • 201Angelegte Beschränkung.application/json
    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.
    Idempotent-Replayed
    true, wenn die Antwort das gespeicherte Ergebnis einer früheren Anfrage mit demselben Idempotency-Key ist.
    • idstring (uuid)Pflicht

      ID der Beschränkung.

    • roomTypeIdstring (uuid)Pflicht

      Zimmerkategorie.

    • typestringPflicht

      Art der Beschränkung.

    • fromstring (date)Pflicht

      Erster Tag.

    • tostring (date)Pflicht

      Letzter Tag.

    • capacityinteger | null

      Obergrenze bei capacity_cap.

    • namestring | null

      Bezeichnung.

    • createdAtstring (date-time)Pflicht

      Anlagezeitpunkt.

    {
      "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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    Retry-After
    Sekunden bis zum nächsten Versuch.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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"
}'
Beispiel, 201
{
  "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

Entfernt 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

NameOrtTypBeschreibung
restrictionIdPflichtpathstring (uuid)-

Antworten

  • 200Gelöschte Beschränkung.application/json
    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.
    • idstring (uuid)Pflicht

      ID der Beschränkung.

    • roomTypeIdstring (uuid)Pflicht

      Zimmerkategorie.

    • typestringPflicht

      Art der Beschränkung.

    • fromstring (date)Pflicht

      Erster Tag.

    • tostring (date)Pflicht

      Letzter Tag.

    • capacityinteger | null

      Obergrenze bei capacity_cap.

    • namestring | null

      Bezeichnung.

    • createdAtstring (date-time)Pflicht

      Anlagezeitpunkt.

    {
      "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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    Retry-After
    Sekunden bis zum nächsten Versuch.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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"
Beispiel, 200
{
  "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

Setzt 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

NameOrtTypBeschreibung
Idempotency-Keyheaderstring

Optionaler Idempotenz-Schlüssel, gleiche Regeln wie bei POST.

Request-Body application/json, Pflicht

Tagespreise.

  • roomTypeIdstring (uuid)Pflicht

    Aktive Zimmerkategorie.

  • pricesarray<RatePriceInput>Pflicht

    1-366 Tage, jedes Datum einmal, innerhalb von 366 Tagen.

    Felder anzeigen (2)
    • datestring (date)Pflicht

      Tag (heute oder später).

    • priceMoney | null

      Preis pro Nacht in der Hotelwährung oder null.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-4217-Währungscode.

Antworten

  • 200Ergebnis.application/json
    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.
    Idempotent-Replayed
    true, wenn die Antwort das gespeicherte Ergebnis einer früheren Anfrage mit demselben Idempotency-Key ist.
    • roomTypeIdstring (uuid)Pflicht

      Zimmerkategorie.

    • fromstring (date)Pflicht

      Erster betroffener Tag.

    • tostring (date)Pflicht

      Letzter betroffener Tag.

    • changedintegerPflicht

      Tage mit neuem Preis.

    • unchangedintegerPflicht

      Tage, die diesen Preis schon hatten oder nichts zum Zurücksetzen.

    • resetintegerPflicht

      Auf 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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    Retry-After
    Sekunden bis zum nächsten Versuch.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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+json
    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.
    • typestring (uri)Pflicht

      URI der Fehlerdokumentation.

    • titlestringPflicht

      Kurze Zusammenfassung der Fehlerklasse.

    • statusintegerPflicht

      HTTP-Statuscode.

    • detailstring

      Erklärung dieses konkreten Falls für Menschen.

    • instancestring

      Request-Pfad.

    • codestringPflicht

      Stabiler 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"

    • requestIdstringPflicht

      Gleicher Wert wie der Antwort-Header X-Request-Id; nennen Sie ihn dem Support.

    • errorsarray<object>

      Feldfehler bei validation_failed.

      Felder anzeigen (2)
      • fieldstringPflicht

        Feld der Anfrage (Punktnotation).

      • messagestringPflicht

        Was daran falsch ist.

    • currentTotalobject

      conflict bei POST /bookings: der aktuelle Serverpreis.

      Felder anzeigen (2)
      • amountstringPflicht

        Dezimal-String, genau zwei Nachkommastellen.

      • currencystringPflicht

        ISO-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
    }
  ]
}'
Beispiel, 200
{
  "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

Eine 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

NameOrtTypBeschreibung
STRYK-Event-IdPflichtheaderstring

Ereignis-ID (gleich der id im Body).

STRYK-Event-TypePflichtheaderstring

Ereignistyp.

STRYK-Delivery-IdPflichtheaderstring

ID dieser Zustellung (je Endpunkt verschieden).

STRYK-Delivery-AttemptPflichtheaderstring

Versuchsnummer, 1-8.

STRYK-SignaturePflichtheaderstring

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 application/json, Pflicht

  • idstringPflicht

    Ereignis-ID (evt_<uuid>); deduplizieren Sie darüber.

  • typestringPflicht

    Webhook-Ereignistyp.

    Werte: "booking.created", "booking.updated", "booking.cancelled", "guest.updated", "availability.changed", "rate.changed", "payment.updated", "unit.updated", "webhook.test"

  • apiVersionstringPflicht
  • createdAtstring (date-time)Pflicht
  • hotelIdstringPflicht
  • dataobjectPflicht
    Felder anzeigen (8)
    • objectstringPflicht

      Werte: "booking", "guest", "availability", "rate", "payment", "webhook"

    • idstring

      Objekt-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.
Payload
{
  "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

Buchungsdaten 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

NameOrtTypBeschreibung
STRYK-Event-IdPflichtheaderstring

Ereignis-ID (gleich der id im Body).

STRYK-Event-TypePflichtheaderstring

Ereignistyp.

STRYK-Delivery-IdPflichtheaderstring

ID dieser Zustellung (je Endpunkt verschieden).

STRYK-Delivery-AttemptPflichtheaderstring

Versuchsnummer, 1-8.

STRYK-SignaturePflichtheaderstring

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 application/json, Pflicht

  • idstringPflicht

    Ereignis-ID (evt_<uuid>); deduplizieren Sie darüber.

  • typestringPflicht

    Webhook-Ereignistyp.

    Werte: "booking.created", "booking.updated", "booking.cancelled", "guest.updated", "availability.changed", "rate.changed", "payment.updated", "unit.updated", "webhook.test"

  • apiVersionstringPflicht
  • createdAtstring (date-time)Pflicht
  • hotelIdstringPflicht
  • dataobjectPflicht
    Felder anzeigen (8)
    • objectstringPflicht

      Werte: "booking", "guest", "availability", "rate", "payment", "webhook"

    • idstring

      Objekt-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.
Payload
{
  "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

Eine 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

NameOrtTypBeschreibung
STRYK-Event-IdPflichtheaderstring

Ereignis-ID (gleich der id im Body).

STRYK-Event-TypePflichtheaderstring

Ereignistyp.

STRYK-Delivery-IdPflichtheaderstring

ID dieser Zustellung (je Endpunkt verschieden).

STRYK-Delivery-AttemptPflichtheaderstring

Versuchsnummer, 1-8.

STRYK-SignaturePflichtheaderstring

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 application/json, Pflicht

  • idstringPflicht

    Ereignis-ID (evt_<uuid>); deduplizieren Sie darüber.

  • typestringPflicht

    Webhook-Ereignistyp.

    Werte: "booking.created", "booking.updated", "booking.cancelled", "guest.updated", "availability.changed", "rate.changed", "payment.updated", "unit.updated", "webhook.test"

  • apiVersionstringPflicht
  • createdAtstring (date-time)Pflicht
  • hotelIdstringPflicht
  • dataobjectPflicht
    Felder anzeigen (8)
    • objectstringPflicht

      Werte: "booking", "guest", "availability", "rate", "payment", "webhook"

    • idstring

      Objekt-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.
Payload
{
  "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

Kontaktdaten 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

NameOrtTypBeschreibung
STRYK-Event-IdPflichtheaderstring

Ereignis-ID (gleich der id im Body).

STRYK-Event-TypePflichtheaderstring

Ereignistyp.

STRYK-Delivery-IdPflichtheaderstring

ID dieser Zustellung (je Endpunkt verschieden).

STRYK-Delivery-AttemptPflichtheaderstring

Versuchsnummer, 1-8.

STRYK-SignaturePflichtheaderstring

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 application/json, Pflicht

  • idstringPflicht

    Ereignis-ID (evt_<uuid>); deduplizieren Sie darüber.

  • typestringPflicht

    Webhook-Ereignistyp.

    Werte: "booking.created", "booking.updated", "booking.cancelled", "guest.updated", "availability.changed", "rate.changed", "payment.updated", "unit.updated", "webhook.test"

  • apiVersionstringPflicht
  • createdAtstring (date-time)Pflicht
  • hotelIdstringPflicht
  • dataobjectPflicht
    Felder anzeigen (8)
    • objectstringPflicht

      Werte: "booking", "guest", "availability", "rate", "payment", "webhook"

    • idstring

      Objekt-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.
Payload
{
  "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

Verkaufbare 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

NameOrtTypBeschreibung
STRYK-Event-IdPflichtheaderstring

Ereignis-ID (gleich der id im Body).

STRYK-Event-TypePflichtheaderstring

Ereignistyp.

STRYK-Delivery-IdPflichtheaderstring

ID dieser Zustellung (je Endpunkt verschieden).

STRYK-Delivery-AttemptPflichtheaderstring

Versuchsnummer, 1-8.

STRYK-SignaturePflichtheaderstring

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 application/json, Pflicht

  • idstringPflicht

    Ereignis-ID (evt_<uuid>); deduplizieren Sie darüber.

  • typestringPflicht

    Webhook-Ereignistyp.

    Werte: "booking.created", "booking.updated", "booking.cancelled", "guest.updated", "availability.changed", "rate.changed", "payment.updated", "unit.updated", "webhook.test"

  • apiVersionstringPflicht
  • createdAtstring (date-time)Pflicht
  • hotelIdstringPflicht
  • dataobjectPflicht
    Felder anzeigen (8)
    • objectstringPflicht

      Werte: "booking", "guest", "availability", "rate", "payment", "webhook"

    • idstring

      Objekt-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.
Payload
{
  "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

Tagespreise 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

NameOrtTypBeschreibung
STRYK-Event-IdPflichtheaderstring

Ereignis-ID (gleich der id im Body).

STRYK-Event-TypePflichtheaderstring

Ereignistyp.

STRYK-Delivery-IdPflichtheaderstring

ID dieser Zustellung (je Endpunkt verschieden).

STRYK-Delivery-AttemptPflichtheaderstring

Versuchsnummer, 1-8.

STRYK-SignaturePflichtheaderstring

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 application/json, Pflicht

  • idstringPflicht

    Ereignis-ID (evt_<uuid>); deduplizieren Sie darüber.

  • typestringPflicht

    Webhook-Ereignistyp.

    Werte: "booking.created", "booking.updated", "booking.cancelled", "guest.updated", "availability.changed", "rate.changed", "payment.updated", "unit.updated", "webhook.test"

  • apiVersionstringPflicht
  • createdAtstring (date-time)Pflicht
  • hotelIdstringPflicht
  • dataobjectPflicht
    Felder anzeigen (8)
    • objectstringPflicht

      Werte: "booking", "guest", "availability", "rate", "payment", "webhook"

    • idstring

      Objekt-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.
Payload
{
  "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

Der 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

NameOrtTypBeschreibung
STRYK-Event-IdPflichtheaderstring

Ereignis-ID (gleich der id im Body).

STRYK-Event-TypePflichtheaderstring

Ereignistyp.

STRYK-Delivery-IdPflichtheaderstring

ID dieser Zustellung (je Endpunkt verschieden).

STRYK-Delivery-AttemptPflichtheaderstring

Versuchsnummer, 1-8.

STRYK-SignaturePflichtheaderstring

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 application/json, Pflicht

  • idstringPflicht

    Ereignis-ID (evt_<uuid>); deduplizieren Sie darüber.

  • typestringPflicht

    Webhook-Ereignistyp.

    Werte: "booking.created", "booking.updated", "booking.cancelled", "guest.updated", "availability.changed", "rate.changed", "payment.updated", "unit.updated", "webhook.test"

  • apiVersionstringPflicht
  • createdAtstring (date-time)Pflicht
  • hotelIdstringPflicht
  • dataobjectPflicht
    Felder anzeigen (8)
    • objectstringPflicht

      Werte: "booking", "guest", "availability", "rate", "payment", "webhook"

    • idstring

      Objekt-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.
Payload
{
  "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

Der 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

NameOrtTypBeschreibung
STRYK-Event-IdPflichtheaderstring

Ereignis-ID (gleich der id im Body).

STRYK-Event-TypePflichtheaderstring

Ereignistyp.

STRYK-Delivery-IdPflichtheaderstring

ID dieser Zustellung (je Endpunkt verschieden).

STRYK-Delivery-AttemptPflichtheaderstring

Versuchsnummer, 1-8.

STRYK-SignaturePflichtheaderstring

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 application/json, Pflicht

  • idstringPflicht

    Ereignis-ID (evt_<uuid>); deduplizieren Sie darüber.

  • typestringPflicht

    Webhook-Ereignistyp.

    Werte: "booking.created", "booking.updated", "booking.cancelled", "guest.updated", "availability.changed", "rate.changed", "payment.updated", "unit.updated", "webhook.test"

  • apiVersionstringPflicht
  • createdAtstring (date-time)Pflicht
  • hotelIdstringPflicht
  • dataobjectPflicht
    Felder anzeigen (8)
    • objectstringPflicht

      Werte: "booking", "guest", "availability", "rate", "payment", "webhook"

    • idstring

      Objekt-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.
Payload
{
  "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

Testereignis 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

NameOrtTypBeschreibung
STRYK-Event-IdPflichtheaderstring

Ereignis-ID (gleich der id im Body).

STRYK-Event-TypePflichtheaderstring

Ereignistyp.

STRYK-Delivery-IdPflichtheaderstring

ID dieser Zustellung (je Endpunkt verschieden).

STRYK-Delivery-AttemptPflichtheaderstring

Versuchsnummer, 1-8.

STRYK-SignaturePflichtheaderstring

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 application/json, Pflicht

  • idstringPflicht

    Ereignis-ID (evt_<uuid>); deduplizieren Sie darüber.

  • typestringPflicht

    Webhook-Ereignistyp.

    Werte: "booking.created", "booking.updated", "booking.cancelled", "guest.updated", "availability.changed", "rate.changed", "payment.updated", "unit.updated", "webhook.test"

  • apiVersionstringPflicht
  • createdAtstring (date-time)Pflicht
  • hotelIdstringPflicht
  • dataobjectPflicht
    Felder anzeigen (8)
    • objectstringPflicht

      Werte: "booking", "guest", "availability", "rate", "payment", "webhook"

    • idstring

      Objekt-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.
Payload
{
  "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"
  }
}