AVAILABLE

Customer Data

Phone Number Normalize & Policy Guard

Inspect, normalize, compare, batch-check, and apply explicit policy to international phone numbers using versioned offline numbering-plan metadata.

CONTRACT

Predictable for agents. Legible for reviewers.

REST
POST /v1/phone-numbers/policy-check
MCP tool
check_phone_number_policy
Inputs
One trimmed phone-number string up to 128 characters with an explicit default ISO region for national input; comparison accepts two values and batch inspection accepts up to 1,000 items.
Returns
CLEAR, REVIEW_REQUIRED, or BLOCKED with E.164, international, national, and RFC 3966 formats, region and number type, possibility and validity evidence, exact duplicate groups, named findings, metadata version, and next action.
Latency
Synchronous
Usage unit
Phone-number operation

The suite also exposes /v1/phone-numbers/inspect, /v1/phone-numbers/normalize, /v1/phone-numbers/compare, and /v1/phone-numbers/batch/inspect plus /mcp/phone. It uses offline numbering-plan metadata and never places a call, sends a message, queries a live carrier, verifies ownership, proves current assignment or reachability, confirms SMS capability, accesses the network, or stores payloads.

AGENT-READABLE EXCEPTIONS

PHONE_DEFAULT_REGION_REQUIREDPHONE_PARSE_ERRORPHONE_NOT_POSSIBLEPHONE_NOT_VALIDPHONE_REGION_NOT_ALLOWEDPHONE_TYPE_NOT_ALLOWEDPHONE_E164_INPUT_REQUIREDPHONE_EXTENSION_BLOCKEDPHONE_PREMIUM_RATE_BLOCKEDPHONE_OUTPUT_TOO_LARGE
HTTP request
POST /v1/phone-numbers/policy-check
Authorization: Bearer apc_...
Content-Type: application/json

{
  "number": "+14155552671",
  "allowed_regions": [
    "US",
    "CA"
  ],
  "allowed_types": [
    "MOBILE",
    "FIXED_LINE_OR_MOBILE"
  ],
  "require_region_allowlist": true,
  "require_type_allowlist": true,
  "require_possible": true,
  "require_valid": true,
  "require_e164_input": true,
  "allow_extensions": false,
  "block_premium_rate": true,
  "block_shared_cost": true
}
cURL (bash)
curl --request POST \
  --url 'https://api-production-9502.up.railway.app/v1/phone-numbers/policy-check' \
  --header 'Authorization: Bearer ${AP_CONTROL_API_KEY}' \
  --header 'Content-Type: application/json' \
  --data '{
  "number": "+14155552671",
  "allowed_regions": [
    "US",
    "CA"
  ],
  "allowed_types": [
    "MOBILE",
    "FIXED_LINE_OR_MOBILE"
  ],
  "require_region_allowlist": true,
  "require_type_allowlist": true,
  "require_possible": true,
  "require_valid": true,
  "require_e164_input": true,
  "allow_extensions": false,
  "block_premium_rate": true,
  "block_shared_cost": true
}'
Representative response
{
  "status": "COMPLETED",
  "decision": "CLEAR",
  "permitted": true,
  "parsed": {
    "country_code": 1,
    "national_number": "4155552671",
    "extension": null,
    "region_code": "US",
    "number_type": "FIXED_LINE_OR_MOBILE",
    "possible": true,
    "possible_reason": "IS_POSSIBLE",
    "valid": true,
    "valid_for_region": true,
    "formats": {
      "e164": "+14155552671",
      "international": "+1 415-555-2671",
      "national": "(415) 555-2671",
      "rfc3966": "tel:+1-415-555-2671"
    },
    "metadata_version": "9.0.36",
    "static_metadata_only": true,
    "currently_assigned_verified": false,
    "reachable_verified": false,
    "ownership_verified": false,
    "current_carrier_queried": false,
    "sms_capability_verified": false,
    "network_access_performed": false,
    "payload_stored": false
  },
  "findings": [],
  "ruleset_version": "2026-08-11",
  "static_metadata_only": true,
  "reachability_verified": false,
  "ownership_verified": false,
  "network_access_performed": false,
  "payload_stored": false,
  "next_action": "Continue only as static numbering-plan evidence; perform authorized reachability or ownership verification separately."
}
Offline metadata onlyResults expose the installed numbering-plan metadata version and never claim a live carrier or assignment lookup.
No reachability or ownership proofThe service never calls, texts, challenges, or contacts the number; current assignment, reachability, ownership, and SMS capability remain unverified.
Extensions stay explicitE.164 remains the base identity while extensions are retained separately and compared only under the caller's selected policy.

Use Phone Number Normalize & Policy Guard through RapidAPI.

Choose a capped marketplace plan, copy the generated request, and route the structured result through your own authorized workflow.