Complete reference for the Destinations API integration used by this Claude Code plugin.
- Base URL:
https://destinations-api.telecomsxchange.com - Protocol: HTTPS only
- Authentication: None required (open access)
- Rate Limit: 100 requests per minute
- Response Format: JSON
Search for telecom destinations using various filters.
Endpoint: GET /search/
Query Parameters:
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
prefix |
string | No | Phone number prefix (digits only) | 1, 855, 44 |
country_name |
string | No | Country name (UPPERCASE) | CAMBODIA, UNITED STATES |
description |
string | No | Network description/type | Mobile, Fixed, VoIP |
mccmnc |
string | No | Mobile Country/Network Code | 45601, 310120 |
page |
integer | No | Page number for pagination | 1, 2, 3 |
limit |
integer | No | Results per page (1-1000) | 100 (default), 500, 1000 |
Response Schema:
{
"count": 1543,
"next": "https://destinations-api.telecomsxchange.com/search/?page=2",
"previous": null,
"results": [
{
"id": 12345,
"prefix": "85512",
"country_name": "CAMBODIA",
"description": "Metfone Mobile",
"mccmnc": "45608",
"interval_1": 60,
"interval_n": 1,
"created_at": "2024-01-15T10:30:00Z",
"updated_at": "2025-03-20T14:45:00Z"
}
]
}Response Fields:
| Field | Type | Description |
|---|---|---|
count |
integer | Total number of matching results |
next |
string/null | URL for next page of results |
previous |
string/null | URL for previous page of results |
results |
array | Array of destination objects |
results[].id |
integer | Unique destination identifier |
results[].prefix |
string | Phone number prefix (country code + area code) |
results[].country_name |
string | Country name (UPPERCASE) |
results[].description |
string | Network/carrier description |
results[].mccmnc |
string | Mobile Country Code + Mobile Network Code |
results[].interval_1 |
integer | Initial billing interval in seconds |
results[].interval_n |
integer | Subsequent billing interval in seconds |
results[].created_at |
datetime | Record creation timestamp (ISO 8601) |
results[].updated_at |
datetime | Last update timestamp (ISO 8601) |
Example Requests:
# Search by country
GET /search/?country_name=CAMBODIA
# Search by prefix
GET /search/?prefix=855
# Search by MCC/MNC
GET /search/?mccmnc=45601
# Search with pagination
GET /search/?country_name=UNITED%20STATES&limit=500&page=2
# Combined search
GET /search/?country_name=CAMBODIA&description=Mobile&limit=100Status Codes:
200 OK- Successful response with results400 Bad Request- Invalid query parameters429 Too Many Requests- Rate limit exceeded500 Internal Server Error- Server error
Retrieve historical billing increment changes filtered by year, country, or change type.
Endpoint: GET /updates/
Query Parameters:
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
year |
integer | No | Filter by year | 2024, 2025 |
country |
string | No | Filter by country name (UPPERCASE) | CAMBODIA |
change_type |
string | No | Filter by change type | increase, decrease, improved, mixed |
limit |
integer | No | Results per page (1-500) | 100 (default) |
page |
integer | No | Page number for pagination | 1, 2, 3 |
Response Schema:
{
"count": 245,
"next": "https://destinations-api.telecomsxchange.com/updates/?page=2",
"previous": null,
"results": [
{
"id": 5678,
"prefix": "85512",
"country_name": "CAMBODIA",
"description": "Metfone Mobile",
"mccmnc": "45608",
"old_interval_1": 60,
"old_interval_n": 60,
"new_interval_1": 60,
"new_interval_n": 1,
"change_type": "improved",
"change_date": "2025-03-20",
"notes": "Billing improved to per-second increments"
}
]
}Response Fields:
| Field | Type | Description |
|---|---|---|
change_type |
string | Type of change: improved, mixed, increase, decrease |
old_interval_1 |
integer | Previous initial billing interval (seconds) |
old_interval_n |
integer | Previous subsequent billing interval (seconds) |
new_interval_1 |
integer | New initial billing interval (seconds) |
new_interval_n |
integer | New subsequent billing interval (seconds) |
change_date |
date | Date when billing change occurred (ISO 8601) |
notes |
string | Additional information about the change |
Example Requests:
# Updates for 2025
GET /updates/?year=2025
# Improvements only
GET /updates/?change_type=improved
# Country-specific updates
GET /updates/?country=CAMBODIA&year=2025
# All deteriorations
GET /updates/?change_type=decreaseRetrieve billing changes from the last N days (1-365 days).
Endpoint: GET /updates/recent
Query Parameters:
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
days |
integer | No | Number of days to look back (1-365) | 30 (default), 7, 90 |
limit |
integer | No | Results per page (1-500) | 100 (default) |
Response Schema:
Same as /updates/ endpoint.
Example Requests:
# Last 30 days (default)
GET /updates/recent
# Last 7 days
GET /updates/recent?days=7
# Last 90 days with higher limit
GET /updates/recent?days=90&limit=500Retrieve aggregated statistics about billing changes.
Endpoint: GET /updates/summary
Query Parameters:
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
year |
integer | No | Filter summary by year | 2025 |
days |
integer | No | Summary for last N days | 30, 90 |
Response Schema:
{
"total_updates": 1543,
"improvements": 987,
"deteriorations": 234,
"mixed_changes": 322,
"affected_countries": 156,
"affected_prefixes": 1234,
"period": "2025-01-01 to 2025-12-31",
"top_improving_countries": [
{"country": "CAMBODIA", "count": 45},
{"country": "THAILAND", "count": 38}
],
"top_deteriorating_countries": [
{"country": "EXAMPLE_COUNTRY", "count": 12}
]
}Response Fields:
| Field | Type | Description |
|---|---|---|
total_updates |
integer | Total number of billing updates |
improvements |
integer | Number of improved billing increments |
deteriorations |
integer | Number of deteriorated billing increments |
mixed_changes |
integer | Number of mixed/neutral changes |
affected_countries |
integer | Number of countries with changes |
affected_prefixes |
integer | Number of prefixes with changes |
period |
string | Date range covered by summary |
top_improving_countries |
array | Countries with most improvements |
top_deteriorating_countries |
array | Countries with most deteriorations |
Example Requests:
# Summary for 2025
GET /updates/summary?year=2025
# Summary for last 90 days
GET /updates/summary?days=90
# Overall summary
GET /updates/summaryThe API uses a two-part billing format: interval_1/interval_n
| Format | interval_1 | interval_n | Meaning |
|---|---|---|---|
1/1 |
1 second | 1 second | Per-second billing from start (best) |
60/1 |
60 seconds | 1 second | 60s minimum, then per-second (better) |
30/30 |
30 seconds | 30 seconds | 30s increments throughout (good) |
60/60 |
60 seconds | 60 seconds | Per-minute billing (standard) |
180/180 |
180 seconds | 180 seconds | 3-minute increments (less favorable) |
For a 2 minute 15 second (135 second) call:
| Billing | Calculation | Charged Time | Notes |
|---|---|---|---|
1/1 |
135 × 1s | 135 seconds | Most favorable |
60/1 |
60 + (75 × 1s) | 135 seconds | Same as 1/1 after minimum |
60/60 |
60 + (60 × 2) | 180 seconds | Rounded to 3 minutes |
180/180 |
180 | 180 seconds | Rounded to full 3 minutes |
Key Insight: Lower interval_1 and interval_n values = better cost control
- Rate: 100 requests per minute
- Window: Rolling 60-second window
- Response Header:
X-RateLimit-Remaining(if available)
- Batch requests - Use pagination with higher limits (
limit=1000) instead of multiple small requests - Cache responses - Store frequently accessed data locally
- Implement retry logic - Handle
429responses with exponential backoff - Monitor usage - Track your request count per minute
When rate limit is exceeded:
{
"error": "Rate limit exceeded",
"detail": "Maximum 100 requests per minute allowed",
"retry_after": 45
}Status Code: 429 Too Many Requests
{
"error": "Error type",
"detail": "Detailed error message",
"field": "parameter_name"
}| Status Code | Error Type | Description | Solution |
|---|---|---|---|
400 |
Bad Request | Invalid query parameters | Check parameter format and values |
404 |
Not Found | No results match query | Broaden search criteria |
429 |
Rate Limit | Too many requests | Wait before retrying |
500 |
Server Error | Internal API error | Retry after delay |
All list endpoints support pagination.
| Parameter | Description | Default | Max |
|---|---|---|---|
page |
Page number | 1 | N/A |
limit |
Results per page | 100 | 1000 (search), 500 (updates) |
{
"count": 5432,
"next": "https://api.example.com/search/?page=2&limit=100",
"previous": null,
"results": [...]
}# Page 1
GET /search/?country_name=UNITED%20STATES&limit=1000
# Page 2 (use 'next' URL from response)
GET /search/?country_name=UNITED%20STATES&limit=1000&page=2# Step 1: Search all carriers for Cambodia mobile
GET /search/?country_name=CAMBODIA&description=Mobile&limit=100
# Step 2: Filter results by billing
# Look for interval_1=1 or interval_n=1 in results
# Step 3: Check recent billing changes
GET /updates/recent?days=30
# Step 4: Verify no recent deteriorations
# Filter response for Cambodia + specific MCC/MNC# Step 1: Extract prefix from +855 12 345 6789 → "85512"
GET /search/?prefix=85512
# Step 2: Verify result matches expected country
# Check response[0].country_name == "CAMBODIA"
# Step 3: Confirm carrier assignment
# Check response[0].mccmnc and description# Step 1: Get summary statistics
GET /updates/summary?year=2025
# Step 2: Get detailed improvements
GET /updates/?year=2025&change_type=improved&limit=500
# Step 3: Compare to previous year
GET /updates/summary?year=2024- Format: Digits only, no symbols
- Example:
855(Cambodia),44(UK),1212(US New York) - Length: 1-15 digits
- Standard: E.164 compliant
- Format: Concatenated MCC + MNC
- MCC: 3 digits (Mobile Country Code)
- MNC: 2-3 digits (Mobile Network Code)
- Example:
45601= MCC 456 (Cambodia) + MNC 01 (Cellcard)
- Format: UPPERCASE text
- Example:
CAMBODIA,UNITED STATES,UNITED KINGDOM - Special Cases: Multi-word countries use spaces
- Format: ISO 8601
- Example:
2025-10-12T14:30:00Z - Timezone: UTC (Z suffix)
The plugin automatically handles:
- URL construction with proper encoding
- Rate limit tracking via hooks
- Response parsing and formatting
- Error handling and retry logic
All API requests use the WebFetch tool:
WebFetch({
url: "https://destinations-api.telecomsxchange.com/search/?prefix=855",
prompt: "Extract and return all destination records with prefix, country_name, description, mccmnc, interval_1, and interval_n"
})- OpenAPI Specification:
https://destinations-api.telecomsxchange.com/openapi.json - API Documentation:
https://destinations-api.telecomsxchange.com/docs - Rate Limit Status: Check response headers or contact API maintainers
- Data Updates: API data is continuously updated; check
updated_atfield
Last Updated: 2025-10-12 API Version: 1.0 Plugin Version: 1.0.0