Unified API gateway for the Socialmesh mesh radio platform. All backend services are accessible from this domain, serving the Flutter app, web portals, and third-party integrations.
This page. API gateway documentation and service directory.
Aggregated health check across all downstream services. Returns individual service statuses and overall gateway health.
map.socialmesh.app —
Global node map, real-time positions, network stats.
GET /api/nodes — List all known mesh nodesGET /api/node/:id — Get a specific nodeGET /api/stats — Network statisticsGET /map — Interactive node mapGET /health — Health check
sigil.socialmesh.app —
Node identity card snapshots. Each sigil captures a node's personality
trait, encounter history, messaging stats, range records, hardware, and
firmware at a point in time. Sigils are procedurally generated visual
identities derived from the node number.
POST /api/sigil — Store a sigil card snapshot (node number, display name, hex ID, trait, encounter/message/co-seen counts, age, max distance, best SNR, role, hardware, firmware, first seen). Returns a shareable URL at socialmesh.app/sigil/:idGET /api/sigil/:id — Retrieve a sigil by ID. Returns all stored fields as camelCase JSONGET /api/sigil/:id/svg — Render the procedurally generated sigil geometry as SVG. Optional size param (64–1024px, default 300)GET /api/sigil/:id/wallet — Generate an Apple Wallet pass (.pkpass) for the sigil cardGET /health — Health check
aether.socialmesh.app —
Flight sharing, ground station receptions, distance leaderboard, and aggregate statistics.
Users schedule Meshtastic nodes on commercial flights and share them so
ground stations can attempt long-range LoRa reception.
POST /api/flight — Share a flight (flight number, route, node ID, schedule). Deduplicates on flight_number + node_id + departure.GET /api/flight/:id — Get a single flight with computed status (upcoming, in_flight, or completed)GET /api/flights — Search and filter flights. Query params: q (free text), departure, arrival, flight_number, active (true/false), sort (newest, oldest, departure, receptions), page, limitGET /api/flights/stats — Aggregate statistics: total flights, active flights, unique departures/arrivals, total receptions, max altitudeGET /api/flights/airports — Distinct airport codes with counts, for filter dropdownsGET /api/leaderboard — Top reception distances ranked globally. Optional limit param (default 50, max 100)GET /api/flight/:id/receptions — All ground station receptions for a specific flightGET /health — Health check
tak.socialmesh.app —
Cursor on Target (CoT) event gateway. Ingests
CoT XML via UDP multicast (SA network) or HTTP POST injection,
normalizes events, deduplicates, and streams to connected clients
via WebSocket.
GET /v1/tak/status — Gateway status: uptime, active entities, events received, listener state. Requires auth.GET /v1/tak/events — Get current event snapshot. Optional query since (UTC ms). Requires auth.POST /v1/tak/inject — Inject a CoT event via XML body or JSON. Requires auth.WS /v1/tak/stream — WebSocket event stream. Sends snapshot on connect, then real-time events. Auth via token query param.GET /health — Health checkPublic-facing web portals for browsing content are hosted separately on Firebase Hosting. These portals consume the APIs above via client-side requests.
All GET endpoints across every service are public.
POST endpoints require an X-API-Key header
when the respective service has key authentication enabled. The
Socialmesh Flutter app includes the key automatically.
Each downstream service enforces its own per-IP rate limits.
Typical limits are 20 POSTs and 120 GETs per minute per IP.
When exceeded, the service returns 429 Too Many Requests.
All services allow cross-origin requests from
socialmesh.app,
aether.socialmesh.app,
map.socialmesh.app,
and localhost.