6.7 KiB
API Documentation
1. Chat API
GET /api/chat
Returns the most recent chat messages.
Query Parameters
limit(optional, int): Maximum number of messages to return. Default:100.
Response Example
{
"packets": [
{
"id": 123,
"import_time": "2025-07-22T12:45:00",
"from_node_id": 987654,
"from_node": "Alice",
"channel": "main",
"payload": "Hello, world!"
}
]
}
GET /api/chat/updates
Returns chat messages imported after a given timestamp.
Query Parameters
last_time(optional, ISO timestamp): Only messages imported after this time are returned.
Response Example
{
"packets": [
{
"id": 124,
"import_time": "2025-07-22T12:50:00",
"from_node_id": 987654,
"from_node": "Alice",
"channel": "main",
"payload": "New message!"
}
],
"latest_import_time": "2025-07-22T12:50:00"
}
2. Nodes API
GET /api/nodes
Returns a list of all nodes, with optional filtering by last seen.
Query Parameters
hours(optional, int): Return nodes seen in the last N hours.days(optional, int): Return nodes seen in the last N days.last_seen_after(optional, ISO timestamp): Return nodes seen after this time.
Response Example
{
"nodes": [
{
"node_id": 1234,
"long_name": "Alice",
"short_name": "A",
"channel": "main",
"last_seen": "2025-07-22T12:40:00",
"hardware": "T-Beam",
"firmware": "1.2.3",
"role": "client",
"last_lat": 37.7749,
"last_long": -122.4194
}
]
}
3. Packets API
GET /api/packets
Returns a list of packets with optional filters.
Query Parameters
limit(optional, int): Maximum number of packets to return. Default:200.since(optional, ISO timestamp): Only packets imported after this timestamp are returned.
Response Example
{
"packets": [
{
"id": 123,
"from_node_id": 5678,
"to_node_id": 91011,
"portnum": 1,
"import_time": "2025-07-22T12:45:00",
"payload": "Hello, Bob!"
}
]
}
4. Channels API
GET /api/channels
Returns a list of channels seen in a given time period.
Query Parameters
period_type(optional, string): Time granularity (hourorday). Default:hour.length(optional, int): Number of periods to look back. Default:24.
Response Example
{
"channels": ["LongFast", "MediumFast", "ShortFast"]
}
5. Statistics API
GET /api/stats
Retrieve packet statistics aggregated by time periods, with optional filtering.
Query Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
period_type |
string | No | hour |
Time granularity of the stats. Allowed values: hour, day. |
length |
integer | No | 24 | Number of periods to include (hours or days). |
channel |
string | No | — | Filter results by channel name (case-insensitive). |
portnum |
integer | No | — | Filter results by port number. |
to_node |
integer | No | — | Filter results to packets sent to this node ID. |
from_node |
integer | No | — | Filter results to packets sent from this node ID. |
Response
{
"period_type": "hour",
"length": 24,
"channel": "LongFast",
"portnum": 1,
"to_node": 12345678,
"from_node": 87654321,
"data": [
{
"period": "2025-08-08 14:00",
"count": 10
},
{
"period": "2025-08-08 15:00",
"count": 7
}
// more entries...
]
}
6. Edges API
GET /api/edges
Returns network edges (connections between nodes) based on traceroutes and neighbor info.
Query Parameters
type(optional, string): Filter by edge type (tracerouteorneighbor). If omitted, returns both types.
Response Example
{
"edges": [
{
"from": 12345678,
"to": 87654321,
"type": "traceroute"
},
{
"from": 11111111,
"to": 22222222,
"type": "neighbor"
}
]
}
7. Configuration API
GET /api/config
Returns the current site configuration (safe subset exposed to clients).
Response Example
{
"site": {
"domain": "meshview.example.com",
"language": "en",
"title": "Bay Area Mesh",
"message": "Real time data from around the bay area",
"starting": "/chat",
"nodes": "true",
"conversations": "true",
"everything": "true",
"graphs": "true",
"stats": "true",
"net": "true",
"map": "true",
"top": "true",
"map_top_left_lat": 39.0,
"map_top_left_lon": -123.0,
"map_bottom_right_lat": 36.0,
"map_bottom_right_lon": -121.0,
"map_interval": 3,
"firehose_interval": 3,
"weekly_net_message": "Weekly Mesh check-in message.",
"net_tag": "#BayMeshNet",
"version": "2.0.8 ~ 10-22-25"
},
"mqtt": {
"server": "mqtt.bayme.sh",
"topics": ["msh/US/bayarea/#"]
},
"cleanup": {
"enabled": "false",
"days_to_keep": "14",
"hour": "2",
"minute": "0",
"vacuum": "false"
}
}
8. Language/Translations API
GET /api/lang
Returns translation strings for the UI.
Query Parameters
lang(optional, string): Language code (e.g.,en,es). Defaults to site language setting.section(optional, string): Specific section to retrieve translations for.
Response Example (full)
{
"chat": {
"title": "Chat",
"send": "Send"
},
"map": {
"title": "Map",
"zoom_in": "Zoom In"
}
}
Response Example (section-specific)
Request: /api/lang?section=chat
{
"title": "Chat",
"send": "Send"
}
9. Version API
GET /version
Returns version information including semver and git revision.
Response Example
{
"version": "2.0.8 ~ 10-22-25",
"git_revision": "6416978a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q",
"git_revision_short": "6416978"
}
Notes
- All timestamps (
import_time,last_seen) are returned in ISO 8601 format. portnumis an integer representing the packet type.payloadis always a UTF-8 decoded string.- Node IDs are integers (e.g.,
12345678).