SaufApp Werbekunden API
Version 1.0 · Basis-URL: https://saufapp.eu/api/advertiser
Übersicht
Die SaufApp Werbekunden-API ermöglicht Veranstaltern, Clubs und Bars ihre Events direkt in die SaufApp zu importieren und zu verwalten. Events erscheinen sofort auf der Karte und in der Event-Liste für alle SaufApp-Nutzer auf Mallorca.
Was ist möglich?
- Events erstellen, bearbeiten und löschen
- Events mit eigenem Branding (Sponsor-Label) kennzeichnen
- Externe Event-IDs für Synchronisation mit eurem System
- Ticket-Links und Website-URLs verknüpfen
- Teilnehmerzahlen und Statistiken abrufen
- Automatische Synchronisation via Webhook (auf Anfrage)
Basis-URL
https://saufapp.eu/api/advertiser
Datenformat
Alle Requests und Responses verwenden JSON. Der Content-Type: application/json Header muss bei POST/PUT-Requests gesetzt werden.
Authentifizierung
Es gibt zwei Möglichkeiten, sich zu authentifizieren:
Methode 1: Bearer Token (empfohlen für Web-Portale)
Nach dem Login erhältst du einen Token, der 24 Stunden gültig ist.
# Login → Token holen POST /api/advertiser/login # Token bei jedem Request mitsenden Authorization: Bearer eyJ1aWQiOjEsImlhdCI6...
Methode 2: API-Key + API-Secret (empfohlen für Server-zu-Server)
API-Key und Secret werden bei der Registrierung ausgestellt. Der Secret wird nur einmalig angezeigt – bitte sicher speichern!
# Bei GET-Requests reicht der API-Key X-API-Key: abc123... # Bei POST/PUT/DELETE zusätzlich Secret X-API-Key: abc123... X-API-Secret: def456...
Rate Limits
Bei Überschreitung des Limits wird HTTP 429 Too Many Requests zurückgegeben.
Fehlerbehandlung
Alle Fehlerantworten haben folgendes Format:
{
"error": "Beschreibung des Fehlers",
"hint": "Optionaler Hilfetext" // optional
}
HTTP Status-Codes
Account Registrierung
Neuen Werbekunden-Account anlegen. Nach der Registrierung wird der Account durch einen Admin freigeschaltet (i.d.R. innerhalb von 24h).
Request Body
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| name | string | Pflicht | Dein Name / Ansprechpartner |
| company | string | Pflicht | Firmenname |
| string | Pflicht | E-Mail für Login | |
| password | string | Pflicht | Mindestens 8 Zeichen |
| phone | string | Optional | Telefonnummer |
| website | string | Optional | Website-URL |
| description | string | Optional | Kurzbeschreibung eures Angebots |
Response
{
"message": "Registrierung erfolgreich – warten auf Admin-Freigabe",
"api_key": "a1b2c3d4e5f6...", // 48 Zeichen, für X-API-Key Header
"api_secret": "x9y8z7w6...", // 64 Zeichen, NUR JETZT sichtbar!
"note": "Bitte API-Key und Secret sicher speichern"
}
Login
Login für Werbekunden-Portal und Token-Generierung.
Request Body
{
"email": "info@meinclub.de",
"password": "MeinPasswort123"
}
Response
{
"token": "eyJ1aWQiOjEsImlhdCI6...", // 24h gültig
"api_key": "a1b2c3...",
"expires_in": 86400,
"advertiser": {
"id": 1,
"name": "Max Mustermann",
"company": "Beach Club Palma",
"status": "active"
}
}
Account-Info
Informationen zum eigenen Account abrufen.
// Response { "advertiser": { "id": 1, "name": "Max Mustermann", "company": "Beach Club Palma", "email": "info@beachclub.de", "status": "active", "api_key": "a1b2c3...", "events_per_month": 10, "events_this_month": 3 } }
Statistiken
{
"total_events": 15,
"active_events": 3,
"total_attendees": 247,
"events_this_month": 3,
"events_per_month": 10,
"remaining_this_month": 7,
"account_status": "active"
}
Event erstellen
Neues Event erstellen. Erscheint sofort auf der SaufApp-Karte für alle Nutzer.
Request Body
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| title | string | Pflicht | Event-Titel (max. 200 Zeichen) |
| starts_at | ISO8601 | Pflicht | Startzeit, z.B. 2026-06-01T20:00:00 |
| lat | float | Pflicht | Breitengrad, z.B. 39.5296 |
| lng | float | Pflicht | Längengrad, z.B. 2.6920 |
| description | string | Optional | Ausführliche Beschreibung |
| address | string | Optional | Adresse / Veranstaltungsort |
| ends_at | ISO8601 | Optional | Endzeit |
| type | string | Optional | Siehe Event-Typen |
| entry_price | float | Optional | Eintrittspreis in EUR, z.B. 10.00 |
| dress_code | string | Optional | z.B. "Beach Casual" |
| max_guests | int | Optional | Maximale Gästezahl (0 = unbegrenzt) |
| ticket_url | string | Optional | Link zu Ticket-Plattform |
| external_id | string | Optional | Eure interne Event-ID (für Duplikat-Prüfung) |
| external_url | string | Optional | Link zur Event-Seite auf eurer Website |
| sponsor_label | string | Optional | Branding-Text, z.B. "Powered by Beach Club Palma" |
| is_public | bool | Optional | Standard: true |
Response (201 Created)
{
"event_id": 42,
"message": "Event erfolgreich erstellt",
"event_url": "/api/events/42",
"remaining": 7 // verbleibende Events diesen Monat
}
Events auflisten
{
"events": [
{
"id": 42,
"title": "Opening Night",
"type": "beach_party",
"starts_at": "2026-06-01 20:00:00",
"address": "Ballermann 6",
"status": "active",
"attendee_count": 83,
"external_id": "EVT-12345",
"ticket_url": "https://tickets.example.com/..."
}
],
"total": 1,
"events_this_month": 3,
"events_per_month": 10
}
Event aktualisieren
Bestehende Event-Daten aktualisieren. Nur eigene Events können geändert werden.
Alle Felder außer title, starts_at, lat, lng können aktualisiert werden. Nur geänderte Felder müssen übermittelt werden.
// Beispiel: Nur Uhrzeit und Preis ändern { "starts_at": "2026-06-01T21:00:00", "entry_price": 15.00 }
Event deaktivieren
Event deaktivieren (Status: cancelled). Das Event bleibt in der Datenbank, erscheint aber nicht mehr in der App. Nur eigene Events.
Event-Typen
| Wert | Beschreibung |
|---|---|
| beach_party | 🏖️ Strandparty |
| bar | 🍺 Bar / Pub |
| club | 🎵 Club / Discothek |
| boat_party | ⛵ Bootsparty |
| house_party | 🏠 Private Party |
| other | 📍 Sonstiges |
Code-Beispiele
JavaScript / Node.js
const API_BASE = 'https://saufapp.eu/api/advertiser'; const API_KEY = 'dein-api-key'; const API_SECRET = 'dein-api-secret'; async function createEvent(event) { const res = await fetch(`${API_BASE}/events`, { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-API-Key': API_KEY, 'X-API-Secret': API_SECRET, }, body: JSON.stringify(event), }); const data = await res.json(); if (!res.ok) throw new Error(data.error); return data; } // Beispiel-Aufruf createEvent({ title: 'Opening Night Beach Club', starts_at: '2026-06-15T20:00:00', lat: 39.5296, lng: 2.6920, address: 'Ballermann 6, Playa de Palma', type: 'beach_party', entry_price: 10.00, ticket_url: 'https://tickets.beachclub.de/opening', external_id: 'EVT-2026-001', });
PHP / cURL
// Event erstellen function createSaufAppEvent(array $event): array { $ch = curl_init('https://saufapp.eu/api/advertiser/events'); curl_setopt_array($ch, [ CURLOPT_POST => true, CURLOPT_POSTFIELDS => json_encode($event), CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', 'X-API-Key: ' . API_KEY, 'X-API-Secret: ' . API_SECRET, ], CURLOPT_RETURNTRANSFER => true, ]); $result = json_decode(curl_exec($ch), true); curl_close($ch); return $result; }
Python
import requests headers = { 'Content-Type': 'application/json', 'X-API-Key': 'dein-api-key', 'X-API-Secret': 'dein-api-secret', } res = requests.post( 'https://saufapp.eu/api/advertiser/events', headers=headers, json={ 'title': 'Opening Night', 'starts_at': '2026-06-15T20:00:00', 'lat': 39.5296, 'lng': 2.6920, } ) print(res.json())
Werbeportal
Neben der API bieten wir ein webbasiertes Werbeportal an: saufapp.eu/advertiser-portal
Im Portal können Werbekunden:
- Events manuell erstellen und verwalten
- Statistiken und Teilnehmerzahlen einsehen
- API-Keys verwalten und rotieren
- Rechnungen und Pakete buchen
SaufApp.eu Werbekunden API · Version 1.0 · © 2026 SaufApp