Voice AI Ecosystem
Connect Exotel SIP trunking to Smallest AI (Atoms)
11 min
this guide connects exotel sip trunking to smallest ai atoms using import sip (bring your own number over sip) smallest documents this in the platform phone numbers flow — you provide a sip termination url (where atoms sends outbound sip toward your carrier) and copy the sip origination url that atoms gives you into your carrier for inbound routing github repo (reference) https //github com/exotel/agentstream voiceaiecosystem applicability ui driven (atoms “import sip” screen) with optional api driven outbound call triggering exotel edge use ip\ port (and transport) from exotel for sip toward their gateway (network and firewall) enter the value smallest expects as the termination target (often host\ port or sip\ host\ port — follow the import sip form and phone numbers doc) edge hostnames you may see (india) in voip exotel com 5070 (tcp) and in voip exotel com 443 (tls) use the exact host/ip + port + transport exotel assigns see exotel trunk api snippets md acl vs digest (important) exotel trunk acl (whitelisted ips) is intended for static /32 ips only (mask 32) if a provider publishes only cidr/shared egress , do not attempt to whitelist ranges—prefer digest and coordinate with exotel/provider support if calls fail origination url is tenant specific after you add a custom sip number, atoms shows a sip origination url — copy it exactly into exotel destination uris for pstn → exotel → smallest do not reuse example hostnames from third party summaries engineering detail smallest/integrations/exotel vsip/smallest exotel voice ai connector md quickstart smallest/integrations/exotel vsip/quickstart md smallest ai (from official docs) topic detail import sip https //atoms docs smallest ai/platform/deployment/phone numbers md phone number (e 164), sip termination url , optional username / password , sip origination url (provided by atoms → paste into provider) https //atoms docs smallest ai/intro/capabilities/telephony md https //atoms docs smallest ai/intro/capabilities/telephony md — inbound, outbound, sip to existing infrastructure outbound api https //atoms docs smallest ai/api reference/calls/start an outbound call md — requires agent + linked phone number console app smallest ai codec / security smallest’s public docs describe sip integration in product terms; confirm codec (e g g 711 / opus) and srtp requirements with https //atoms docs smallest ai/platform/troubleshooting/getting help md if calls fail at sdp negotiation flows direction what to configure outbound sip (atoms → exotel → pstn) exotel create trunk → map did → post /credentials (digest) smallest import sip — sip termination url = exotel edge ip\ port (format per ui); username / password = same as exotel credentials if you use digest auth inbound sip (pstn → exotel → atoms) smallest copy sip origination url from the imported number exotel post /destination uris on the trunk with that uri (host, port, ;transport= per atoms) flow → connect sip \<trunk sid> in dial whom exotel trunk acl (whitelisted ips) use only if smallest publishes fixed static sip egress ips you must allow — one ip per post , mask 32 exotel trunk does not support arbitrary cidr range acl entries if smallest does not publish static egress ips, rely on digest and smallest’s documented networking part a — smallest ai (atoms) sign in at app smallest ai phone numbers → add number → import sip ( https //atoms docs smallest ai/platform/deployment/phone numbers md ) enter your exotel did in e 164 sip termination url exotel edge host/ip and port from https //docs exotel com/dynamic sip trunking/network and firewall configuration (align transport with exotel and the import sip field) if using sip digest with exotel, set username / password to match post /credentials on the exotel trunk save and copy sip origination url for exotel inbound routing assign the number to your agent ( agent settings → phone number per https //atoms docs smallest ai/platform/deployment/phone numbers md ) part b — exotel apis auth api key\ api token\@api in exotel com · 200 requests/minute (sip trunk apis) · exotel trunk api snippets md outbound sip (minimal) create trunk map did post /credentials — must match smallest username / password when used optional post /whitelisted ips only for each static smallest egress ip smallest documents (mask 32) inbound sip — destination uri on trunk use the sip origination url from atoms (example shape only — replace with your copied value ) curl s x post "https //${api key} ${api token}@${subdomain}/v2/accounts/${account sid}/trunks/${trunk sid}/destination uris" \\ h "content type application/json" \\ d '{ "destinations" \[ { "destination" "\<paste sip origination uri from atoms>" } ] }' connect applet (inbound) dial whom sip \<trunk sid> — docid 2oddtedmmf64scwjhgvkt testing outbound https //atoms docs smallest ai/api reference/calls/start an outbound call md with agentid and the imported phone number inbound pstn dial your exotel did; call should reach the agent assigned in atoms troubleshooting symptom what to check 401 on sip digest mismatch (exotel /credentials vs smallest import sip) 408 / timeout termination url wrong ip\ port or transport blocked inbound never reaches atoms destination uris must match sip origination url exactly; connect uses sip \<trunk sid> media / codec issues confirm codecs and srtp with smallest docs or support references resource url smallest — app https //app smallest ai/ atoms — phone numbers (import sip) https //atoms docs smallest ai/platform/deployment/phone numbers md atoms — telephony capability https //atoms docs smallest ai/intro/capabilities/telephony md atoms — start outbound call api https //atoms docs smallest ai/api reference/calls/start an outbound call md atoms — get acquired phone numbers https //atoms docs smallest ai/api reference/phone numbers/get acquired phone numbers md exotel sip api https //docs exotel com/dynamic sip trunking/detailed sip trunking api reference
Have a question?
Our super-smart AI, knowledgeable support team and an awesome community will get you an answer in a flash.
To ask a question or participate in discussions, you'll need to authenticate first.
