Mobile Number Portability (MNP) lets a subscriber keep their number while switching network operators. A number whose current operator differs from its homeOperator has been ported.A recent or unexpected port can be a fraud signal — porting is a known vector for account takeover (an attacker ports a victim’s number to a SIM they control). Use this check as a pre-authentication risk layer for sensitive flows.
How to interpret the response
Field
Value
Meaning
success
true
Check completed. Use phoneDetail.isPorted for the result.
success
false
Check could not be completed (e.g. telecom lookup failed). Inspect the error object.
phoneDetail.isPorted
true
The number has been ported — operator differs from homeOperator. Treat as a risk signal.
phoneDetail.isPorted
false
The number is on its original operator (not ported).
The portability result is carried by phoneDetail.isPorted; there is no separate top-level result field. When success is false, phoneDetail may be omitted.
What is phoneDetail?
phoneDetail contains enriched metadata about the phone number — including operator, country, line type, and time zones. All fields are omitted when not available for the given number or operator.
Field
Type
Description
operator
string
Current network operator (e.g. JIO, AIRTEL, VI)
countryCode
string
Numeric country code (e.g. 91)
country
string
ISO 3166-1 alpha-2 country code (e.g. IN)
type
string
Phone line type (e.g. MOBILE)
homeOperator
string
Registered (original) operator — differs from operator when the number is ported
isPorted
boolean
true if the number has been ported away from its home operator
location
string
Location string for the number’s registered area
timeZones
string[]
IANA time zones for the number’s registered location
Error object returned inside a 200 response when success is false.
Show child attributes
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"OTPLESS","colors":{"primary":"#2759CD","light":"#8DB0FB","dark":"#113997"},"logo":{"light":"https://mintcdn.com/otpless-96/_aEz_FhlLI0izHsE/logo/otpless-dark.svg?fit=max\u0026auto=format\u0026n=_aEz_FhlLI0izHsE\u0026q=85\u0026s=c211521d204eaa2c4148109d50d19edd","dark":"https://mintcdn.com/otpless-96/_aEz_FhlLI0izHsE/logo/otpless-light.svg?fit=max\u0026auto=format\u0026n=_aEz_FhlLI0izHsE\u0026q=85\u0026s=3fd27e254b68526fa18064c62467b18a","href":"https://otpless.com/"},"favicon":"https://mintcdn.com/otpless-96/_aEz_FhlLI0izHsE/favicon.svg?fit=max\u0026auto=format\u0026n=_aEz_FhlLI0izHsE\u0026q=85\u0026s=b0f8f3a3e4b70cf463375510df120336","background":{"image":"https://mintcdn.com/otpless-96/MG5MLCTUP00EUtvA/images/background-documentation-min.png?fit=max\u0026auto=format\u0026n=MG5MLCTUP00EUtvA\u0026q=85\u0026s=c85d6a33e17f625c33c28433c7a595cf","color":{"light":"#F9F9F9","dark":"#0c101f"}},"navbar":{"links":[{"href":"https://otpless.com/support","label":"Contact Support"}],"primary":{"type":"button","label":"Sign in","href":"https://otpless.com/dashboard"}},"footer":{"socials":{"x":"https://x.com/otpless","github":"https://github.com/orgs/otpless-tech/repositories","linkedin":"https://www.linkedin.com/company/otpless"}},"seo":{"indexing":"all"},"contextual":{"options":["copy","view","chatgpt","claude","mcp"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"otpless-96","hasAudioNarration":false,"actualSubdomain":"otpless-96","customDomains":["otpless.com"],"gitSource":{"type":"github","owner":"otpless-tech","repo":"mintlify-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6adb487a7ebcfcb7ce77c284","collectionId":"615c67d8-2ad1-47c5-9b47-83eedd597d3a","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6adb487a7ebcfcb7ce77c284"},"feedback":{"thumbs":false,"issues":true},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6adb487a7ebcfcb7ce77c284","clientVersion":"0.0.3971","searchFilterCounts":[{"language":"default","tag":"Frontend SDKs","count":77},{"language":"default","tag":"References","count":61},{"language":"default","tag":"Native/Mobile SDKs","count":51},{"language":"default","tag":"Web SDKs","count":20},{"language":"default","tag":"Android","count":14},{"language":"default","tag":"Server-Initiated Auth","count":12},{"language":"default","tag":"SDK based Integration","count":12},{"language":"default","tag":"Ionic","count":10},{"language":"default","tag":"Silent Network Auth","count":9},{"language":"default","tag":"SNA-SDK based Integration","count":9}]},"assistantConfig":{"enableStarterQuestions":true,"enableContextualStarterQuestions":true,"deflection":{"enabled":true,"email":"help@otpless.com"}},"basePath":"/docs","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":false},"customCss":[{"filePath":"button_style.css","content":".activate-button{display:inline-block;padding:10px 20px;font-size:14px;font-weight:400;color:#fff;border-radius:4px;text-decoration:none;text-align:center;transition:all .3s ease;cursor:pointer;background:#113997}.activate-button p{margin:0}.activate-button:focus,.activate-button:hover{background-color:#113997e1;color:#fff;text-decoration:none;cursor:pointer}.activate-button:active{background-color:#0a3495;box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}"}],"page":{"pagePath":"api-reference/endpoint/telecom/portability","slug":"/api-reference/endpoint/telecom/portability","pageMetadata":{"title":"Number Portability Check","description":"Check whether a phone number has been ported (MNP). Use as a pre-authentication risk signal for fraud prevention.","openapi":"POST /v1/telecom/portability","href":"/api-reference/endpoint/telecom/portability"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Check whether a phone number has been ported (MNP). Use as a pre-authentication risk signal for fraud prevention.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={code:`code`,p:`p`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,..._provideComponents(),...props.components},{Accordion,Table}=_components;if(!Accordion)_missingMdxReference(`Accordion`,true);if(!Table)_missingMdxReference(`Table`,true);return _jsxs(_Fragment,{children:[_jsxs(Accordion,{title:`Why check number portability?`,id:`why-check-number-portability`,children:[_jsxs(_components.p,{children:[`Mobile Number Portability (MNP) lets a subscriber keep their number while switching network operators. A number whose current `,_jsx(_components.code,{children:`operator`}),` differs from its `,_jsx(_components.code,{children:`homeOperator`}),` has been ported.`]}),_jsx(_components.p,{children:`A recent or unexpected port can be a fraud signal — porting is a known vector for account takeover (an attacker ports a victim’s number to a SIM they control). Use this check as a pre-authentication risk layer for sensitive flows.`})]}),`\n`,_jsxs(Accordion,{title:`How to interpret the response`,id:`how-to-interpret-the-response`,children:[_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Field`}),_jsx(_components.th,{children:`Value`}),_jsx(_components.th,{children:`Meaning`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`success`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`true`})}),_jsxs(_components.td,{children:[`Check completed. Use `,_jsx(_components.code,{children:`phoneDetail.isPorted`}),` for the result.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`success`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`false`})}),_jsxs(_components.td,{children:[`Check could not be completed (e.g. telecom lookup failed). Inspect the `,_jsx(_components.code,{children:`error`}),` object.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`phoneDetail.isPorted`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`true`})}),_jsxs(_components.td,{children:[`The number has been ported — `,_jsx(_components.code,{children:`operator`}),` differs from `,_jsx(_components.code,{children:`homeOperator`}),`. Treat as a risk signal.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`phoneDetail.isPorted`})}),_jsx(_components.td,{children:_jsx(_components.code,{children:`false`})}),_jsx(_components.td,{children:`The number is on its original operator (not ported).`})]})]})]}),_jsxs(_components.p,{children:[`The portability result is carried by `,_jsx(_components.code,{children:`phoneDetail.isPorted`}),`; there is no separate top-level result field. When `,_jsx(_components.code,{children:`success`}),` is `,_jsx(_components.code,{children:`false`}),`, `,_jsx(_components.code,{children:`phoneDetail`}),` may be omitted.`]})]}),`\n`,_jsxs(Accordion,{title:`What is phoneDetail?`,id:`what-is-phonedetail`,children:[_jsxs(_components.p,{children:[_jsx(_components.code,{children:`phoneDetail`}),` contains enriched metadata about the phone number — including operator, country, line type, and time zones. All fields are omitted when not available for the given number or operator.`]}),_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Field`}),_jsx(_components.th,{children:`Type`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`operator`})}),_jsx(_components.td,{children:`string`}),_jsxs(_components.td,{children:[`Current network operator (e.g. `,_jsx(_components.code,{children:`JIO`}),`, `,_jsx(_components.code,{children:`AIRTEL`}),`, `,_jsx(_components.code,{children:`VI`}),`)`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`countryCode`})}),_jsx(_components.td,{children:`string`}),_jsxs(_components.td,{children:[`Numeric country code (e.g. `,_jsx(_components.code,{children:`91`}),`)`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`country`})}),_jsx(_components.td,{children:`string`}),_jsxs(_components.td,{children:[`ISO 3166-1 alpha-2 country code (e.g. `,_jsx(_components.code,{children:`IN`}),`)`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`type`})}),_jsx(_components.td,{children:`string`}),_jsxs(_components.td,{children:[`Phone line type (e.g. `,_jsx(_components.code,{children:`MOBILE`}),`)`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`homeOperator`})}),_jsx(_components.td,{children:`string`}),_jsxs(_components.td,{children:[`Registered (original) operator — differs from `,_jsx(_components.code,{children:`operator`}),` when the number is ported`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`isPorted`})}),_jsx(_components.td,{children:`boolean`}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`true`}),` if the number has been ported away from its home operator`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`location`})}),_jsx(_components.td,{children:`string`}),_jsx(_components.td,{children:`Location string for the number’s registered area`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`timeZones`})}),_jsx(_components.td,{children:`string[]`}),_jsx(_components.td,{children:`IANA time zones for the number’s registered location`})]})]})]})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Number Portability Check","description":"Check whether a phone number has been ported (MNP). Use as a pre-authentication risk signal for fraud prevention.","openapi":"POST /v1/telecom/portability","href":"/api-reference/endpoint/telecom/portability"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/docs/_mintlify/custom/otpless-96/b09595f2b6159bec/script.js"],"openApiReferenceData":{"operation":{"tags":["PORTABILITY"],"summary":"Number Portability Check","description":"Check whether a phone number has been ported (MNP). Use as a pre-authentication risk signal for fraud prevention.","operationId":"portabilityCheck","requestBody":"3cb53b23-9fd4-407e-ac7c-3412da236cc2","responses":{"200":"732ccc43-567d-43ab-86ca-1b26f83298d2","400":"cfed8e16-4532-418c-9d18-350f396a61ac","401":"2f592c04-abda-421c-a354-f070ee44a135"},"method":"post","type":"path","servers":["57fe2ab3-1ef0-4884-8092-4af0484e2e89"],"security":["542e7223-5a55-4df3-9451-730adf93088a"],"path":"/v1/telecom/portability","baseUrlOptions":["https://platform.otpless.app"],"title":"Number Portability Check","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["phoneNumber"],"properties":{"phoneNumber":{"type":"string","example":"917020141726","description":"Phone number including country code, without plus sign. Example: 917020141726 for +91 70201 41726.","isRequired":true,"uniqueKey":"phoneNumber","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"default":{"title":"default","value":{"phoneNumber":"917020141726"}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"732ccc43-567d-43ab-86ca-1b26f83298d2":{"description":"**HTTP 200** — Request accepted. Inspect `success` in the body:\n- **`success: true`** — Check completed. Use `phoneDetail.isPorted` to determine the result.\n- **`success: false`** — Check could not be completed. Inspect `error` for details.\n","content":{"application/json":{"schema":{"type":"object","required":["success"],"properties":{"success":{"type":"boolean","description":"`true` if the check completed successfully. `false` if the check could not be completed — inspect the `error` object for details.","isRequired":true,"uniqueKey":"success","typeLabel":"boolean"},"phoneDetail":{"type":"object","description":"Enriched phone metadata. Fields are omitted when not available for the given number or operator.","properties":{"operator":{"type":"string","example":"JIO","description":"Current network operator (e.g. JIO, AIRTEL, VI).","uniqueKey":"phoneDetail.operator","typeLabel":"string"},"countryCode":{"type":"string","example":"91","description":"Numeric country code.","uniqueKey":"phoneDetail.countryCode","typeLabel":"string"},"country":{"type":"string","example":"IN","description":"ISO 3166-1 alpha-2 country code.","uniqueKey":"phoneDetail.country","typeLabel":"string"},"type":{"type":"string","example":"MOBILE","description":"Phone line type (e.g. MOBILE, LANDLINE).","uniqueKey":"phoneDetail.type","typeLabel":"string"},"homeOperator":{"type":"string","example":"JIO","description":"Home (registered) operator, which may differ from current operator if roaming.","uniqueKey":"phoneDetail.homeOperator","typeLabel":"string"},"isPorted":{"type":"boolean","example":true,"description":"`true` if the number has been ported away from its home operator (so `operator` differs from `homeOperator`).","uniqueKey":"phoneDetail.isPorted","typeLabel":"boolean"},"location":{"type":"string","example":"India","description":"Location string for the phone number (city, state, or country level).","uniqueKey":"phoneDetail.location","typeLabel":"string"},"timeZones":{"type":"array","items":{"type":"string","uniqueKey":"phoneDetail.timeZones.items.[INDEX]","typeLabel":"string"},"example":["Asia/Kolkata"],"description":"IANA time zones for the phone number's registered location.","uniqueKey":"phoneDetail.timeZones","typeLabel":"string[]"}},"uniqueKey":"phoneDetail","typeLabel":"object"},"error":{"type":"object","description":"Error object returned inside a 200 response when `success` is `false`.","properties":{"errorCode":{"type":"string","description":"Machine-readable error code.","uniqueKey":"error.errorCode","typeLabel":"string"},"message":{"type":"string","uniqueKey":"error.message","typeLabel":"string"},"description":{"type":"string","uniqueKey":"error.description","typeLabel":"string"}},"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"ported":{"title":"ported","value":{"success":true,"phoneDetail":{"operator":"JIO","countryCode":"91","country":"IN","type":"MOBILE","homeOperator":"AIRTEL","isPorted":true,"location":"India","timeZones":["Asia/Kolkata"]}}},"not_ported":{"title":"not_ported","value":{"success":true,"phoneDetail":{"operator":"AIRTEL","countryCode":"91","country":"IN","type":"MOBILE","homeOperator":"AIRTEL","isPorted":false,"location":"India","timeZones":["Asia/Kolkata"]}}},"telecom_lookup_failed":{"title":"telecom_lookup_failed","value":{"success":false,"error":{"errorCode":"P7301","message":"Telecom lookup failed","description":"Unable to retrieve operator details from the upstream provider."}}}},"exampleType":"examples"}},"exampleType":"examples"},"cfed8e16-4532-418c-9d18-350f396a61ac":{"description":"**HTTP 400.** Request rejected due to invalid parameters. Body is an error object only — no `success` field.\n","content":{"application/json":{"schema":{"type":"object","description":"Error response body for HTTP 4xx responses.","properties":{"message":{"type":"string","example":"Invalid Request","uniqueKey":"message","typeLabel":"string"},"errorCode":{"type":"string","example":"P7102","description":"Machine-readable error code. See the error code reference for the full list.","uniqueKey":"errorCode","typeLabel":"string"},"description":{"type":"string","example":"Request error: Invalid phone number","uniqueKey":"description","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"invalid_phone":{"title":"invalid_phone","value":{"message":"Invalid Request","errorCode":"P7102","description":"Request error: Invalid phone number"}}},"exampleType":"examples"}},"exampleType":"examples"},"2f592c04-abda-421c-a354-f070ee44a135":{"description":"**HTTP 401.** Unauthorized. `clientId`/`clientSecret` headers are missing or invalid. Body is an error object only.\n","content":{"application/json":{"schema":{"type":"object","description":"Error response body for HTTP 4xx responses.","properties":{"message":{"type":"string","example":"Invalid Request","uniqueKey":"message","typeLabel":"string"},"errorCode":{"type":"string","example":"P7102","description":"Machine-readable error code. See the error code reference for the full list.","uniqueKey":"errorCode","typeLabel":"string"},"description":{"type":"string","example":"Request error: Invalid phone number","uniqueKey":"description","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"credentials_required":{"title":"credentials_required","value":{"message":"Client credentials are required","errorCode":"70001","description":"clientId and clientSecret headers are required."}},"invalid_credentials":{"title":"invalid_credentials","value":{"message":"Invalid client credentials","errorCode":"70002","description":"The provided clientId and clientSecret are invalid."}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{"542e7223-5a55-4df3-9451-730adf93088a":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"clientId","description":"OTPless API Client ID","scopes":[],"schemeName":"ApiKeyAuth"},"ApiSecretAuth":{"type":"apiKey","in":"header","name":"clientSecret","description":"OTPless API Client Secret","scopes":[],"schemeName":"ApiSecretAuth"}}},"servers":{"57fe2ab3-1ef0-4884-8092-4af0484e2e89":{"url":"https://platform.otpless.app","description":"Production server"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"clientId","description":"OTPless API Client ID","scopes":[],"schemeName":"ApiKeyAuth"},"schema":{"title":"clientId","type":"string","description":"OTPless API Client ID","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"ApiKeyAuth","name":"clientId"},{"scheme":{"type":"apiKey","in":"header","name":"clientSecret","description":"OTPless API Client Secret","scopes":[],"schemeName":"ApiSecretAuth"},"schema":{"title":"clientSecret","type":"string","description":"OTPless API Client Secret","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"ApiSecretAuth","name":"clientSecret"}],"title":"ApiKeyAuth \u0026 ApiSecretAuth"}]},"originalFileLocation":"api-reference/endpoint/telecom/telecom-api.yaml"},"subdomain":"otpless-96","siteName":"OTPLESS","title":"Number Portability Check - OTPLESS","contextualStarterQuestions":[{"_id":"6a515998ae3ff331ddd4b93e","deploymentId":"65507bb0b99260c1f65d01cc","questionText":"What fraud risks does MNP pose?","status":"active","generatedBy":"contextual","path":"api-reference/endpoint/telecom/portability","createdAt":"2026-07-10T20:44:08.969Z","updatedAt":"2026-07-10T20:44:08.969Z","__v":0},{"_id":"6a515998ae3ff331ddd4b93d","deploymentId":"65507bb0b99260c1f65d01cc","questionText":"How do I detect ported numbers?","status":"active","generatedBy":"contextual","path":"api-reference/endpoint/telecom/portability","createdAt":"2026-07-10T20:44:08.969Z","updatedAt":"2026-07-10T20:44:08.969Z","__v":0},{"_id":"6a515998ae3ff331ddd4b93c","deploymentId":"65507bb0b99260c1f65d01cc","questionText":"What is number portability?","status":"active","generatedBy":"contextual","path":"api-reference/endpoint/telecom/portability","createdAt":"2026-07-10T20:44:08.969Z","updatedAt":"2026-07-10T20:44:08.969Z","__v":0}],"navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-06-29T14:39:42.573Z","originalFileLocation":"api-reference/endpoint/telecom/portability.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Check whether a phone number has been ported (MNP). Use as a pre-authentication risk signal for fraud prevention.\">\u003cmeta data-mint-head name=\"application-name\" content=\"OTPLESS\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/otpless-96/4ecEfjOYTKC7Ncnz/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/docs/mintlify-assets/_mintlify/favicons/otpless-96/4ecEfjOYTKC7Ncnz/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/otpless-96/4ecEfjOYTKC7Ncnz/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/otpless-96/4ecEfjOYTKC7Ncnz/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/otpless-96/4ecEfjOYTKC7Ncnz/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/otpless-96/4ecEfjOYTKC7Ncnz/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/otpless-96/4ecEfjOYTKC7Ncnz/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/otpless-96/4ecEfjOYTKC7Ncnz/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/otpless-96/4ecEfjOYTKC7Ncnz/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Number Portability Check - OTPLESS\">\u003cmeta data-mint-head property=\"og:description\" content=\"Check whether a phone number has been ported (MNP). Use as a pre-authentication risk signal for fraud prevention.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"OTPLESS\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://otpless.com/docs/api-reference/endpoint/telecom/portability\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://otpless-96.mintlify.app/_mintlify/api/og/v2?division=Telecom\u0026amp;title=Number+Portability+Check\u0026amp;description=Check+whether+a+phone+number+has+been+ported+%28MNP%29.+Use+as+a+pre-authentication+risk+signal+for+fraud+prevention.\u0026amp;theme=7f8688bffaa68a7d5c144e80\u0026amp;signature=06ff77b23fbf71592e7a4a555eed842fa6f09ea42f8aedb7d153da6558f4319f\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Number Portability Check - OTPLESS\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Check whether a phone number has been ported (MNP). Use as a pre-authentication risk signal for fraud prevention.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://otpless-96.mintlify.app/_mintlify/api/og/v2?division=Telecom\u0026amp;title=Number+Portability+Check\u0026amp;description=Check+whether+a+phone+number+has+been+ported+%28MNP%29.+Use+as+a+pre-authentication+risk+signal+for+fraud+prevention.\u0026amp;theme=7f8688bffaa68a7d5c144e80\u0026amp;signature=06ff77b23fbf71592e7a4a555eed842fa6f09ea42f8aedb7d153da6558f4319f\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/docs/mintlify-assets/_mintlify/favicons/otpless-96/4ecEfjOYTKC7Ncnz/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"OTPLESS\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#2759CD\">\u003clink data-mint-head rel=\"canonical\" href=\"https://otpless.com/docs/api-reference/endpoint/telecom/portability\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/docs/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/api-reference/endpoint/telecom/portability.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://otpless.com/#organization\",\"name\":\"OTPLESS\",\"url\":\"https://otpless.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/otpless-96/_aEz_FhlLI0izHsE/logo/otpless-dark.svg?fit=max\u0026auto=format\u0026n=_aEz_FhlLI0izHsE\u0026q=85\u0026s=c211521d204eaa2c4148109d50d19edd\"}},{\"@type\":\"WebSite\",\"@id\":\"https://otpless.com/docs#website\",\"name\":\"OTPLESS\",\"url\":\"https://otpless.com/docs\",\"publisher\":{\"@id\":\"https://otpless.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://otpless.com/docs/api-reference/endpoint/telecom/portability#webpage\",\"url\":\"https://otpless.com/docs/api-reference/endpoint/telecom/portability\",\"name\":\"Number Portability Check\",\"description\":\"Check whether a phone number has been ported (MNP). Use as a pre-authentication risk signal for fraud prevention.\",\"dateModified\":\"2026-06-29T14:39:42.573Z\",\"isPartOf\":{\"@id\":\"https://otpless.com/docs#website\"},\"breadcrumb\":{\"@id\":\"https://otpless.com/docs/api-reference/endpoint/telecom/portability#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://otpless.com/docs/api-reference/endpoint/telecom/portability#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Telecom\",\"item\":\"https://otpless.com/docs/api-reference/endpoint/telecom/overview\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Number Portability Check\",\"item\":\"https://otpless.com/docs/api-reference/endpoint/telecom/portability\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://otpless.com/docs/api-reference/endpoint/telecom/portability#apireference\",\"headline\":\"Number Portability Check\",\"name\":\"Number Portability Check\",\"description\":\"Check whether a phone number has been ported (MNP). Use as a pre-authentication risk signal for fraud prevention.\",\"url\":\"https://otpless.com/docs/api-reference/endpoint/telecom/portability\",\"mainEntityOfPage\":{\"@id\":\"https://otpless.com/docs/api-reference/endpoint/telecom/portability#webpage\"},\"dateModified\":\"2026-06-29T14:39:42.573Z\",\"publisher\":{\"@id\":\"https://otpless.com/#organization\"},\"isPartOf\":{\"@id\":\"https://otpless.com/docs#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"OTPLESS\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"OTPLESS","nav":{"global":null,"tabs":[{"tab":"Home","pages":[{"title":"Home","href":"/introduction"}]},{"tab":"Frontend SDKs","pages":[{"title":"Frontend SDKs","href":"/quick-start"}]},{"tab":"API Reference","groups":[{"group":"API Documentation","pages":[{"title":"Introduction","href":"/api-reference/introduction"}]},{"group":"Verify Frontend SDK token","pages":[{"title":"Verify token","openapi":"POST /auth/v1/validate/token","href":"/api-reference/endpoint/verifytoken/verify-token-with-secure-data"},{"title":"Verify ID Token","href":"/api-reference/endpoint/verifytoken/id-token-validate"}]},{"group":"Telecom","pages":[{"title":"Overview","href":"/api-reference/endpoint/telecom/overview"},{"title":"SIM Swap Check","openapi":"POST /v1/telecom/sim-swap-check","href":"/api-reference/endpoint/telecom/sim-swap-check"},{"title":"Call Forwarding Check","description":"Check whether call forwarding is active on a phone number. Use as a pre-authentication risk signal for fraud prevention.","openapi":"POST /v1/telecom/call-forwarding-check","href":"/api-reference/endpoint/telecom/call-forwarding-check"},{"title":"Number Portability Check","openapi":"POST /v1/telecom/portability","href":"/api-reference/endpoint/telecom/portability"},{"title":"Telecom API errors","description":"How errors are returned for OTPless Telecom Intelligence APIs, response formats, and error code reference.","href":"/api-reference/endpoint/telecom/errors"}]}]},{"tab":"Server-Initiated Auth","pages":[{"title":"Server-Initiated Auth","href":"/server-initiated-auth/overview"}]},{"tab":"Silent Network Auth","pages":[{"title":"Silent Network Auth","href":"/sna/overview"}]},{"tab":"Device Fingerprint","pages":[{"title":"Device Fingerprint","href":"/device-fingerprint/overview"}]},{"tab":"Resources","hidden":true}]},"title":"Number Portability Check - OTPLESS","buildId":"dpl_GvhK4qVXq51DpfYJLCtPpYNN4YHN","deploymentId":"dpl_GvhK4qVXq51DpfYJLCtPpYNN4YHN","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-Bg4Z7D_G.js","utils-Biz734EK.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-C6F9YHs6.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-BoJjY_VP.js","snippetPresets-CnZ-mOFh.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-DC_SB2pp.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BYKtOiIP.js","shallow-COAac_UD.js","getApiPlaygroundDisplay-BV4Viqi2.js","CodeSnippet-DDgW-JXl.js","CodeSnippets-CP1LpNhG.js","Page-BeiUfucV.js","getPastedJson-Cvgvbfmv.js","icon-D-H368xH.js","MethodPill-CXSxH1VW.js","DuplicateIcon-JcbBzF1x.js","createIcon-BDt_aHZM.js","DynamicMarkdown-DO1Fz7ar.js","SectionHeading-mwKBArs3.js","axios-vUo_bRtp.js","Markdown-C3KUTGJN.js","clsx-C6CAjViH.js","lib--scc4DXi.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-C3vb5JQZ.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-C8Hisf3g.js"]}