Skip to main content
NeoDefender

Developer documentation

Teams Phone Calculator API

Programmatic access to Microsoft Teams Phone migration project estimates. Public REST API with OpenAPI 3.1 specification, designed for AI agents, integrations, and developer use.

Overview

The Teams Phone Calculator API estimates project effort for Microsoft Teams Phone migrations. It accounts for the base implementation project, phone number porting, auto attendants, call queues and connectivity model.

The API is public, requires no authentication, supports both GET and POST, uses public CORS, is rate limited to 10 requests per IP per minute, and is documented with an OpenAPI 3.1 specification.

Endpoints

MethodURLUse caseCache
GEThttps://neodefender.com/api/teams-phone-calculator/calculateBrowser tests, simple HTTP clients and query-parameter integrations.public, max-age=60
POSThttps://neodefender.com/api/teams-phone-calculator/calculateApplications sending JSON bodies.no-store
OPTIONShttps://neodefender.com/api/teams-phone-calculator/calculateCORS preflight.no-store

Parameters

NameTypeRequiredDescription
usersintegerYes1-9999. Number of Teams Phone users in scope. Values above 200 return enterprise planning state.
numbers_to_portintegerNo0-1000. Count of existing phone numbers the customer intends to port to Teams Phone. Defaults to 0. The deprecated alias numbers_ported is still accepted and returns a deprecation_warnings entry.
auto_attendantsintegerNo0-50. Auto attendants to configure. Defaults to 0.
call_queuesintegerNo0-50. Inbound call queues with agent routing. Defaults to 0.
connectivitystringYesmicrosoft-calling-plans, operator-connect, direct-routing.

Direct Routing returns an enterprise planning response because it requires Session Border Controller setup and carrier integration.

Pricing logic

ItemPrice
Base project$1,500
Numbers ported$100 per number
Auto attendants$250 each
Call queues$250 each
Microsoft Calling Plans$0 connectivity surcharge
Operator Connect$500 connectivity surcharge
Direct RoutingEnterprise planning required

Total = $1,500 + phone number porting + auto attendants + call queues + connectivity surcharge.

Enterprise triggers are users > 200 and direct-routing. Direct Routing uses the direct-routing reason and custom planning message.

Response schema

Calculated responses include the estimate, project tier, duration, porting timeline, breakdown, connectivity model, user count and contact message.

{
  "estimated_total_usd": 4250,
  "tier": "small",
  "duration_weeks_min": 3,
  "duration_weeks_max": 4,
  "porting_timeline_weeks_min": 2,
  "porting_timeline_weeks_max": 3,
  "breakdown": {
    "base": 1500,
    "number_porting": 2500,
    "auto_attendants": 250,
    "call_queues": 0,
    "connectivity_surcharge": 0
  },
  "connectivity_model": "microsoft-calling-plans",
  "users_count": 25,
  "is_enterprise": false,
  "contact_required": true,
  "contact_message": "This is an estimate. Microsoft licenses and hardware are sold separately. Recurring management is included in NeoDefender Managed Support. Contact us at hello@neodefender.com for a formal quote."
}

Enterprise responses do not return a project price.

{
  "estimated_total_usd": 0,
  "tier": "enterprise",
  "is_enterprise": true,
  "enterprise_reason": "direct-routing",
  "contact_required": true,
  "contact_message": "Direct Routing requires Session Border Controller setup and carrier integration. Our team designs custom solutions. Contact us for tailored pricing."
}

Examples

Example 1: Small migration

curl.exe "https://neodefender.com/api/teams-phone-calculator/calculate?users=25&numbers_to_port=25&auto_attendants=1&call_queues=0&connectivity=microsoft-calling-plans"
{
  "estimated_total_usd": 4250,
  "tier": "small",
  "duration_weeks_min": 3,
  "duration_weeks_max": 4,
  "porting_timeline_weeks_min": 2,
  "porting_timeline_weeks_max": 3,
  "is_enterprise": false
}

Example 2: Medium migration

curl.exe -X POST "https://neodefender.com/api/teams-phone-calculator/calculate" ^
  -H "Content-Type: application/json" ^
  -d "{\"users\":100,\"numbers_to_port\":100,\"auto_attendants\":3,\"call_queues\":4,\"connectivity\":\"operator-connect\"}"
{
  "estimated_total_usd": 13750,
  "tier": "mid",
  "duration_weeks_min": 4,
  "duration_weeks_max": 6,
  "porting_timeline_weeks_min": 2,
  "porting_timeline_weeks_max": 3,
  "is_enterprise": false
}

Example 3: Enterprise state

curl.exe "https://neodefender.com/api/teams-phone-calculator/calculate?users=50&numbers_to_port=50&auto_attendants=1&call_queues=0&connectivity=direct-routing"
{
  "estimated_total_usd": 0,
  "tier": "enterprise",
  "is_enterprise": true,
  "enterprise_reason": "direct-routing",
  "contact_required": true,
  "contact_message": "Direct Routing requires Session Border Controller setup and carrier integration. Our team designs custom solutions. Contact us for tailored pricing."
}

Rate limiting

The Teams Phone Calculator API allows 10 requests per IP per minute in a 60-second rolling window. GET and POST share the same counter.

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.

Authentication

No authentication is required. CORS is public with Access-Control-Allow-Origin: *, so the endpoint is safe for browser, server, AI agent and integration use.

Errors

400 - Validation failed

Returned when parameters are missing, invalid, out of range, duplicated, or incompatible. The details array is sanitized.

429 - Rate limit exceeded

Returned when the per-IP request limit is exceeded. The Retry-After header indicates the wait time.

500 - Internal server error

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

OpenAPI specification

The machine-readable OpenAPI 3.1 specification is available for code generation, tool discovery and AI agent integration.

OpenAPI 3.1 specification

Related resources