Open Repeater API documentation
Read-only REST API for repeater data and community news. Register on the site to get an API key from the API portal.
Authentication
Every request must include your API key. Pass it in one of these headers:
X-API-Key: or_your_key_here # or Authorization: Bearer or_your_key_here
Do not use your login JWT as the API key. Keys start with or_ and are shown on the API page after you sign in.
Base URL
http://localhost:3000/api/v1
Rate limits
1,000 requests per API key per day. The counter resets at midnight UTC. Response headers include X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset. A 429 response means the daily limit was reached.
Endpoints
List repeaters with optional filters and pagination.
http://localhost:3000/api/v1/repeaters?country=Kuwait&band=2m&mode=FM&status=active&page=1&limit=50
Full detail for a single repeater.
http://localhost:3000/api/v1/repeater/550e8400-e29b-41d4-a716-446655440000
Repeaters in a country by ISO 3166-1 alpha-2 code.
http://localhost:3000/api/v1/country/KW
Text search across callsign, city, and frequency.
http://localhost:3000/api/v1/search?q=GB3DA
Repeaters within a radius (km) of coordinates.
http://localhost:3000/api/v1/search?lat=29.3759&lng=47.9774&radius=25
Community news posts with pagination.
http://localhost:3000/api/v1/news?page=1&limit=16
Single news post by UUID.
http://localhost:3000/api/v1/news/550e8400-e29b-41d4-a716-446655440000
GET /repeaters
List public repeaters with optional filters.
| Parameter | Type | Description |
|---|---|---|
| country | string | Full country name, e.g. United Kingdom |
| band | string | 2m, 70cm, 23cm, etc. |
| mode | string | FM, DMR, Fusion, … |
| status | string | active or inactive |
| page | number | Page number (default 1) |
| limit | number | Results per page, max 200 (default 50) |
http://localhost:3000/api/v1/repeaters?country=United+Kingdom&band=2m&page=1
GET /repeater/{id}
Returns one repeater by UUID. Only approved or public repeaters are returned.
http://localhost:3000/api/v1/repeater/{uuid}
GET /country/{code}
Repeaters in a country using ISO 3166-1 alpha-2 codes (GB, US, AU, KW, …).
http://localhost:3000/api/v1/country/GB
GET /search
Text or geographic search.
| Parameter | Type | Description |
|---|---|---|
| q | string | Search callsign, city, or frequency |
| lat, lng, radius | numbers | Repeaters within radius (km) of coordinates |
| page, limit | numbers | Pagination (same as /repeaters) |
http://localhost:3000/api/v1/search?q=GB3DA
http://localhost:3000/api/v1/search?lat=51.45&lng=0.22&radius=50
GET /news
List community news posts (newest first). Same content shown on the News page.
| Parameter | Type | Description |
|---|---|---|
| page | number | Page number (default 1) |
| limit | number | Results per page, max 50 (default 16) |
http://localhost:3000/api/v1/news?page=1&limit=16
GET /news/{id}
Returns one news post by UUID.
http://localhost:3000/api/v1/news/{uuid}
Example response
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"callsign": "GB3DA",
"frequency": 145.6375,
"offset": -0.6,
"ctcss": 118.8,
"dcs": null,
"mode": "FM",
"band": "2m",
"country": "United Kingdom",
"city": "Dartford",
"lat": 51.4479,
"lng": 0.2194,
"coverage_km": 60,
"owner": "GB3DA Trust",
"status": "active",
"last_verified": "2026-06-02"
}News post object:
{
"id": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
"body": "New 2m repeater now active in London…",
"created_at": "2026-06-19T14:30:00.000Z",
"author": {
"display_name": "Mohammad",
"callsign": "M0XXX"
}
}Errors
| Parameter | Type | Description |
|---|---|---|
| 401 | Missing or invalid API key | |
| 403 | Account blocked | |
| 404 | Repeater or news post not found | |
| 429 | Daily limit exceeded | |
| 400 | Invalid query parameters |
Submitting data
The public API is read-only. To add repeaters, use the add repeater form while logged in. To publish news, use the News page after registering. Submissions go through moderation where applicable before they appear in API results.
