Callboard Open Callboard

Callboard for developers

Show which nets are on the air, a net's live status, and whether a station is logged, on your own site or app. The API is free and read-only, and needs no key or account.

It serves only what Callboard's public board and live pages already show anyone: nets, their schedules and how to join, and each session's live status. Notes, locations, what an assistant heard and anything else net control keeps private never leave Callboard.

Live status badge

The quickest way to show a net's status is an image. Put it on a club website, a newsletter or a net directory, and it stays current on its own.

WhenThe badge says
The net is on the airCallboard · On the air · 14 checked in
The net is scheduledCallboard · Next: Tue 7:00 PM CDT (in the net's own time zone)
The net hasn't met in six weeksCallboard · Not meeting lately
No such net, or it isn't scheduled yetCallboard · Not on the schedule

The image is at https://callboard.club/badge/<net>.svg, where <net> is the last part of the net's Callboard address (callboard.club/app/#/n/<net>). Link it to the net's live page, where anyone can check whether they're logged:

<a href="https://callboard.club/app/#/n/tristate-allstar/live">
  <img src="https://callboard.club/badge/tristate-allstar.svg"
       alt="Tri-State AllStar Net: live status on Callboard" height="20">
</a>

Net owners can copy this code, already filled in, from Share this net on their net's page in Callboard.

NetFinder and other directories

A net's owners can add its NetFinder listing in Callboard. The net's page then links to the listing, the API includes the listing name, and a directory can find the net by it. There are two ways for a directory to show live status:

By the Callboard net (recommended)

The directory stores the net's Callboard name with the listing, entered by whoever manages the listing, and uses /badge/<net>.svg as above. Because the listing's own manager chose the net, nobody else can attach a different net to it.

By the listing, with no setup

https://callboard.club/badge/netfinder/<listing>.svg works for every NetFinder listing, so one line in the listing page template covers the whole directory. It shows the badge of the Callboard net whose owners named that listing. When no net names it, or more than one does, the image is a transparent 1 by 1 pixel, so the listing shows nothing.

A listing named in Callboard is the net owners' own claim; Callboard doesn't check it with NetFinder. When both sides point at each other (the listing stores the Callboard net, and the Callboard net names the listing), the link is confirmed. /v1/netfinder/<listing> below returns every net that names a listing, so a directory can check.

The API

Every endpoint is GET (or HEAD) under this address. Responses are JSON, and any website may call them from the browser (CORS is open).

https://callboard.club/functions/v1/public/v1
EndpointWhat it answers
/netsNets on the air now (onAir) and starting in the next 24 hours (upcoming). Filters: node= (AllStarLink, EchoLink or IRLP node number), kind= (repeater, simplex, hf, allstar, echolink, irlp, dmr, dstar, ysf, m17, gmrs), service= (ham or gmrs), hours= (0 to 168).
/nets/<net>One net and its live session: how many are logged, who's up, who's next, how many are waiting, the script phase and who holds net control. When it's off the air, when it meets next.
/nets/<net>/checkins/<call>Is this station logged, where is it in line, is it up. K1XQZ/M matches K1XQZ.
/checkins/<call>Every net on the air where this station is logged.
/netfinder/<listing>The nets whose owners named this NetFinder listing, each with its live status. Usually one; treat more than one as unsettled.
/nets/<net>/badge.svg, /netfinder/<listing>/badge.svgThe badge images above, at their longer addresses.
/The API's name, version and a link to this page. Handy as a reachability check.

Example: one net

curl https://callboard.club/functions/v1/public/v1/nets/tristate-allstar
{
  "v": 1,
  "generatedAt": "2026-11-03T00:10:04.000Z",
  "net": {
    "id": "net-tristate", "slug": "tristate-allstar", "name": "Tri-State AllStar Net",
    "service": "ham", "status": "active", "description": "Weekly roundtable on the hub.",
    "schedule": { "weekdays": [1], "time": "20:00", "tz": "America/New_York", "durationMin": 60 },
    "access": [
      { "kind": "allstar", "label": "Node 1999", "detail": "Hub", "node": 1999 },
      { "kind": "repeater", "label": "147.090 MHz +0.6, tone 100.0" }
    ],
    "groups": [{ "key": "rf", "title": "On the repeater" }, { "key": "allstar", "title": "AllStar" }],
    "netfinder": "tri-state-allstar-net"
  },
  "session": {
    "id": "net-tristate-2026-11-03T01:00", "status": "live", "startedAt": "2026-11-03T00:59:12.000Z",
    "count": 14,
    "upNow": { "id": "c-7f3a", "call": "W1XQZ", "name": "Ann" },
    "phase": { "index": 4, "title": "AllStar check-ins", "kind": "checkins" },
    "nextUp": { "id": "c-91b0", "call": "K1XQZ", "name": "Bob" },
    "waiting": 6, "traffic": 1, "control": "K1NCS", "assistant": false
  },
  "next": null
}

Example: is a station logged?

curl https://callboard.club/functions/v1/public/v1/nets/tristate-allstar/checkins/K1XQZ
{
  "v": 1, "generatedAt": "2026-11-03T00:10:04.000Z",
  "net": "tristate-allstar", "netName": "Tri-State AllStar Net", "call": "K1XQZ",
  "onAir": true, "sessionId": "net-tristate-2026-11-03T01:00",
  "state": "waiting", "place": 1, "ahead": 0,
  "group": { "key": "allstar", "title": "AllStar" },
  "upNow": { "id": "c-7f3a", "call": "W1XQZ", "name": "Ann" }
}

state is off (net not on the air), notLogged, waiting, recheck, up, done or out. place (1 is next) and ahead are set only while waiting or re-checking.

Using it well

Questions

Building something with Callboard, or need something the API doesn't have yet? Write to support@cygnusstrategy.com. Use of the API is covered by the Terms of Use.