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 abrufen
  • POST /api/public/[tenantSlug]/bookings – Buchung erstellen
  • POST /api/public/[tenantSlug]/bookings/cancel – Buchung stornieren
  • GET /api/public/[tenantSlug]/rooms – Räume auflisten
  • GET /api/public/[tenantSlug]/packages – Pakete auflisten

Admin-Endpunkte (Token nötig)

  • GET /api/admin/[tenantId]/studios/list – Studios auflisten
  • POST /api/admin/[tenantId]/studios – Studio anlegen
  • GET /api/admin/[tenantId]/rooms/list – Räume auflisten
  • POST /api/admin/[tenantId]/rooms – Raum anlegen
  • GET /api/admin/[tenantId]/bookings/list – Buchungen auflisten
  • POST /api/admin/[tenantId]/bookings/[bookingId]/[action] – Buchungsaktion
  • POST /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