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_dateis 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