MSP Renewals API

Push device inventory into MSP Renewals from your RMM, PSA, documentation platform, or any script — so expirations, quoting, and follow-up run on data that maintains itself. Works with NinjaOne, HaloPSA, Hudu, ConnectWise, Datto RMM, N-able, or plain PowerShell.

Authentication

Create an API key in Settings → API Keys and send it as a Bearer token. Keys are scoped to your organization — they can only ever see and modify your own data.

curl https://app.msprenewals.com/api/v1/ping \
  -H "Authorization: Bearer mspr_live_YOUR_KEY"

# -> { "ok": true, "organization": "Your MSP", "api_version": "v1" }

Upsert devices

POST /api/v1/devices accepts a single device or an array (max 100). Devices are matched by serial number — existing devices are updated, new ones created.client_nameis found-or-created automatically, so you never pre-register clients.

curl -X POST https://app.msprenewals.com/api/v1/devices \
  -H "Authorization: Bearer mspr_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '[
    {
      "serial_number": "FGT60F1234567890",
      "vendor": "Fortinet",
      "model": "FortiGate 60F",
      "client_name": "Riverside Medical Group",
      "location": "Main Office",
      "warranty_end_date": "2027-03-15",
      "service_type": "Firewall"
    }
  ]'

# -> { "summary": { "created": 1, "updated": 0, "errors": 0 }, "results": [...] }

List devices

curl "https://app.msprenewals.com/api/v1/devices?limit=100&offset=0" \
  -H "Authorization: Bearer mspr_live_YOUR_KEY"

PowerShell example

Drop this into any scheduled task or RMM script runner. Populate the device list from your source of truth — an export, a management-platform API, or a CSV.

$ApiKey = "mspr_live_YOUR_KEY"

$devices = @(
  @{
    serial_number     = "FGT60F1234567890"
    vendor            = "Fortinet"
    model             = "FortiGate 60F"
    client_name       = "Riverside Medical Group"
    warranty_end_date = "2027-03-15"
    service_type      = "Firewall"
  }
)

$response = Invoke-RestMethod -Method Post `
  -Uri "https://app.msprenewals.com/api/v1/devices" `
  -Headers @{ Authorization = "Bearer " + $ApiKey } `
  -ContentType "application/json" `
  -Body ($devices | ConvertTo-Json -AsArray)

Write-Output ("Created: " + $response.summary.created + `
  "  Updated: " + $response.summary.updated + `
  "  Errors: " + $response.summary.errors)

Deploying per platform

  • NinjaOne: Administration → Library → Automation → Add script (PowerShell). Schedule it against one management machine — not every endpoint — since it pushes your whole device list.
  • HaloPSA: use an Integration Runbook or a scheduled job on any utility server; Halo's asset export + this script keeps both systems aligned.
  • Hudu: export your asset layout to CSV (or query Hudu's API), map columns to the fields above, and push. A ready-made Hudu sync is on our roadmap — this API is what it will use.
  • Anything else: if it can run PowerShell, Bash, or hit a REST endpoint on a schedule, it can feed MSP Renewals.

Limits & behavior

  • 120 requests/minute per key; 100 devices per request
  • Serial numbers are unique — a serial registered to another organization is rejected
  • warranty_end_date is ISO format (YYYY-MM-DD)
  • Fields you omit are left unchanged on updates — safe to send partial data
  • Revoke keys anytime in Settings → API Keys; revocation is immediate

Native NinjaOne, HaloPSA, and Hudu connectors are on the roadmap.

Want one prioritized? Tell us what you run: support@msprenewals.com