Troubleshooting
SIP response codes: a practical troubleshooting guide
SIP response codes tell you how a SIP server or endpoint handled a request. Start with the code class, then inspect the request, the responding hop, authentication, routing, and the response body.
Common codes
SIP response-code lookup
| Code | Meaning | Check this first |
|---|---|---|
| 100 | Trying | The request arrived. Wait for the next response. |
| 180 | Ringing | The destination is ringing. Check that the caller hears the expected ringback. |
| 183 | Session Progress | Check the Session Description Protocol (SDP) and the early-media path. |
| 200 | OK | The request succeeded. For an INVITE, check the ACK and the two-way media path. |
| 302 | Moved Temporarily | Check the new address in the Contact header before retrying. |
| 400 | Bad Request | Check the request format and required headers. |
| 401 | Authentication Required | Check the username, password, realm, nonce handling, and authentication retry. |
| 403 | Forbidden | The server refused the request. Check the identity, permissions, and policy. |
| 404 | Not Found | Check the user, number, route, and domain. |
| 407 | Proxy Authentication Required | Check the proxy username, password, realm, and authentication retry. |
| 408 | Request Timeout | Check that the next device is reachable and that the route is correct. |
| 415 | Unsupported Media Type | Check the message Content-Type and whether the receiving system supports it. |
| 420 | Bad Extension | Remove or correct the unsupported SIP extension named in the response. |
| 423 | Interval Too Brief | Use a registration or session time at least as long as the Min-Expires value. |
| 480 | Temporarily Unavailable | Check registration, network access, routing, and temporary call rules. |
| 481 | Call or Transaction Not Found | Check the Call-ID, tags, CSeq, dialog details, and transaction state. |
| 483 | Too Many Hops | Look for a routing loop and check Max-Forwards at each step. |
| 484 | Address Incomplete | Check the number format, dial plan, and route. |
| 486 | Busy Here | The phone is busy or rejected the call. Check its state and call-handling rules. |
| 487 | Request Terminated | An earlier request was cancelled. Match the CANCEL with the original request. |
| 488 | Not Acceptable Here | Compare the SDP offer and answer for codecs, encryption, direction, and media support. |
| 491 | Request Pending | Another request in the same call is still running. Follow the SIP retry timing. |
| 500 | Server Internal Error | Check the responding server logs and any response from the next device. |
| 503 | Service Unavailable | Check capacity, maintenance, trunk status, routes, and the Retry-After value. |
| 580 | Precondition Failure | Check whether the required Quality of Service (QoS) or session conditions can be met. |
| 603 | Declined | The destination declined the request. Check the user choice and call policy. |
| 604 | Does Not Exist Anywhere | Check that the user or number exists in the correct domain. |
| 606 | Not Acceptable | The user cannot accept this session. Check device support and policy. |
The important distinction
The response code describes signalling, not necessarily the final user experience. A call can receive 200 OK and still have silence if RTP is blocked, advertised with the wrong address, or negotiated with an unusable codec.
FAQ
Is 401 always an error?
No. A server commonly uses 401 to request digest authentication; the client should retry with credentials. Repeated 401 responses usually point to credentials, realm, nonce handling, or account configuration.
What should I do with a 488?
Compare the SDP offer and answer. Look for no common codec, unsupported encryption, incompatible media direction, or an unreachable media profile.
Reference: RFC 3261 SIP.