SIP is a communication protocol that is very similar to HTTP, and the SIP messages within this protocol are very similar to HTTP messages. Just like in HTTP, SIP messages have 3-digit codes starting with the numbers 2, 3, 4, 5 and 6. Let’s examine the most common and used SIP messages before proceeding to detailed descriptions of these messages:
Most Common SIP Messages & Their Explanations
|REGISTER||To register the URI listed in the To header field to a SIP server and associate it with the network address given in the Contact header field.|
|INVITE||Starts a communication to search. The request is sent to a SIP server by a user client (eg. IP phone). When sent during a currently established communication (RE-INVITE), it changes the session (eg. put the call on hold).|
|ACK||Used to verify that you received a final response to an INVITE request.|
|BYE||Reports that a communication has been terminated and ends the call.|
|CANCEL||Cancels all pending requests. Used to end a call that is still ringing.|
|UPDATE||Changes the state of the session without changing the state of communication.|
|REFER||Requests the Recipient to make a request to transfer the call.|
|PRACK||Temporary approval. It is sent in response to a temporary response.|
|SUBSCRIBE||Starts a subscription for reporting events from a notification.|
|NOTIFY||Used to notify notifications of a new event to a subscriber.|
|PUBLISH||Used to broadcast an event on the notification server.|
|MESSAGE||Sends a text message. It is used in instant messaging applications.|
|INFO||Used to send mid-session information that does not change session state. This method is generally used for DTMF relay.|
|OPTIONS||Queries the capabilities of an endpoint. It is often used for NAT and keepalive.|
You can also find SIP messages starting with 3-digit codes below:
SIP Messages Beginning with 1XX
These are informational responses. It reports that the request is valid and has been processed. It is used to report temporary situations such as Trying or Ringing.
- 100 Trying : Dispatched in response to INVITE message. It may take some time to find out where the target is, so the SIP proxy sends this response.
- 180 Ringing : Target user agent (dialed number) received INVITE and rings the phone.
- 181 Call Is Being Forwarded : Servers can optionally send this response to indicate that a call is forwarded.
- 182 Queued : Indicates that the destination is temporarily unavailable, so the server queues the call (on hold) until the destination is available. A server can send more than 182 responses to update the queue progress.
- 183 Session Progress : This response is used to send additional information for a call that is currently being established.
- 199 Early Dialog Terminated : Used by a User Agent Server to indicate that an early communication has been terminated to the upstream SIP entities.
SIP Messages Starting with 2XX
Indicates that the request was successfully completed. Indicates that a call has been made in response to an INVITE message. Indicates a recent success. The most common code is 200 OK.
- 200 OK : Indicates that the request was successful.
- 202 Accepted : Indicates that the request has been accepted for processing, but the transaction has not been completed.
- 204 No Notification : Indicates that the request was successful, but no response is received.
SIP Messages Beginning with 3XX
These codes are used if call forwarding is required to complete the request. With these codes, the request will be completed on a new target. It is also used to indicate a malfunction, but also contains information about the user’s new location or alternative places that can answer the call. These are typical responses generated by IP phones when features such as Forward All Calls or Do Not Disturb are enabled on the phone.
- 300 Multiple Options : The address indicates that the user or client listed in the message body or the Contact fields of the message has been resolved to one of several options to choose from.
- 301 Moved Permanently : The original request indicates that the URI is no longer valid, and its new address is given in the Contact header field. The client should update the original request URI records with the new value.
- 302 Moved Temporarily : The request should retry with the address in the Contact field. If there is an Expires field, the client can cache the result for this time.
- 305 Use Proxy : Indicates that there is a proxy in the Contact field that must be used to reach the desired destination.
- 380 Alternative Service : Indicates that the call has failed but there are alternatives in the message body.
SIP Messages Beginning with 4XX
It is the most crowded message code family. If the incoming request cannot be completed on the server for various reasons, it is used to indicate the error status, but it is a condition caused by the SIP Proxy that generates this message. This means that some other SIP Proxies, if any, can successfully process the request.
- 400 Bad Request : Dispatched when the request cannot be understood due to malformed syntax.
- 401 Unauthorized : Dispatched when user authentication is required for the request. This answer is given by UAS and SIP registrar.
- 402 Payment Required: Dispatched when payment is required for the request. (reserved for future use)
- 403 Forbidden : Dispatched when the server understands the request but refuses to fulfill it. It can also mean that the call was rejected by the recipient.
- 404 Not Found : The server sends this message when the user is not in the domain specified in the Request-URI. This is also returned if the domain in the Request URI does not match any of the domains processed by the recipient of the request.
- 405 Method Not Allowed : Dispatched when the method specified in the Request-Line is understood but not allowed for the address defined by RequestURI.
- 406 Not Acceptable : Dispatched when there is an unacceptable status according to the Accept header information sent in the request.
- 407 Proxy Authentication Required : Dispatched when user authentication is required for the request. This answer is given by proxies.
- 408 Request Timeout : Dispatched when the user specified in the request cannot be found within the required time. The client can repeat the request without making changes at any time.
- 409 Conflict : Dispatched when the user is already registered. (Deprecated due to subsequent removal from RFCs.)
- 410 Gone: Dispatched when this once existing user is no longer available.
- 411 Length Required : Dispatched when the server will not accept the request without a valid Content-Length. (Deprecated due to subsequent removal from RFCs.)
- 412 Conditional Request Failed : Dispatched when the specified prerequisite is not met.
- 413 Request Entity Too Large : Sent when the body of the request message is too large.
- 414 Request URI Too Long : Dispatched to indicate that the server refuses to service this service if the request is longer than the server can interpret.
- 415 Unsupported Media Type : Dispatched when the body of the request message is of an unsupported format.
- 416 Unsupported URL Scheme : Dispatched when the Request-URI is not supported by the server.
- 420 Bad Extension: Dispatched when an invalid SIP Protocol extension is used, when not understood by the server.
- 421 Extension Required : Dispatched when the server needs a specific extension not listed in the Supported header.
- 422 Session Interval Too Small : The request received is sent when it contains a Session-Expires header field with a time below the minimum timer value.
- 423 Interval Too Brief : Dispatched when the source’s Expiration time is too short.
- 424 Bad Location Information : Dispatched when the location content of the request is malformed or otherwise inadequate.
- 428 Use Identity Header : Dispatched when the server configuration requires an Identity header header and this value is not provided in the request.
- 429 Provide Referrer Identity : Dispatched when the server does not receive a valid Referred-By token on request.
- 430 Flow Failed : Dispatched when a specific stream of a user agent fails while other streams are successful. This response is designed to be used between proxy devices and should not be seen by the end device (if it is seen by it, it should be considered as 400 Bad Request).
- 433 Anonymity Disallowed : Indicates that the request was rejected because it is anonymous.
- 436 Bad Identity-Info : Dispatched when the request has an Identity-Info header and the URI schema record in this header is not understood.
- 437 Unsupported Certificate : Dispatched when the server cannot verify a certificate for the domain signing the request.
- 438 Invalid Identity Header : Dispatched when the server has a valid certificate for the request to sign the request but cannot verify this signature.
- 439 First Hop Lacks Outbound Support : Dispatched when the first outbound prox that the user attempts to register does not support the “outbound” feature of the RFC 5626, although the register supports it.
- 440 Max-Breadth Exceeded : If a SIP proxy determines that a response context has insufficient Incoming Max-Breadth value to execute a desired parallel fork, and the proxy does not want to compensate by forcing it or by sending a redirect, 440 response of this proxy should send. A client receiving the 440 response may cause his request to fail to reach all possible targets.
- 469 Bad Info Package : If a SIP UA receives an INFO request associated with an Info Package that the UA has not indicated willingness to receive, the UA MUST send a 469 response, which contains a Recv-Info header field with Info Packages for which the UA is willing to receive INFO requests.
- 470 Consent Needed : If the source of the request is not allowed to make such a request for the buyer It skinned.
- 480 Temporarily Unavailable : This message is sent when the called number is temporarily unavailable.
- 481 Call / Transaction Does Not Exist : Dispatched when the server receives a request that cannot match the request with any dialog box or transaction.
- 482 Loop Detected : Dispatched when the server detects a loop.
- 483 Too Many Hops : Dispatched when the call passes over too many hops (when the Max-Forward header reaches ‘0’).
- 484 Address Incomplete : Dispatched if the request-URI header is missing.
- 485 Ambigious : Dispatched if the request-URI header is uncertain.
- 486 Busy Here : Dispatched if the called number is busy.
- 487 Request Terminated : Dispatched when the request is terminated by BYE or CANCEL.
- 488 Not Acceptable Here : Dispatched when Session Description or Request-URI parameters are not accepted.
- 489 Bad Event : Dispatched when the server does not understand an event packet in the Event header.
- 491 Request Pending : Dispatched when the server has other pending requests from the same dialog box.
- 493 Undecipherable : Dispatched when the server cannot decrypt the MIME body in the incoming request.
- 494 Security Agreement Required : Dispatched when the server receives a request that requires a negotiated security mechanism and the response contains a list of appropriate security mechanisms or digest authentication issues that the requester can select.
SIP Messages Starting with 5XX
Messages that are received when the server fails to fulfill a valid request, including server internal errors. Used to indicate that the PBX server encountered an internal error.
- 500 Internal Server Error : Dispatched when the server is unable to fulfill the request due to an unexpected situation.
- 501 Not Implemented : The server sends this message if it is not capable of fulfilling the request because it does not recognize the request method.
- 502 Bad Gateway : The server can send this message if it behaves like a gateway or proxy and received an invalid response from a sub-server when trying to fulfill the request.
- 503 Service Unavailable : Sends this message if the server is under maintenance or temporarily overloaded and therefore cannot process the request. With the Retry-After header, Sunuu can specify when the client can retry the request.
- 504 Server Timeout : The server sends this message if it tried to access another server while trying to process the request and did not receive a response.
- 505 Version Not Supported : The server sends this message if it does not support this version of the SIP protocol.
- 513 Message Too Large : Sends this message if the length of the server request message is longer than the server can handle.
- 555 Push Notification Service Not Supported : The server sends this message if a ‘pn provider’ does not support the push notification service defined in the SIP URI parameter.
- 580 Precondition Failure : Sends this message when the server is inadequate or unwilling to meet some of the restrictions mentioned in the offer.
SIP Messages Beginning with 6XX
Indicates a general error, including the rejection of the call by the target. The final is used to indicate an error condition and indicate that it is of a general nature, and indicates that this request cannot be handled by any other SIP Proxy under any circumstances.
- 600 Busy Everywhere : All possible locations are busy. Unlike the 486 response, this response indicates that the target knows that there are no alternative destinations (such as a voicemail server) that can accept the call.
- 603 Decline : Sends this message when the destination does not want to participate in the call or knows that there are no alternative destinations (such as a voicemail server) who wants to make the call and also the destination accepts the call. A better search is specified in the Retry-After header field in the response.
- 604 Does Not Exist Anywhere : The server sends this message if it knows that the requested user is not found anywhere.
- 606 Not Acceptable : Indicates that the user’s agent has been successfully communicated, but some values such as desired media, bandwidth, or addressing style of the session description are unacceptable.
- 607 Unwanted : If the called party does not want this call of the calling party, this message is sent. It is likely that future calls of the calling party will be similarly rejected.
- 608 Rejected : This message is delivered when an agent rejects the machine or process call attempt. This is different from the 607 (Unwanted) SIP response code, where the called party rejected the call. The response can include contact information that blocks the call in the Call-Info header.