SIP Response Codes, Header Fields & SDP Errors: A Troubleshooting Reference
The tool above parses and labels your SIP message automatically. This reference covers what the most common response codes actually mean in production, which header fields matter most during a failed call, and how to read SDP errors before they cost you another hour of troubleshooting.
Critical SIP Response Codes and What They Actually Mean
SIP response codes follow HTTP conventions in structure but carry meaning specific to real-time communications. A 4xx code means the client did something wrong. A 5xx means the server failed. A 6xx means the call is definitively rejected — no retry will help. Here are the codes that show up most in SBC logs during Direct Routing, Webex Calling, and SIP trunk deployments.
401 Unauthorized
Challenge / credential exchange
The server is not rejecting the call — it is issuing a
challenge. The UAC must extract the
WWW-Authenticate
header from the 401, compute a digest response using the
correct credentials, and resend the request with an
Authorization
header. If you see a 401 followed immediately by a 403, the
credentials are wrong or the realm does not match what the
server expects.
403 Forbidden
Auth failure or ACL block
Hard rejection. The server understood the request and explicitly denied it. In Direct Routing this almost always means one of three things: the SBC IP is not in the Microsoft allowed list, the SIP trunk credentials failed digest authentication, or the called number is not assigned to a user with a valid Phone System license. Check IP ACLs on the SBC and verify the Teams admin center trunk configuration before touching anything else.
407 Proxy Authentication Required
Proxy challenge
Same mechanism as 401 but issued by a proxy rather than the
endpoint. The response will contain a
Proxy-Authenticate
header. The UAC must resend with
Proxy-Authorization. Common in hosted SBC deployments where the carrier SBC sits
in front of the Teams infrastructure and issues its own auth
challenge before passing traffic upstream.
480 Temporarily Unavailable
Registration / reachability
The endpoint exists but cannot be reached right now. In practice this usually means the device is not registered, the registration has expired, or the SBC cannot reach the Teams infrastructure. Check the REGISTER flow in your SBC logs — if there is no active registration binding, no INVITE will succeed.
488 Not Acceptable Here
Codec mismatch / SDP rejection
Media negotiation failed. The remote device could not find a
compatible codec, media type, or transport in the SDP offer.
Paste the INVITE into the tool above and look at the codec
flags — compare what was offered against what the remote end
supports. In Webex Calling deployments this is frequently
caused by SRTP/RTP mismatch: one side is sending encrypted
media, the other expects plain RTP. Check
m=audio
transport line for
RTP/AVP
vs
RTP/SAVP.
503 Service Unavailable
Server overload / downstream failure
The server cannot process the request right now. In Direct Routing this appears when the Microsoft SIP proxy cannot be reached, when the SBC has exhausted its licensed session capacity, or when a downstream PSTN gateway is unreachable. Check SBC health dashboards first — session counts, CPU, and memory. If the SBC is healthy, check connectivity to the Microsoft SIP proxy FQDNs on port 5061 from the SBC itself.
Reading X-MS-Diagnostics Headers
When a call fails through Microsoft's SIP proxy, the response will
often include an
X-MS-Diagnostics
header containing a numeric code and a reason string. These codes
are specific to the Teams infrastructure and do not appear in
standard SIP RFCs. The tool above flags this header automatically
when it is present.
Paste any message containing X-MS-Diagnostics into the tool above — it will flag and surface the code automatically.
The Six Headers That Matter Most in Every SIP Message
SIP messages can contain dozens of headers. Most of them are supplemental. Six are mandatory in virtually every request and are the ones to check first when a call behaves unexpectedly.
Via
Hop-by-hop routing trace
Tracks every device the message has passed through. Each proxy
adds its own Via entry. The
branch
parameter must start with
z9hG4bK
per RFC 3261 — if it does not, the sending device is not
RFC-compliant and interop issues are likely. A
received=
parameter added by the server means NAT was detected between
the sending device and the proxy.
From / To
Dialog identity
From identifies the originator. To identifies the intended
recipient. Both carry a
tag
parameter — the From tag is set by the UAC on the initial
request, the To tag is added by the UAS in its response.
Together with Call-ID, these three values uniquely identify a
dialog. A missing From tag on a request is unusual and may
indicate a malformed message from a non-standard device.
Call-ID
Global call correlator
Every message in the same call — INVITE, 200 OK, ACK, BYE, re-INVITEs — shares the same Call-ID. This is your primary search key when correlating a call across SBC logs, proxy logs, and Microsoft Call Quality Dashboard. Copy it out of any message and use it to filter logs on every device in the path simultaneously.
CSeq
Transaction ordering
Contains a sequence number and the method name. The method in CSeq must match the request method — a mismatch indicates a malformed message. CSeq numbers increment with each new request in a dialog, which lets you reconstruct the order of events from out-of-sequence log entries. A re-INVITE for hold/resume will have a higher CSeq than the original INVITE.
Contact
Direct reachability URI
Provides the SIP URI where this device can be reached directly for subsequent requests in the dialog, bypassing the proxy. In NAT environments the Contact address is frequently the device's private IP — if the SBC is not correctly rewriting Contact headers to its public FQDN, in-dialog requests like re-INVITEs and BYEs will fail to route. This is one of the most common SBC misconfiguration patterns.
SDP Errors and One-Way Audio: What the Media Lines Are Telling You
The SDP body is where media negotiation happens. SIP handles call setup. SDP handles what media flows, which codecs are used, and where packets should go. Most one-way audio and no-audio problems trace back to something wrong in the SDP — not the SIP headers.
Port zero on a media line means the stream is being rejected or put on hold. If this appears in an INVITE rather than a re-INVITE, media negotiation has already failed before the call connected.
Connection address of 0.0.0.0 is a hold indicator. Media will not flow until a re-INVITE with a real IP address is sent. Expected during hold/resume sequences — unexpected in an initial INVITE.
Asymmetric media direction. If a=recvonly appears where you expect a=sendrecv, this is the direct cause of one-way audio. Often set incorrectly by hold logic or by misconfigured SBC media handling policies.
Transport protocol mismatch. RTP/AVP is unencrypted. RTP/SAVP is SRTP (encrypted). If one side offers SAVP and the other expects AVP, the result is a 488 and no media. Common in Webex Calling deployments where SRTP is mandatory.
If the INVITE offers G.711 only and the remote device requires G.729 or Opus, there is no intersection and the call fails with 488. Check the a=rtpmap lines in the INVITE SDP against the codec list configured on the receiving device or SBC.
If the SDP connection address is a RFC 1918 private IP and the call crosses a NAT boundary, the remote device will attempt to send RTP to an unreachable address. Call connects (SIP succeeds) but no audio flows. SBC must rewrite the c= line to its public IP.
| Codec | Payload Type | Notes |
|---|---|---|
| PCMU (G.711u) | 0 | Standard PSTN codec. North America default. Supported by all SBCs. |
| PCMA (G.711a) | 8 | PSTN codec, EMEA/APAC default. Interchangeable with PCMU in most deployments. |
| G.729 | 18 | Low bandwidth. Common on legacy PBX systems. Not supported by Teams Direct Routing natively. |
| Opus | dynamic | Preferred codec for Teams and Webex. Wideband, adaptive. Not supported by most PSTN gateways. |
| G.722 | 9 | HD voice (wideband). Supported on modern IP phones and SBCs. Requires wideband-capable SBC and carrier. |
Dealing with a live call failure on a Direct Routing or Webex Calling deployment? The consulting link in the sidebar covers SBC configuration, SIP trunk troubleshooting, and full UCaaS deployments.