Flukto Pulse API
Ein öffentliches JSON mit dem lebenden Flukto-Puls: wie viele Menschen weltweit auf Sendung sind, wo die Karte warm ist, und, wenn du uns sagst, wo du bist, wie viele in deiner Stadt auf Sendung sind. Gedacht für Gadgets, Schreibtisch-Anzeigen, Widgets und Webseiten. Kein Schlüssel, keine Anmeldung.
Der Aufruf
GET https://flukto.com/api/v1/pulse
Optionale Parameter:
| Parameter | Bedeutung |
|---|---|
lat, lng | Deine Position in Dezimalgrad. Wird bei uns auf 0,01° (etwa 1 km) gerundet. Liefert near. |
city | Ein Stadtname statt Koordinaten, z. B. city=K%C3%B6ln. Liefert near. |
compact=1 | Lässt cells weg. Für kleine Geräte, die nur Zahlen zeigen. |
lang | en (Vorgabe), de, ru: Sprache der fertigen text-Zeilen. |
Die Antwort
{
"v": 1,
"now": "2026-10-06T08:12:21.000Z",
"at": "2026-10-06T08:12:00.000Z",
"ttl": 20,
"world": { "on_air": 29, "reachable": 12, "accounts": 128, "cities": 4,
"text": "41 erreichbar · 4 Städte wach" },
"cells": [[50.47, 5.7, 0.75, 2], [51.41, 6.36, 0.65, 3]],
"near": { "name": "Köln", "country": "DE", "on_air": 7, "at_least": 7,
"notes": 3, "warm": 0.6, "text": "7 auf Sendung in Köln" },
"links": { "app": "https://flukto.com/get", "docs": "https://flukto.com/api",
"logo": "https://flukto.com/assets/logo.svg",
"wordmark": "https://flukto.com/assets/wordmark.svg" }
}
- now ist die Serverzeit (praktisch für Geräte ohne Uhr); at ist der Zeitpunkt der Zählung; ttl sagt, wie viele Sekunden du bis zur nächsten Frage wartest. Öfter fragen bringt nur dieselbe Antwort aus dem Cache.
- world.on_air: Menschen gerade auf Sendung, weltweit. reachable: Menschen, die nicht auf Sendung, aber offen für ein Gespräch sind (Schalter an, App in den letzten 100 Tagen geöffnet, auf einem Telefon noch angemeldet; sie stehen als ruhender Punkt auf der Karte). accounts: bestehende Konten. cities: Städte mit mindestens einem Menschen auf Sendung.
- cells ist die Wärmekarte zum Zeichnen eines Planeten: jeder Eintrag ist
[lat, lng, warm, res], der Mittelpunkt einer warmen Wabe, ihre Wärme von 0 bis 1 und ihre Größe:res 2ist etwa 150 km breit,res 3etwa 60 km. Ein weicher Fleck je Eintrag, und du hast den Flukto-Globus. - near kommt nur mit
lat/lngodercity. on_air ist die Zahl der Menschen auf Sendung in dieser Stadt (eine Wabe von etwa 50 km). Unter fünf Menschen bleibt die Zahl weg:on_airistnull,at_leastist 1 (jemand ist auf Sendung) oder 0 (niemand). notes: Zettel, die dort liegen. warm: Wärme der Stadt auf der Karte, 0 bis 1. - text-Zeilen sind fertig zum Anzeigen, in der gewünschten Sprache.
Grenzen
Antworten liegen 20 Sekunden je URL im Cache. Jede IP-Adresse darf 30-mal pro Minute fragen; danach kommt 429 mit Retry-After. Die Antwort trägt Access-Control-Allow-Origin: *, ein Browser-Widget auf jeder Seite kann sie direkt lesen.
Was nicht drin ist
Keine Personen, keine Positionen, keine Profile. Die Zahlen sind dieselben k-anonymen Werte wie im World-Tab der App: eine Stadtzahl gibt es erst ab fünf Menschen, eine warme Wabe ist mindestens 60 km breit, und nichts in der Antwort führt zu einer Person zurück. Mehr unter Datenschutz.
Beispiele
Shell:
curl "https://flukto.com/api/v1/pulse?city=K%C3%B6ln&compact=1&lang=de"
Eine Zeile auf einer Webseite:
<span id="flukto">…</span>
<script>
fetch('https://flukto.com/api/v1/pulse?compact=1&lang=de')
.then(r => r.json())
.then(p => { document.getElementById('flukto').textContent = p.world.text; });
</script>
ESP32 (Arduino, ArduinoJson):
HTTPClient http;
http.begin(client, "https://flukto.com/api/v1/pulse?compact=1&lat=50.93&lng=6.96&lang=de");
if (http.GET() == 200) {
JsonDocument doc;
deserializeJson(doc, http.getStream());
long aufSendung = doc["world"]["on_air"];
const char *zeile = doc["near"]["text"]; // "7 auf Sendung in Köln"
}
http.end();
delay(20000); // ttl
Unser eigener Schreibtisch-Globus (ESP32-S3 mit 1,47"-Display) zeichnet den Planeten aus cells und zeigt world.on_air; die fertige Firmware liegt unter /gadgets, eine Browser-Vorschau unter /iot/esp32s3174.
Logo
Wer die Flukto-Zahlen zeigt, darf die Marke zeigen: logo.svg (das Sechseck) und wordmark.svg (Sechseck und Name), Glut #f2a25c auf Nacht #0b0e13. Farben und Form bleiben, wie sie sind.
Änderungen
Das Feld v benennt das Format. Felder können jederzeit dazukommen; bestehende behalten ihre Bedeutung. Muss etwas brechen, bekommt es eine neue Version, und diese Seite sagt es.