NetCloud Manager API

Build on the network that runs your operations

Programmatic control of your Ericsson NetCloud Manager fleet — routers, subscriptions, private cellular, and real-time events. REST APIs, webhooks, and an LLM-ready reference.

50+
API Endpoints

v2 & v3
API Versions

REST
Architecture

Webhooks
Real-time Events

Make your first API call in 3 steps

No external code required. Everything you need is right here.

1

Get Your API Credentials

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.

2

Make Your First Request

# List your subscriptions using API v3
curl -H "Authorization: Bearer YOUR_TOKEN" \
  "https://api.cradlepointecm.com/api/v3/subscriptions"
3

See the Response

{
  "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:

  • 401 Unauthorized — the auth scheme must match the endpoint version: Bearer tokens work only on /api/v3/ paths, API-key headers only on /api/v2/ paths. Expired or revoked credentials also 401 — regenerate under Tools → NetCloud API.
  • Pagination — v3 is cursor-based: follow the next-page URL in the response (page[after] cursor) instead of building offsets. v2 uses ?limit=N&offset=M and returns meta.next.
  • 429 Too Many Requests — you hit the rate limit. If the response carries an X-RateLimit-Reset header (a Unix epoch), wait until then; otherwise back off exponentially (1s, 2s, 4s, 8s) and give up after 5 attempts.

v2 vs v3 at a glance

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 v2API v3
Authentication and authorizationCradlepoint API Keys and NetCloud Manager API Keys (application identification)Single Bearer token (user identification)
Documentation specificationSwagger 1.2OpenAPI 3.0
PaginationOffsetCursor
Expandable fieldsYesNo
URLhttps://www.cradlepointecm.com/api/v2/ — include the trailing slash; without it the call redirects and two calls are attributed to your accounthttps://api.cradlepointecm.com/api/v3 — no trailing slash on v3 endpoints
Content typeapplication/jsonapplication/vnd.api+json

Real-time events. No polling.

Subscribe to network events and react instantly when things change.

Read the full Webhooks guide →
// 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.

What will you build?

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

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/

View prompt as markdown (opens in a new tab)

30 minutes · your first automation

Morning Fleet Digest

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/

View prompt as markdown (opens in a new tab)

30 minutes · the report everyone asks you for

Fleet Inventory Export

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/

View prompt as markdown (opens in a new tab)

1 hour · your first real analysis

Weak Signal Finder

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/

View prompt as markdown (opens in a new tab)

1 hour · a change history for every router

Config Change Tracker

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)

View prompt as markdown (opens in a new tab)

1 hour · point an AI agent at your fleet

Ask Your Network in Plain English

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

View prompt as markdown (opens in a new tab)

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.

Secure by default

TLS 1.2+, scoped tokens, and rate limiting on every request.

v3 — Bearer Token

Recommended for all new integrations. Single token, simple header.

Authorization: Bearer <your_token>

v2 — API Key Pairs

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/json

Rate limiting

All 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.

Sitemapllms.txt