Einstieg
Schnellstart: der erste Aufruf in 5 Minuten
Du brauchst ein STRYK-Benutzerkonto mit dem Recht, Kanäle zu verwalten, und ein Terminal mit curl, Node.js 18+ oder Python 3.
1. Schlüssel in STRYK anlegen
- Kanal API öffnen
Öffne in STRYK Kanäle → API und wähle API-Schlüssel erstellen.
- Integration benennen
Wähle einen Namen, den dein Team später zuordnen kann, etwa „Buchungswebsite (Agentur Beispiel)“.
- Scopes wählen
Für diesen Schnellstart genügt Nur lesen. Vergib nur, was die Integration braucht; ein Schreibrecht schließt das Lesen desselben Bereichs ein. Siehe Scopes.
- Schlüssel kopieren
STRYK zeigt den Schlüssel ein einziges Mal. Lege ihn in deinem Passwortmanager oder Secret-Store ab. Geht er verloren, rotiere ihn.
export STRYK_API_KEY="stryk_live_…"2. GET /me aufrufen
GET /me funktioniert mit jedem gültigen Schlüssel und liefert Name, Scopes, Hotel und Rate-Limit des Schlüssels. So prüfst du deine Einrichtung am schnellsten.
curl https://app.staystryk.com/api/partner/v1/me \
-H "Authorization: Bearer $STRYK_API_KEY"// Node.js 18+ (built-in fetch). Run on your server, never in the browser.
const response = await fetch('https://app.staystryk.com/api/partner/v1/me', {
headers: { Authorization: `Bearer ${process.env.STRYK_API_KEY}` },
});
if (!response.ok) {
const problem = await response.json();
throw new Error(`${problem.code}: ${problem.detail}`);
}
console.log(await response.json());import os
import requests
response = requests.get(
"https://app.staystryk.com/api/partner/v1/me",
headers={"Authorization": f"Bearer {os.environ['STRYK_API_KEY']}"},
timeout=30,
)
response.raise_for_status()
print(response.json()){
"keyId": "6f0f3a52-41a8-4d7e-9a43-2b8f5d1c7e90",
"keyName": "Booking website",
"keyPrefix": "Hq7bT2xa",
"scopes": ["property:read", "availability:read", "rates:read"],
"hotel": { "id": "hotel-alpenblick", "name": "Hotel Alpenblick" },
"expiresAt": null,
"rateLimit": { "limit": 120, "windowSeconds": 60 }
}3. Zimmerkategorien lesen
Jetzt liest du echte Daten. GET /room-types liefert die Kategorien des Hotels mit Belegung, Beschreibungen je Sprache und Bildern.
curl "https://app.staystryk.com/api/partner/v1/room-types?limit=20" \
-H "Authorization: Bearer $STRYK_API_KEY"const response = await fetch('https://app.staystryk.com/api/partner/v1/room-types?limit=20', {
headers: { Authorization: `Bearer ${process.env.STRYK_API_KEY}` },
});
const { data, nextCursor, hasMore } = await response.json();
for (const roomType of data) {
console.log(roomType.name, roomType.maxOccupancy, roomType.images.length);
}response = requests.get(
"https://app.staystryk.com/api/partner/v1/room-types",
headers={"Authorization": f"Bearer {os.environ['STRYK_API_KEY']}"},
params={"limit": 20},
timeout=30,
)
response.raise_for_status()
page = response.json()
for room_type in page["data"]:
print(room_type["name"], room_type["maxOccupancy"], len(room_type["images"])){
"data": [
{
"id": "0b7e2c1d-5f4a-4c3b-9e8d-7a6b5c4d3e2f",
"name": "Double room with balcony",
"code": "DZB",
"description": { "de": "Doppelzimmer mit Balkon …", "en": "Double room with balcony …" },
"maxOccupancy": 3,
"maxAdults": 2,
"maxChildren": 1,
"standardOccupancy": 2,
"images": [{ "url": "https://…/dzb-1.jpg", "alt": "Room with balcony", "position": 1 }],
"unitCount": 8,
"active": true,
"updatedAt": "2026-11-02T09:41:12.000Z",
"version": "8c1d2e4f"
}
],
"nextCursor": null,
"hasMore": false
}Listen liefern data, nextCursor und hasMore. Ist hasMore true, übergib nextCursor als cursor für die nächste Seite, siehe Pagination.