> ## Documentation Index
> Fetch the complete documentation index at: https://docs.threetone.in/llms.txt
> Use this file to discover all available pages before exploring further.

# Telephony troubleshooting

> Isolate import, assignment, runtime, and provider failures without treating a saved phone number as a successful call.

Start with the operation that failed. Import validation, saved assignment, provider routing, and conversation execution are separate stages with different evidence.

## Diagnose the stage

| Symptom | Check next |
| - | - |
| Import rejects the request | Provider variant, required fields, routing identity, and workspace access. For Twilio, explicitly set `enable_sms: false` and omit `account_auth_token`. |
| Branch assignment fails | The number must have an assigned agent and the branch must belong to that agent. |
| Record exists but no call connects | Import does not provision or authenticate the provider. Confirm the released runtime and provider route before changing agent prompts. |
| General outbound route rejects the number | Check managed PSTN source and Twilio fulfillment requirements. Exotel and SIP records do not satisfy this route. |
| Runtime is unavailable | Check [current availability](/agents-platform/overview#current-availability), the selected version, and deployment readiness. Reimporting the number does not enable execution. |
| Cancellation fails | Inspect the cancellation result and required provider identifiers. Do not assume service or provider billing has stopped. |

## Inspect saved configuration first

<Steps>
  <Step title="Read the phone record">
    Use [Get phone number](/api-reference/agents-platform/get-phone-number). Compare the identifier, assignment, environment, and trunk details with your intended deployment. Record safe identifiers and the request error code.
  </Step>

  <Step title="Check recent changes">
    A supplied `agent_id` without `branch_id` clears the old branch selection. An explicit null branch also removes it. Review [assignment rules](/agents-platform/deploy/telephony/customize-calls) before applying another update.
  </Step>

  <Step title="Review provider evidence when a runtime is available">
    Compare the authorized test call's timestamp, direction, provider call ID, response status, and routing destination. If signaling succeeds but audio fails, inspect the negotiated media settings and network path rather than assuming successful signaling proves two-way audio.
  </Step>
</Steps>

For a carrier-side SIP issue, use the provider's current diagnostics, such as [Twilio's trunk troubleshooting](https://www.twilio.com/docs/sip-trunking/troubleshooting). Keep signaling credentials, access tokens, and customer transcripts out of public reports. Avoid repeated outbound retries until you know whether an earlier attempt created a call.

## Prepare a useful support report

Include the operation, redacted error, workspace and phone-number identifiers, agent and branch identifiers, timestamp with time zone, and expected routing behavior. State whether the failure occurred before provider contact, during signaling, or after answer. Include a provider call ID only when an actual provider attempt exists.

## Frequently asked questions

<AccordionGroup>
  <Accordion title="Does configured SIP status mean the carrier accepted my credentials?" id="telephony-troubleshooting-faq-status">No. It reflects stored configuration. Import does not perform a live authentication or connectivity check.</Accordion>
  <Accordion title="Should I keep retrying an outbound request after a timeout?" id="telephony-troubleshooting-faq-retry">First establish whether the previous request created a call. A blind retry can create duplicate attempts once calling is available.</Accordion>
</AccordionGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.