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/
DMR_Hosts.txt records for every MMDVM listener.| 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": 55555,
"primary": true,
"label": "DMR+_IPSC3-VKDMR",
"dmr_id": 5050,
"password": "passw0rd",
"host_file_line": "DMR+_IPSC3-VKDMR\t5050\tipsc3.vkdmr.com\tpassw0rd\t55555"
}
],
"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. |
Every item in the mmdvm array represents one public MMDVM UDP
listener. The first item is the server's normal connection and has
primary: true. Any additional items are valid alternate ports.
Clients may continue using only address, port, and
primary; the Pi-Star fields are additive and backward compatible.
| Field | Type | Description |
|---|---|---|
address |
String | Public DNS name or address used by an MMDVM client. |
port |
Integer | Public UDP port for the MMDVM listener. |
primary |
Boolean | true for the preferred connection and false for an alternate listener. |
label |
String or null | Unique Pi-Star/WPSD display label. Alternate listeners append their port to the server's normal label. |
dmr_id |
Integer or null | Network ID used in the second field of a Pi-Star DMR_Hosts.txt record. |
password |
String | Public MMDVM master password required by the hotspot connection. Defaults to passw0rd when a server does not configure an override. |
host_file_line |
String or null | Complete tab-delimited Pi-Star host-file record ready to insert into /root/DMR_Hosts.txt. |
The generated host_file_line uses the normal Pi-Star field order:
Label<TAB>DMR-ID<TAB>Host<TAB>Password<TAB>Port
Consumers should preserve the tab delimiters rather than replacing them with
spaces. The primary entry keeps the normal server label. Alternate listener
entries add -PORT to that label so multiple records can coexist
without an ambiguous selector name. The advertised MMDVM password is a public
hotspot connection credential; it is not a dashboard or administrator
password. Servers may advertise an override, otherwise the master API emits
passw0rd for compatibility with existing Pi-Star and WPSD setups.
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. |