The Master IPSC API is a small public directory service for IPSC3-compatible clients such as Pi-Star, WPSD, and other dashboard or discovery tools. It publishes which IPSC3 servers are available and enough connection metadata for a client to offer those servers as selectable DMR masters.
The live endpoint is: https://api.ipsc3.net/
| Path | Use |
|---|---|
/ |
Main JSON server directory. |
/servers |
Alias for the main JSON server directory. |
/servers.json |
Alias for the main JSON server directory. |
/health |
Lightweight health check for monitoring. |
/registered?host=HOSTNAME |
Registration check used by IPSC3 daemon and dashboard startup. |
IPSC3 daemons and dashboards should check the master API before startup:
GET https://api.ipsc3.net/registered?host=ipsc3.vkdmr.com
The endpoint returns whether the supplied hostname is present in the master
server directory configuration. If registered is not
true, the IPSC3 service should log the failure and exit rather
than running an unlisted server.
{
"schema": "master-ipsc.registration.v1",
"status": "ok",
"registered": true,
"host": "ipsc3.vkdmr.com",
"matched": {
"id": "ipsc3-vkdmr",
"hostname": "ipsc3.vkdmr.com"
}
}
Each server has an id. This is the stable identifier clients
should store if they need to remember a selected IPSC3 server.
IDs are published by the master API and should be treated as opaque values.
Clients should not parse meaning from the ID string; use the separate
hostname, callsign_prefix, and mmdvm
fields for display and connection details.
The response is JSON. The top-level object contains a schema name, generation time, status, any refresh errors, and an array of servers.
{
"schema": "master-ipsc.servers.v1",
"status": "ok",
"generated_at_epoch": 1781654725,
"servers": [
{
"id": "ipsc3-vkdmr",
"hostname": "ipsc3.vkdmr.com",
"callsign_prefix": "VK",
"mmdvm": [
{
"address": "ipsc3.vkdmr.com",
"port": 62031,
"primary": true
}
],
"poc": [
{
"address": "ipsc3.vkdmr.com",
"control_port": 50700,
"transport": "tcp",
"primary": true
}
],
"talkgroups": [],
"special_talkgroups": []
}
]
}
| Field | Description |
|---|---|
id |
Stable server identifier. |
hostname |
Public IPSC3 hostname. |
callsign_prefix |
Primary callsign prefix served by this IPSC3 instance. |
ipsc3_version |
Version reported by the upstream IPSC3 server. |
mmdvm |
Array of MMDVM connection targets. |
poc |
Array of POC persistent-control connection targets. RTP details are supplied by the selected server after login. |
talkgroups |
Configured talkgroup metadata and routing policy. |
special_talkgroups |
Special IPSC3 control and data talkgroups. |
Talkgroup entries describe policy, not live activity. They are suitable for building client menus, validation, and documentation.
| Field | Description |
|---|---|
tg |
DMR talkgroup number. |
slot |
Default time slot, if defined. |
name |
Human-readable talkgroup name. |
mode |
Configured routing mode, usually static or dynamic. |
static |
Boolean convenience flag for static talkgroups. |
dynamic |
Boolean convenience flag for dynamic talkgroups. |
restrictions |
Array of policy flags, such as listen_only, one_way, local_only, or trunk_limited. |
trunks |
Array of enabled trunk names for that talkgroup, when restricted by trunk policy. |
| Type | Talkgroup | Purpose |
|---|---|---|
scan |
777 |
IPSC3 scan mode talkgroup. |
hangup |
400 |
Dynamic talkgroup hangup/cancel action. |
data |
9998 |
IPSC3 private data path for SMS, APRS/GPS, ARS, and related data services. |
parrot |
9990 |
IPSC3 parrot echo test service for group and private calls. |