Endpoint reference
Base URL for all endpoints:
https://api.tyntec.com/network-signal/v1
Authentication: all endpoints require the
apiKey: <your_api_key> (HTTP header)
SIM Swap
Check SIM Swap
| POST | /sim-swap/check
Returns true if the SIM has been swapped within the maxAge window. |
Request body:
| Field | Description |
| phoneNumber | string — required. Phone number in E.164 international format, with or without the leading “+”, or using the international “00” prefix (e.g. +491234567890, 491234567890, or 00491234567890). |
| maxAge | integer — optional. Lookback window in minutes. Default: 240. Maximum: 2400. |
Response body (200 OK):
{ "swapped": true }
| swapped | boolean — true if a SIM swap was detected within the maxAge window, false otherwise. |
Retrieve SIM Swap date
| POST | /sim-swap/retrieve-date
Returns the timestamp of the most recent SIM change, or null if none detected. |
Request body:
| phoneNumber | string — required. Phone number in E.164 international format, with or without the leading “+”, or using the international “00” prefix (e.g. +491234567890, 491234567890, or 00491234567890). |
Response body (200 OK)
{ "latestSimChange": "2024-09-18T07:37:53.471829447Z" }
| latestSimChange | string (ISO 8601 datetime) or null — timestamp of the most recent SIM change. Null if no SIM swap has been detected. |
Device Swap
Check Device Swap
| POST | /device-swap/check
Returns true if the device (IMEI) has changed within the maxAge window. |
Request body:
| Field | Description |
| phoneNumber | string — required. Phone number in E.164 international format, with or without the leading “+”, or using the international “00” prefix (e.g. +491234567890, 491234567890, or 00491234567890). |
| maxAge | integer — optional. Lookback window in minutes. Default: 240. Maximum: 2400. |
Response body (200 OK):
{ "swapped": true }
| swapped | boolean — true if a Device Swap was detected within the maxAge window, false otherwise. |
Retrieve Device Swap date
| POST | /device-swap/retrieve-date
Returns the timestamp of the most recent Device Swap, or null if none detected. |
Request body:
| phoneNumber | string — required. Phone number in E.164 international format, with or without the leading “+”, or using the international “00” prefix (e.g. +491234567890, 491234567890, or 00491234567890). |
Response body (200 OK):
{ "latestDeviceChange": "2024-09-18T07:37:53.471829447Z" }
| latestDeviceChange | string (ISO 8601 datetime) or null — timestamp of the most recent Device Swap. Null if no change has been detected. |
Call Forwarding
Check Call Forwarding status
| POST | /call-forwarding/unconditional/check
Returns true if unconditional call forwarding is currently active on the line. |
Request body:
|
phoneNumber |
string — required. Phone number in E.164 international format, |
Response body (200 OK):
{ "active": true }
|
active |
boolean — true if unconditional call forwarding is currently active, false otherwise. |
Error responses
All endpoints return the same error response structure:
{
"status": 400,
"code": "INVALID_ARGUMENT",
"message": "Client specified an invalid argument, request body or query param."
}
| Status / Code | Meaning |
| 400 INVALID_ARGUMENT | The request body or a parameter is malformed or invalid. |
| 400 OUT_OF_RANGE | A numeric parameter (e.g. maxAge) is outside its allowed range. |
| 401 UNAUTHENTICATED | The apiKey header is missing, invalid, or expired. |
| 403 PERMISSION_DENIED | Your API key does not have access to this endpoint. |
| 404 NOT_FOUND | The requested phone number or resource was not found. |
| 500 INTERNAL_SERVER_ERROR | An unexpected error occurred on the server. Retry with backoff. |