Erfahren Sie alles über die Authentifizierung bei unseren APIs. Von der Token-Erstellung bis zur sicheren Implementierung in Ihrer Anwendung.
Unsere APIs verwenden zwei Authentifizierungsmethoden, abhängig vom API-Typ:
Team Management, FlowTime, FlowTasks, FlowCRM, FlowContacts
→ Header-Authentifizierung (X-Team-UUID, X-User-UUID)
IP Geolocation, Email Verifier, Maps, YouTube Analytics
→ Bearer-Token-Authentifizierung
Bevor Sie die APIs nutzen können, benötigen Sie:
FlowSuite APIs verwenden eine Header-basierte Authentifizierung mit Team- und Benutzer-UUIDs. Diese Methode ermöglicht eine granulare Zugriffskontrolle auf Team-Ebene.
Allgemeine APIs verwenden die Standard Bearer-Token-Authentifizierung. Sie erstellen einen API-Token in Ihrem Profil und senden diesen im Authorization-Header mit.
Tokens können mit oder ohne Ablaufdatum erstellt werden. Tokens ohne Ablaufdatum bleiben bis zur manuellen Löschung gültig.
Sie können einen Token jederzeit regenerieren. Der alte Token wird dabei ungültig und ein neuer wird generiert.
Gelöschte Tokens werden sofort ungültig. Alle API-Anfragen mit diesem Token werden mit einem 401-Fehler abgelehnt.
In Ihrem Profil können Sie die Nutzung Ihrer Tokens verfolgen:
Gesamtzahl der API-Aufrufe
API-Aufrufe heute
API-Aufrufe diesen Monat
Speichern Sie Ihre Zugangsdaten sicher in Umgebungsvariablen:
# .env Datei (niemals committen!)
FLOWSUITE_TEAM_UUID=ihre-team-uuid-hier
FLOWSUITE_USER_UUID=ihre-benutzer-uuid-hier
FLOWSUITE_API_TOKEN=ihr-api-token-hier
Um Missbrauch zu verhindern und eine faire Nutzung zu gewährleisten, gelten folgende Limits:
| API-Typ | Limit | Zeitraum |
|---|---|---|
| FlowSuite APIs | 1000 Anfragen | pro Minute |
| Allgemeine APIs | 100 Anfragen | pro Minute |
Bei Überschreitung des Limits erhalten Sie einen HTTP 429 (Too Many Requests) Fehler.
curl -X GET "https://creativeskyline.de/api/team/info" \ -H "X-Team-UUID: ihre-team-uuid" \ -H "X-User-UUID: ihre-user-uuid" \ -H "Accept: application/json"
curl -X GET "https://creativeskyline.de/api/ip-geolocation?ip=8.8.8.8" \ -H "Authorization: Bearer ihr-api-token" \ -H "Accept: application/json"
$teamUuid = getenv('FLOWSUITE_TEAM_UUID');
$userUuid = getenv('FLOWSUITE_USER_UUID');
$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => 'https://creativeskyline.de/api/team/info',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'X-Team-UUID: ' . $teamUuid,
'X-User-UUID: ' . $userUuid,
'Accept: application/json',
],
]);
$response = curl_exec($ch);
$data = json_decode($response, true);
curl_close($ch);
const teamUuid = process.env.FLOWSUITE_TEAM_UUID;
const userUuid = process.env.FLOWSUITE_USER_UUID;
const response = await fetch('https://creativeskyline.de/api/team/info', {
method: 'GET',
headers: {
'X-Team-UUID': teamUuid,
'X-User-UUID': userUuid,
'Accept': 'application/json',
},
});
const data = await response.json();
console.log(data);
import os
import requests
team_uuid = os.environ.get('FLOWSUITE_TEAM_UUID')
user_uuid = os.environ.get('FLOWSUITE_USER_UUID')
headers = {
'X-Team-UUID': team_uuid,
'X-User-UUID': user_uuid,
'Accept': 'application/json',
}
response = requests.get('https://creativeskyline.de/api/team/info', headers=headers)
data = response.json()
print(data)
Fehlende oder ungültige Authentifizierung. Überprüfen Sie Ihre UUIDs oder den API-Token.
{
"success": false,
"error": "Ungültige Authentifizierung"
}
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"
}
Rate-Limit überschritten. Warten Sie einen Moment und versuchen Sie es erneut.
{
"success": false,
"error": "Rate limit exceeded",
"retry_after": 60
}
Hier ein Beispiel für robuste Fehlerbehandlung in JavaScript:
async function apiRequest(endpoint, options = {}) {
const headers = {
'X-Team-UUID': process.env.FLOWSUITE_TEAM_UUID,
'X-User-UUID': process.env.FLOWSUITE_USER_UUID,
'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;
}
}