Integrate EchoComm's number provisioning and call tracking into your marketing stack with our RESTful API.
Search available DID numbers by area code, region, or capabilities. Use this endpoint to explore our real-time number inventory before provisioning.
import requests
# Authentication
API_KEY = "your_api_key_here"
BASE_URL = "https://api.echotext.net/v1"
headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
}
# Search for available numbers in area code 415 (San Francisco)
params = {
"area_code": "415",
"capabilities": ["sms", "voice"],
"limit": 10
}
response = requests.get(
f"{BASE_URL}/numbers/search",
headers=headers,
params=params
)
print(response.json())
{
"status": "success",
"data": {
"available_numbers": [
{
"number": "+14155551234",
"area_code": "415",
"region": "California",
"capabilities": ["sms", "voice"],
"monthly_cost": "1.50",
"setup_fee": "0.00"
}
],
"total_available": 847
}
}
Provision (activate) one or more numbers from your search results. Assign them to campaigns with custom tags and webhook URLs for real-time event notification.
# Provision numbers for a new marketing campaign
payload = {
"numbers": ["+14155551234", "+14155555678"],
"campaign_id": "camp_2026_q1_google_ads",
"webhook_url": "https://your-crm.com/webhooks/echocomm",
"auto_renew": True,
"tags": ["google_ads", "san_francisco", "q1_2026"]
}
response = requests.post(
f"{BASE_URL}/numbers/provision",
headers=headers,
json=payload
)
print(response.json())
{
"status": "success",
"data": {
"provisioned": 2,
"numbers": [
{
"number": "+14155551234",
"sid": "num_abc123def456",
"status": "active",
"campaign_id": "camp_2026_q1_google_ads",
"provisioned_at": "2026-03-06T10:30:00Z"
},
{
"number": "+14155555678",
"sid": "num_xyz789ghi012",
"status": "active",
"campaign_id": "camp_2026_q1_google_ads",
"provisioned_at": "2026-03-06T10:30:01Z"
}
]
}
}
Configure a webhook endpoint to receive inbound SMS messages in real-time. Support for automatic retries and delivery confirmation ensures no message is lost.
# Configure SMS webhook for inbound message routing
payload = {
"url": "https://your-crm.com/api/inbound-sms",
"method": "POST",
"events": ["sms.received", "sms.delivery_report"],
"headers": {
"X-Webhook-Secret": "whsk_your_secret_key"
},
"retry_policy": {
"max_retries": 3,
"backoff_seconds": 30
}
}
response = requests.post(
f"{BASE_URL}/webhooks/sms/configure",
headers=headers,
json=payload
)
print(response.json())
{
"status": "success",
"data": {
"webhook_id": "whk_789xyz456abc",
"url": "https://your-crm.com/api/inbound-sms",
"events": ["sms.received", "sms.delivery_report"],
"status": "active",
"created_at": "2026-03-06T11:00:00Z"
}
}
Contact your Account Executive for complete SDK documentation, sandbox access, and dedicated integration support.
Request API Access