What the API covers
| Resource | Endpoints | Use it for |
|---|---|---|
| Phone numbers | GET /dids/available, GET /dids/coverage, POST /dids, GET/PUT /dids/{id} | Search inventory by area code or region, order numbers, route them to a trunk, review or change routing |
| SIP trunks | GET/POST /trunks, GET/PUT/DELETE /trunks/{id} | Create registration or IP-authenticated trunks, update endpoints and settings, remove trunks |
| Call records | GET /account/cdrs | Pull call detail records by date range for billing reconciliation or your own reporting |
| Usage | GET /account/usage, GET /account | Minutes, spend and balance for the account |
| API keys | GET/POST /api-keys, DELETE /api-keys/{id} | Rotate and revoke keys programmatically |
Every endpoint is documented with request and response schemas in the interactive API reference, where you can call the API against your own account.
Authentication
Create an API key in the portal under Developer, then send it as a Bearer token on every request. Base URL: https://portal.ipcomms.net/api/v1.
curl https://portal.ipcomms.net/api/v1/account \
-H "Authorization: Bearer ipcomms_live_xxxxxxxxxxxxxxxxxxxxxxxx"Keys are scoped to your account and can be revoked at any time. Treat them like a password: keep them out of client-side code and version control.
Example: find and order a number
curl "https://portal.ipcomms.net/api/v1/dids/available?areaCode=404&limit=5" \
-H "Authorization: Bearer $IPCOMMS_API_KEY"curl -X POST https://portal.ipcomms.net/api/v1/dids \
-H "Authorization: Bearer $IPCOMMS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"numbers": ["+14045550123"], "trunkId": "trk_..."}'Parameter names and response fields are exact in the reference; the examples above show the shape.
Rate limits and errors
- Standard requests: 60 per minute
- Number searches: 30 per minute
- Exports: 10 per minute
Errors return a consistent JSON body:
{ "error": "Error description", "errorCode": "error_code" }
What is not in the API
Call control, messaging and hosted PBX configuration are not exposed today. If you need something the API does not cover, tell us what you are building.