Flukto
SpracheDeutsch

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:

ParameterBedeutung
lat, lngDeine Position in Dezimalgrad. Wird bei uns auf 0,01° (etwa 1 km) gerundet. Liefert near.
cityEin Stadtname statt Koordinaten, z. B. city=K%C3%B6ln. Liefert near.
compact=1Lässt cells weg. Für kleine Geräte, die nur Zahlen zeigen.
langen (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" }
}

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.