Looks up phone number details via Sinch Number Lookup API. Use when checking carrier, line type, porting status, SIM swap, VoIP detection, or reassigned number detection (RND) for fraud prevention or routing decisions.
From sinch-claude-pluginnpx claudepluginhub sinch/sinch-plugins --plugin sinch-claude-pluginThis skill uses the workspace's default tool permissions.
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Migrates code, prompts, and API calls from Claude Sonnet 4.0/4.5 or Opus 4.1 to Opus 4.5, updating model strings on Anthropic, AWS, GCP, Azure platforms.
Details PluginEval's skill quality evaluation: 3 layers (static, LLM judge), 10 dimensions, rubrics, formulas, anti-patterns, badges. Use to interpret scores, improve triggering, calibrate thresholds.
Queries phone numbers for carrier, line type, porting, SIM swap, VoIP detection, and reassigned number detection. Used for fraud prevention, routing, and data enrichment.
https://lookup.api.sinch.comhttps://number-lookup.api.sinch.com (legacy -- no OAuth2, no projectId)POST /v2/projects/{projectId}/lookupscurl -X POST \
'https://lookup.api.sinch.com/v2/projects/YOUR_project_id/lookups' \
-H 'Content-Type: application/json' \
-u YOUR_key_id:YOUR_key_secret \
-d '{
"number": "+12025550134",
"features": ["LineType", "SimSwap", "VoIPDetection", "RND"],
"rndFeatureOptions": { "contactDate": "2025-01-01" }
}'
For OAuth2, replace -u with -H 'Authorization: Bearer YOUR_access_token'.
For SDK setup (Node.js, Python, Java, .NET), see the Getting Started Guide.
| Field | Type | Required | Notes |
|---|---|---|---|
number | string | Yes | Single E.164 number (with + prefix) |
features | string[] | No | LineType (default), SimSwap, VoIPDetection (alpha), RND (alpha) |
rndFeatureOptions.contactDate | string | If RND requested | YYYY-MM-DD format |
Critical: If features is omitted, only LineType is returned. You must explicitly request SimSwap, VoIPDetection, or RND.
Flat object (not an array). Each feature populates its own sub-object; unrequested features are null.
Top-level fields: number, countryCode (ISO 3166-1 alpha-2), traceId
line object:
| Field | Type | Values |
|---|---|---|
carrier | string | Carrier name, e.g. "T-Mobile USA" |
type | string enum | Landline, Mobile, VoIP, Special, Freephone, Other |
mobileCountryCode | string | MCC, e.g. "310" |
mobileNetworkCode | string | MNC, e.g. "260" |
ported | boolean | Whether ported |
portingDate | string | ISO 8601 datetime |
error | object|null | Per-feature error (status, title, detail, type) |
simSwap object:
| Field | Type | Values |
|---|---|---|
swapped | boolean | Whether SIM swap occurred |
swapPeriod | string enum | Undefined, SP4H, SP12H, SP24H, SP48H, SP5D, SP7D, SP14D, SP30D, SPMAX |
error | object|null | Per-feature error |
voIPDetection object (alpha):
| Field | Type | Values |
|---|---|---|
probability | string enum | Unknown, Low, Likely, High -- not numeric |
error | object|null | Per-feature error |
rnd object (alpha):
| Field | Type | Values |
|---|---|---|
disconnected | boolean | Disconnected after contactDate |
error | object|null | Per-feature error |
For full response schemas, see the API Reference.
features: ["SimSwap", "VoIPDetection"]simSwap.swapped is true and swapPeriod is SP4H or SP24H → flag as high riskvoIPDetection.probability is High or Likely → require additional verificationerror → fall back to the other feature's result for risk scoringfeatures: ["LineType", "RND"] (include rndFeatureOptions.contactDate)rnd.disconnected is true → remove from contact listline.type: SMS for Mobile, voice for Landlinefeatures: ["LineType", "SimSwap"]line.type is Landline → use voice verification instead of SMSsimSwap.swapped is true → skip SMS verification, use an alternative channelNo batch endpoint. Use parallel requests:
const results = await Promise.all(
numbers.map((number) => sinch.numberLookup.lookup({ number, features: ['LineType', 'SimSwap'] }))
);
features must be explicit. Omitting it returns only LineType. SIM swap, VoIP, and RND require explicit opt-in.Unknown, Low, Likely, High.SP24H, SP7D -- not human-readable strings.error. A lookup can succeed for line but fail for simSwap.contactDate. Omitting rndFeatureOptions when requesting RND causes a 400.429 Too Many Requests when exceeded. Contact Sinch for tier info.402 means Account Locked (not payment required), 403 means the API is disabled for your project. If response includes a 403, direct the user to check this documentation.