ISPCore API
A REST API to automate your ISP — manage clients, subscriptions, RADIUS sessions, fiber devices, billing and support, all over HTTPS with JSON.
https://your-server/docs and a machine-readable spec at /openapi.json. Those reflect your exact version. The examples below are illustrative of the resources available.
Introduction
The ISPCore API is organized around REST. It uses predictable resource-oriented URLs, accepts and returns JSON, and relies on standard HTTP verbs and status codes. The API runs on your own ISPCore server, so your data never leaves your infrastructure.
- All requests and responses use
application/json - All traffic is over HTTPS
- Resource collections support pagination and search
- Every endpoint is also visible in the interactive Swagger UI
Base URL
All endpoints are served from your installation's domain, under the /api/v1 prefix:
# your own ISPCore server https://your-server/api/v1
Authentication
Requests are authenticated with a bearer token issued from your panel (Settings → API). Send it in the Authorization header with every request.
curl https://your-server/api/v1/clients \ -H "Authorization: Bearer <your_token>"
Conventions
| Topic | Behavior |
|---|---|
| Pagination | List endpoints accept ?page and ?per_page; responses include total counts. |
| Search | Most collections accept ?q= for free-text search (name, code, username…). |
| Dates | ISO-8601 (2026-06-04 or full timestamps in UTC). |
| IDs | Stable string identifiers; clients also carry a human code like C-2026-00009. |
Errors
ISPCore uses conventional HTTP status codes. Errors return a JSON body with a detail message.
| Code | Meaning |
|---|---|
| 200 / 201 | Success |
| 400 | Invalid request / validation error |
| 401 | Missing or invalid token |
| 403 | Not allowed for this token / tenant |
| 404 | Resource not found |
| 429 | Rate limit exceeded |
{
"detail": "Client not found"
}
Clients
Manage your subscribers (customers). Each client carries contact details, status, location and PPPoE state.
?q=, ?status=, ?online= and pagination.Example response
GET /api/v1/clients/C-2026-00009 { "code": "C-2026-00009", "name": "prova1234", "phone": "0697926666", "city": "Tirane", "status": "active", "online": true, "ip_pppoe": "10.99.99.247", "location": { "lat": 41.3277, "lng": 19.8220 } }
Subscriptions
A subscription links a client to a service plan and tracks billing dates and connection state.
Plans
Read the service plans (speed/profile) available on your system.
RADIUS sessions
Read live PPPoE / RADIUS sessions and disconnect them remotely (CoA).
GET /api/v1/sessions?username=prova1234 { "username": "prova1234", "status": "online", "ip": "10.99.99.247", "mac": "D8:44:89:78:CF:29", "nas": "10.100.230.171", "uptime_s": 572700, "in_bytes": 7866941440, "out_bytes": 257698037 }
OLT / ONU
Inventory and control fiber equipment — GPON and EPON, across Huawei and ZTE.
/resync, /disable, /delete.GET /api/v1/onus/{id}/status { "serial": "ZXICCCBA21AF", "type": "ZTE-F660", "interface": "gpon_onu-1/4/1:2", "rx_power_dbm": -16.47, "tx_power_dbm": 2.61, "distance_m": 393, "vlan": 824, "status": "working" }
NAS & IP pools
Manage RADIUS NAS devices and IP address pools.
TR-069 / CPE
Manage customer premises equipment through the integrated ACS.
Billing & payments
Read invoices and record payments.
Tickets
Programmatic access to the built-in support desk.
Dashboard stats
Read the same metrics shown on your dashboard — useful for external monitoring.
GET /api/v1/stats { "active_clients": 8, "active_subscriptions": 9, "online_clients": 3, "live_download_mb": 7506.4, "revenue_month": 18500, "outstanding_debt": 1500 }
Interactive docs
Your ISPCore instance exposes a fully interactive reference where you can browse every endpoint, see exact schemas and try calls live:
- Swagger UI —
https://your-server/docs - OpenAPI spec (JSON) —
https://your-server/openapi.json