ipsc3-net/1 is a public read-only feed for IPSC3 Net Console. It carries group-voice observations and participant metadata, not audio or control commands. No dashboard token, password, raw hotspot options, email address or peer network address is exposed.
GET https://SERVER/api/ipsc3net
Returns protocol, UTC Unix server_time in seconds, poll_seconds: 2 and talkgroups with talkgroup ID, name, default slot and routing mode.
GET https://SERVER/api/ipsc3net?talkgroup=505&since=1790000000&after=0
talkgroup is a positive 24-bit ID. since is UTC Unix seconds, bounded to the last 24 hours. after is an event ID for paging, initially zero. The endpoint reads at most a five-minute time slice and returns at most 500 events. Follow the returned next object exactly; it combines the time-window position and event cursor. When catching_up is false, wait two seconds before polling again.
events: string id, epoch-second time, event (call_start/call_end), numeric radio_id, string stream_id, protocol, peer ID, timeslot, and nullable duration_ms.active: radio ID, stream ID, protocol, peer ID, timeslot, epoch-second started and last_activity. Entries are recent group calls, not authoritative end events.people: RadioID identity, valid-callsign flag, city/state/country, GPS validity/coordinates/source/time and receiver coordinates/type for location plausibility checks. Unknown IDs may have no metadata row.next: since and after for the next request. Recent polls deliberately overlap 15 seconds; deduplicate events by ID and call copies by radio/stream and start time.history_truncated: requested recovery exceeded 24 hours. Preserve this as a collection gap.Only group_voice records are included. Private calls, GPS/data packets, registration events and mere presence do not create participants. The feed combines stored call starts/ends with current active-call observations; completeness still depends on records the server captured. Never describe recovered data as a confirmed spoken rollcall or silently claim exact duration when an ending is missing. Consumers must stop their on-air indication when contact is lost.
Queries use existing indexes, bounded windows, execution-time limits, a short result cache and a limit of three simultaneous new feed queries per process. No schema migration or voice-daemon changes are required. Invalid parameters return 400, excess concurrent work 429, and temporary database errors 503. Retry with backoff and retain the last successful cursor.
GET https://SERVER/downloads/ipsc3net
GET https://SERVER/downloads/ipsc3net?manifest=1
The first downloads ipsc3net.pyz; the manifest returns its version and lowercase SHA-256 digest. Use HTTPS and the same selected server for both. Updates must not restart an active net. See the client guide.