API Übersicht
Basis
- Base URL: https://studiorent.io/api
- Antwortformat: JSON (UTF-8)
Authentifizierung
Öffentliche Endpunkte erfordern keine Authentifizierung. Admin-Endpunkte erwarten einen Service-Token im Header Authorization: Bearer <token>.
Öffentliche Endpunkte
GET /api/public/[tenantSlug]/availability– Verfügbarkeit abrufenPOST /api/public/[tenantSlug]/bookings– Buchung erstellenPOST /api/public/[tenantSlug]/bookings/cancel– Buchung stornierenGET /api/public/[tenantSlug]/rooms– Räume auflistenGET /api/public/[tenantSlug]/packages– Pakete auflisten
Admin-Endpunkte (Token nötig)
GET /api/admin/[tenantId]/studios/list– Studios auflistenPOST /api/admin/[tenantId]/studios– Studio anlegenGET /api/admin/[tenantId]/rooms/list– Räume auflistenPOST /api/admin/[tenantId]/rooms– Raum anlegenGET /api/admin/[tenantId]/bookings/list– Buchungen auflistenPOST /api/admin/[tenantId]/bookings/[bookingId]/[action]– BuchungsaktionPOST /api/admin/[tenantId]/tokens/rotate– API-Token rotieren
Beispiele
Verfügbarkeit abfragen
fetch('https://studiorent.io/api/public/my-studio/availability?from=2025-08-01&to=2025-08-07')
.then(r => r.json())
.then(console.log);Buchung erstellen
await fetch('https://studiorent.io/api/public/my-studio/bookings', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
roomId: 'ROOM_ID',
start: '2025-08-01T10:00:00Z',
end: '2025-08-01T12:00:00Z',
customer: { name: 'Max Mustermann', email: 'max@example.com' }
})
});Admin-Request mit Token
await fetch('https://studiorent.io/api/admin/TENANT_ID/studios/list', {
headers: { Authorization: 'Bearer YOUR_TOKEN' }
});Rate Limits & Fehler
- 429 Too Many Requests bei zu vielen Anfragen
- 401 Unauthorized bei fehlendem/ungültigem Token
- 400 Bad Request bei ungültigen Parametern