Skip to main content
NeoDefender

Developer documentation

Migration Calculator API

Technical reference for generating Microsoft 365 migration estimates from a source platform, user count, file containers, permission complexity and Teams scope.

Quick start

The fastest way to test the API is a GET request with query parameters. This example estimates an Office 365 tenant-to-tenant migration for 50 users with no file containers, complex permissions or Teams migration.

curl.exe "https://neodefender.com/api/migration-calculator/calculate?platform=office365&users=50&files_included=false"

Expected total: $4,250.

Endpoints

MethodURLUse caseCache
GEThttps://neodefender.com/api/migration-calculator/calculateBrowser tests and simple HTTP clients.public, max-age=60
POSThttps://neodefender.com/api/migration-calculator/calculateApplications sending JSON bodies.no-store

Both variants return the same JSON response and use the same pricing function. CORS is public. No authentication is required.

Parameters

NameTypeRequiredDescription
platformstringYesoffice365, google-workspace, exchange, zimbra, imap, cpanel
usersintegerYes1-9999. More than 500 returns enterprise planning state.
files_includedbooleanYestrue/false, or 1/0 for GET requests.
file_containersintegerNo0-1000. Required when files_included=true.
complex_permissionsstringNonone, 1-5, 6-20, 20+. Defaults to none.
teams_includedbooleanNotrue/false, or 1/0. Defaults to false.

Legacy platforms are exchange, zimbra, imap and cpanel. File migration is only valid for office365 and google-workspace.

Response

A successful response returns the calculated total, project tier, timeline and cost breakdown.

{
  "estimated_total_usd": 4250,
  "tier": "small",
  "duration_business_days_min": 4,
  "duration_business_days_max": 7,
  "pilot_users": 4,
  "hypercare_days": 7,
  "breakdown": {
    "base": 750,
    "mailboxes": 3500,
    "file_containers": 0,
    "complex_permissions": 0,
    "teams": 0
  },
  "volume_discount_applied": 0,
  "is_enterprise": false,
  "contact_required": true,
  "contact_message": "This is an estimate. Contact us at hello@neodefender.com for a formal quote."
}

Examples

GET example

curl.exe "https://neodefender.com/api/migration-calculator/calculate?platform=office365&users=200&files_included=true&file_containers=12&complex_permissions=6-20&teams_included=true"

POST example

curl.exe -X POST "https://neodefender.com/api/migration-calculator/calculate" ^
  -H "Content-Type: application/json" ^
  -d "{\"platform\":\"office365\",\"users\":200,\"files_included\":true,\"file_containers\":12,\"complex_permissions\":\"6-20\",\"teams_included\":true}"

Enterprise state

curl.exe "https://neodefender.com/api/migration-calculator/calculate?platform=office365&users=750&files_included=false"

Rate limiting

The migration calculator API allows 10 requests per IP per minute. GET and POST share the same counter. When the limit is exceeded, the API returns429 with a Retry-After: 60 header.

HeaderDescription
X-RateLimit-LimitMaximum requests allowed in the current window.
X-RateLimit-RemainingRequests remaining in the current window.
Retry-AfterSeconds to wait before retrying after a 429.

Errors

400 — Validation failed

Returned when parameters are missing, invalid, out of range, duplicated, or incompatible.

429 — Too many requests

Returned when rate limit is exceeded. Wait 60 seconds and retry. The Retry-After header indicates the wait time.

500 — Server error

Returned for unexpected errors. Should be rare. Retry the request; if it persists, contact hello@neodefender.com.

Need a formal quote?

This API provides estimates only. For formal quotes, custom requirements, or to discuss your specific migration, contact us: