🚀 Jetzt neu: FlowAI! Ein revolutionärer Chat mit personalisierten AI-Agenten. 🌟

API Authentifizierung
sicher und einfach

Erfahren Sie alles über die Authentifizierung bei unseren APIs. Von der Token-Erstellung bis zur sicheren Implementierung in Ihrer Anwendung.

🚀 Schnellstart

Überblick

Alle unsere APIs verwenden die gleiche Authentifizierungsmethode:

Einheitliche Bearer-Token-Authentifizierung

Alle APIs verwenden die gleiche Authentifizierungsmethode: Sende deinen persönlichen API-Key (pk_...) oder einen benutzerdefinierten Token (at_...) als Bearer Token im Authorization Header.

Verfügbare APIs: Team Management, FlowTime, FlowTasks, FlowCRM, FlowSend, IP Geolocation, Email Verifier, Maps, YouTube Analytics

Voraussetzungen

Bevor Sie die APIs nutzen können, benötigen Sie:

  1. 1 Ein registriertes Benutzerkonto bei Flow Suite
  2. 2 Melden Sie sich an und navigieren Sie zu Profil → API-Zugang
  3. 3 Ihr persönlicher API-Key (pk_...) ist dort direkt sichtbar und einsatzbereit

🔐 Authentifizierung

🎫 Bearer-Token-Authentifizierung

Alle APIs verwenden die Standard Bearer-Token-Authentifizierung. Senden Sie Ihren persönlichen API-Key (pk_...) oder einen benutzerdefinierten Token (at_...) im Authorization-Header mit.

Erforderliche Header:

Authorization: Bearer pk_dein_api_key_hier
Accept: application/json

Wo finden Sie Ihren API-Key:

  1. Melden Sie sich in Ihrem Account an
  2. Navigieren Sie zu Profil → API-Zugang
  3. Ihr persönlicher API-Key (pk_...) ist oben auf der Seite direkt sichtbar

Zwei Token-Typen:

pk_... Persönlicher Key — Automatisch für jeden Benutzer generiert. Immer unter Profil → API-Zugang sichtbar.
at_... Benutzerdefinierter Token — Manuell erstellt, mit optionalem Ablaufdatum. Ideal für separate Anwendungen.

Verwendete APIs:

Team Management FlowTime FlowTasks FlowCRM FlowSend IP Geolocation Email Verifier Maps Geocoding YouTube Analytics

🔑 Token-Verwaltung

Token-Lebenszyklus

Persönlicher Key (pk_...)

Wird automatisch für jeden Benutzer erstellt und ist immer unter Profil → API-Zugang sichtbar. Er kann jederzeit regeneriert werden — der alte Key wird dabei sofort ungültig.

Benutzerdefinierte Token (at_...)

Können mit oder ohne Ablaufdatum erstellt werden. Token ohne Ablaufdatum bleiben bis zur manuellen Löschung gültig. Ideal für separate Anwendungen oder Dienste.

Regenerierung

Sie können jeden Token jederzeit regenerieren. Der alte Token wird dabei ungültig und ein neuer wird generiert.

Löschung

Gelöschte Token werden sofort ungültig. Alle API-Anfragen mit diesem Token werden mit einem 401-Fehler abgelehnt.

Token-Statistiken

In Ihrem Profil können Sie die Nutzung Ihrer Tokens verfolgen:

Gesamt

Gesamtzahl der API-Aufrufe

Heute

API-Aufrufe heute

Monat

API-Aufrufe diesen Monat

🛡️ Sicherheitsrichtlinien

Best Practices

🚫 Niemals tun

  • • API-Keys in öffentlichen Repositories speichern
  • • Zugangsdaten im Frontend-Code oder in JavaScript hardcoden
  • • Tokens per E-Mail oder Chat teilen
  • • Einen Token für mehrere unabhängige Anwendungen verwenden

✅ Empfohlen

  • • Umgebungsvariablen für API-Keys verwenden
  • • Separate Token für Entwicklung und Produktion erstellen
  • • API-Keys regelmaessig rotieren (alle 90 Tage empfohlen)
  • • API-Aufrufe über einen Backend-Server durchführen
  • • HTTPS für alle API-Anfragen verwenden

Umgebungsvariablen

Speichern Sie Ihren API-Key sicher in Umgebungsvariablen:

# .env Datei (niemals committen!)
FLOWSUITE_API_KEY=pk_dein_api_key_hier

Rate Limiting

Um Missbrauch zu verhindern und eine faire Nutzung zu gewaehrleisten, gelten folgende Limits:

API-Typ Limit Zeitraum
Alle APIs 1000 Anfragen pro Minute

Bei Überschreitung des Limits erhalten Sie einen HTTP 429 (Too Many Requests) Fehler.

💻 Code-Beispiele

cURL

curl -X GET "https://creativeskyline.de/api/team" \
  -H "Authorization: Bearer pk_dein_api_key_hier" \
  -H "Accept: application/json"

PHP

$apiKey = getenv('FLOWSUITE_API_KEY');

$ch = curl_init();
curl_setopt_array($ch, [
    CURLOPT_URL => 'https://creativeskyline.de/api/team',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        'Authorization: Bearer ' . $apiKey,
        'Accept: application/json',
    ],
]);

$response = curl_exec($ch);
$data = json_decode($response, true);
curl_close($ch);

JavaScript (Fetch)

const apiKey = process.env.FLOWSUITE_API_KEY;

const response = await fetch('https://creativeskyline.de/api/team', {
    method: 'GET',
    headers: {
        'Authorization': `Bearer ${apiKey}`,
        'Accept': 'application/json',
    },
});

const data = await response.json();
console.log(data);

Python

import os
import requests

api_key = os.environ.get('FLOWSUITE_API_KEY')

headers = {
    'Authorization': f'Bearer {api_key}',
    'Accept': 'application/json',
}

response = requests.get('https://creativeskyline.de/api/team', headers=headers)
data = response.json()
print(data)

⚠️ Fehlerbehandlung

Authentifizierungsfehler

401 Unauthorized

Fehlende oder ungültige Authentifizierung. Überprüfen Sie Ihren API-Key im Authorization Header.

{
  "success": false,
  "error": "Ungültige Authentifizierung"
}
403 Forbidden

Sie haben keine Berechtigung für diese Aktion. Überprüfen Sie Ihre Modul-Berechtigungen oder das Abonnement.

{
  "success": false,
  "error": "Keine Berechtigung für dieses Modul"
}
429 Too Many Requests

Rate-Limit überschritten. Warten Sie einen Moment und versuchen Sie es erneut.

{
  "success": false,
  "error": "Rate limit exceeded",
  "retry_after": 60
}

Fehlerbehandlung implementieren

Hier ein Beispiel für robuste Fehlerbehandlung in JavaScript:

async function apiRequest(endpoint, options = {}) {
    const headers = {
        'Authorization': `Bearer ${process.env.FLOWSUITE_API_KEY}`,
        'Accept': 'application/json',
        ...options.headers,
    };

    try {
        const response = await fetch(endpoint, { ...options, headers });

        if (response.status === 401) {
            throw new Error('Ungültige Authentifizierung');
        }

        if (response.status === 403) {
            throw new Error('Keine Berechtigung');
        }

        if (response.status === 429) {
            const retryAfter = response.headers.get('Retry-After') || 60;
            throw new Error(`Rate-Limit erreicht. Warte ${retryAfter}s`);
        }

        return await response.json();
    } catch (error) {
        console.error('API-Fehler:', error.message);
        throw error;
    }
}