15 minutes · the "hello world" of fleet automation
Who's Offline Right Now?
A one-command script that prints every router that's currently offline, with how long it's been down.
APIs used: GET /api/v2/routers/
Programmatic control of your Ericsson NetCloud Manager fleet — routers, subscriptions, private cellular, and real-time events. REST APIs, webhooks, and an LLM-ready reference.
No external code required. Everything you need is right here.
Log into NetCloud Manager, navigate to Tools → NetCloud API, and generate your API keys.
v3 (Recommended): You’ll get a Bearer token.
v2 (Legacy): You’ll get CP API-ID/key and ECM API-ID/key pairs.
# List your subscriptions using API v3
curl -H "Authorization: Bearer YOUR_TOKEN" \
"https://api.cradlepointecm.com/api/v3/subscriptions"{
"data": [
{
"id": "112345",
"name": "NetCloud Branch Essentials",
"start_time": "2026-01-15T00:00:00Z",
"end_time": "2027-01-15T00:00:00Z",
"quantity": 25,
"feature_list_id": "nc-branch-essentials"
}
],
"links": { "next": "/api/v3/subscriptions?page[after]=abc123" }
}That’s it. You’re in. Now explore the full API below.
Common gotchas:
/api/v3/ paths, API-key headers only on /api/v2/ paths. Expired or revoked credentials also 401 — regenerate under Tools → NetCloud API.page[after] cursor) instead of building offsets. v2 uses ?limit=N&offset=M and returns meta.next.X-RateLimit-Reset header (a Unix epoch), wait until then; otherwise back off exponentially (1s, 2s, 4s, 8s) and give up after 5 attempts.Device-level control and fleet orchestration. Use v3 for new integrations.
Create, update, and manage user accounts and permissions.
GET / api/ v3/ usersView and manage device subscriptions and licensing.
GET / api/ v3/ subscriptionsConfigure and monitor private cellular networks, cores, SIMs, and radios.
GET / api/ v3/ beta/ private_ cellular_ networksCreate and manage NetCloud Exchange resources and sites.
GET / api/ v3/ beta/ exchange_ resourcesCreate and manage NetCloud Exchange site configurations.
GET / api/ v3/ beta/ exchange_ sitesBase URLhttps://api.cradlepointecm.com/api/v3/
What changes between the layers, at a glance. Note that the version split is by capability, not preference: most fleet and device endpoints — routers, alerts, device health and telemetry — are v2 today, while Private Cellular (5G), eSIM, and NetCloud Exchange are v3. Each endpoint in the API reference states its own version and base URL.
| API v2 | API v3 | |
|---|---|---|
| Authentication and authorization | Cradlepoint API Keys and NetCloud Manager API Keys (application identification) | Single Bearer token (user identification) |
| Documentation specification | Swagger 1.2 | OpenAPI 3.0 |
| Pagination | Offset | Cursor |
| Expandable fields | Yes | No |
| URL | https://www.cradlepointecm.com/api/v2/ — include the trailing slash; without it the call redirects and two calls are attributed to your account | https://api.cradlepointecm.com/api/v3 — no trailing slash on v3 endpoints |
| Content type | application/json | application/vnd.api+json |
Official libraries and tools to accelerate your integration.
The ncm package — full-featured Python client for NCM APIs. Install with: pip install ncm
Pre-configured requests for every endpoint. Import and start testing.
Web-based tool for bulk operations — configure devices, manage users, update subscriptions.
Ready-to-run Python scripts for common tasks — router status, config backup, alert management.
Subscribe to network events and react instantly when things change.
// Device goes offline (connection_state)
{
"data": [
{
"type": "connection_state",
"friendly_info": "The device entered the \"offline\" state.",
"info": { "state": "offline" },
"router": 4716965,
"router_details": { "name": "OpenWRT-99b" },
"detected_at": "2025-03-13T05:20:18.322301+00:00"
}
],
"meta": { "record_type": "alert", "record_version": "1.0.0" }
}// Configuration change
{
"event": "router.config_push",
"timestamp": "2026-04-11T14:31:12Z",
"data": {
"router_id": "112345",
"name": "Store-42-Primary",
"change": "config_push",
"status": "applied",
"actor": "[email protected]"
}
}// Alert triggered
{
"event": "alert.triggered",
"timestamp": "2026-04-11T14:32:05Z",
"data": {
"router_id": "112345",
"alert_type": "signal_strength_alert",
"threshold": -90,
"value": -97,
"severity": "warning"
}
}// Firmware update
{
"event": "router.firmware_update",
"timestamp": "2026-04-11T14:35:40Z",
"data": {
"router_id": "112345",
"from_version": "7.22.12",
"to_version": "7.23.10",
"status": "in_progress",
"progress": 0.62
}
}Webhooks power event-driven automation, AIOps, and live dashboards across your fleet.
Six starters, each with a prompt you can paste straight into Claude, Cursor, or any coding agent. Every one runs against real NCM endpoints — no mock data, no scaffolding. Pick one, paste it, and you'll have something working against your own fleet in an afternoon.
15 minutes · the "hello world" of fleet automation
A one-command script that prints every router that's currently offline, with how long it's been down.
APIs used: GET /api/v2/routers/
30 minutes · your first automation
A scheduled job that posts a short daily summary to Slack: how many routers are in each state, what alerted in the last 24 hours, and which routers changed state.
APIs used: GET /api/v2/routers/, GET /api/v2/alerts/
30 minutes · the report everyone asks you for
Dump every router to a CSV — name, model, firmware, group, state and location — so you can hand auditors a spreadsheet instead of screenshots.
APIs used: GET /api/v2/routers/ (expand=group,last_known_location), GET /api/v2/products/, GET /api/v2/firmwares/
1 hour · your first real analysis
Rank your routers by worst cellular signal over the last week, so you know exactly where to send a better antenna.
APIs used: GET /api/v2/net_devices/, GET /api/v2/net_device_signal_samples/
1 hour · a change history for every router
Snapshot the configuration NCM manages for each router into git every night, so you get a readable diff whenever someone changes it in NCM, and a list of routers whose changes haven't reached the device yet.
APIs used: GET /api/v2/configuration_managers/ (expand=router, synched, suspended)
1 hour · point an AI agent at your fleet
Wire NCM into Claude Code or Cursor as a read-only MCP server, then ask "which stores are offline?" or "which routers had the weakest signal this week?" in plain language.
Before you start: Python 3.10 or newer (the mcp SDK requires it; macOS's built-in Python is 3.9).
APIs used: GET /api/v2/routers/, GET /api/v2/groups/, GET /api/v2/alerts/, GET /api/v2/net_devices/, GET /api/v2/net_device_signal_samples/, GET /api/v3/subscriptions
These are on-ramps. The same request patterns scale up to full NOC dashboards, ITSM and ServiceNow integrations, multi-tenant MSP portals, and config-as-code pipelines.
TLS 1.2+, scoped tokens, and rate limiting on every request.
Recommended for all new integrations. Single token, simple header.
Authorization: Bearer <your_token>Legacy authentication using two key pairs in custom headers.
X-CP-API-ID: <cp_api_id>
X-CP-API-KEY: <cp_api_key>
X-ECM-API-ID: <ecm_api_id>
X-ECM-API-KEY: <ecm_api_key>
Content-Type: application/jsonAll API requests are rate limited to maintain platform health. Normal responses don't include rate-limit headers, so don't build on them. When you get a 429, wait until X-RateLimit-Reset (a Unix epoch) if the response carries it; otherwise back off exponentially and retry, up to 5 attempts.
Complete endpoint reference with parameters, responses, and examples.
SDK source, sample scripts, Postman collections, and community contributions.
Stay current with API changes, deprecation timelines, and migration guides.
Download the merged OpenAPI 3 spec — import into Postman, generate clients, or build your own tooling.
Home for all technical documentation for NetCloud Manager and Wireless WAN.