SIP Concept

Re-INVITE vs UPDATE

5 min read  ·  Updated April 2026

Re-INVITE and UPDATE both modify an active SIP dialog — for hold/unhold, codec changes, media bypass, or session refresh. They are not interchangeable. UPDATE was added in RFC 3311 to fill specific gaps in re-INVITE, and choosing the wrong one causes interoperability failures.

In this guide

1. What each method does

Both re-INVITE and UPDATE modify an established SIP session. They differ in three key ways:

AspectRe-INVITEUPDATE
RFC defined inRFC 3261RFC 3311
Allowed in early dialogNoYes
Allowed in confirmed dialogYesYes
Requires ACKYesNo
Universal endpoint supportYesNo (must be in Allow header)
Risk of glareYes (491)Yes (491)

The most important practical difference is that UPDATE works in early dialogs (before answer) while re-INVITE does not. This matters for negotiating session parameters during ringing — for example, codec changes that need to take effect before the user picks up.

2. Re-INVITE in detail

Re-INVITE is a regular INVITE sent within an established dialog. It carries the same Call-ID and From-tag as the original, plus the To-tag established at confirmation. The CSeq increments.

Re-INVITE follows the full INVITE transaction lifecycle:

  1. Re-INVITE sent with new SDP
  2. Recipient may send 1xx provisional responses
  3. Recipient sends 2xx with new SDP (or rejects with 4xx/5xx/6xx)
  4. Sender sends ACK
  5. New session parameters take effect

The most common uses of re-INVITE:

If the recipient rejects re-INVITE, the dialog continues with the previous parameters. Failure of a re-INVITE does not terminate the call.

3. UPDATE in detail

UPDATE is similar to re-INVITE but designed specifically for cases where re-INVITE is not appropriate. RFC 3311 introduced it to solve two problems with re-INVITE:

Problem 1: re-INVITE not allowed in early dialogs

Before answer, the original INVITE transaction is still pending. Sending another INVITE for the same dialog would be ambiguous — is it a re-INVITE or a duplicate? RFC 3261 forbids re-INVITE in early dialogs. UPDATE works in early dialogs because it is a different transaction that does not conflict.

Problem 2: re-INVITE requires reliable provisional responses to be safe

If a re-INVITE could be sent in early dialogs, the response would have to be reliable (PRACK) to know it was received. UPDATE sidesteps this by being its own transaction with its own response.

UPDATE flow

  1. UPDATE sent with new SDP
  2. Recipient sends 200 OK with new SDP (or 4xx/5xx/6xx for rejection)
  3. No ACK required
  4. New parameters take effect

UPDATE is shorter and simpler than re-INVITE. The lack of ACK and provisional responses means it is faster, with less risk of mid-update interruption.

4. Choosing between them

The decision tree:

Use UPDATE when

Use re-INVITE when

RFC 4028 (session timers) recommends UPDATE if both sides support it for refresh, falling back to re-INVITE if not. This is one of the cleanest examples of UPDATE's intended use.

5. Interoperability and support gaps

UPDATE is not as universally supported as re-INVITE. The reasons are historical: re-INVITE was in RFC 3261 from the start, while UPDATE was added later in RFC 3311. Implementations from before UPDATE was widely adopted may not support it.

Endpoints advertise UPDATE support via the Allow header. Sending UPDATE to an endpoint that does not list it in Allow risks 405 Method Not Allowed. The fix is to fall back to re-INVITE.

Common interop issues:

Issue 01
UPDATE in early dialog rejected as 481
Some legacy stacks treat early-dialog UPDATE as a request for an unknown dialog and reject with 481 Call/Transaction Does Not Exist. The fix is to use re-INVITE after answer or to verify Allow header before sending UPDATE.
Issue 02
SBC stripping UPDATE
Some SBCs do not pass UPDATE through, converting it to re-INVITE on the other leg or rejecting it outright. Check SBC configuration if UPDATE that should reach the far end is being dropped.
Issue 03
Session timer mismatch
RFC 4028 supports both methods for session refresh. Mismatch happens when one side prefers UPDATE and the other prefers re-INVITE. Negotiation usually resolves this, but some implementations stick with their preference and fail.

6. Diagnosing re-INVITE/UPDATE in a trace

What to look for in a trace involving session changes:

Frequently asked questions

What is the difference between SIP re-INVITE and UPDATE?

Re-INVITE is a full INVITE transaction sent within an established dialog. It works in confirmed dialogs only and requires ACK. UPDATE was defined in RFC 3311 to allow session parameter changes in both early and confirmed dialogs without requiring ACK. UPDATE is faster and works before call answer, but is not as universally supported as re-INVITE.

When should I use UPDATE instead of re-INVITE?

Use UPDATE when modifying session parameters before the call is answered (in an early dialog), for session timer refresh per RFC 4028, or when you want a lighter transaction without ACK overhead. Use re-INVITE when the dialog is confirmed and you need full provisional response support, when endpoint UPDATE support is uncertain, or for significant changes like media path switches that benefit from PRACK.

Can SIP re-INVITE be used in early dialogs?

No. RFC 3261 forbids re-INVITE in early dialogs because the original INVITE transaction is still pending and a second INVITE for the same dialog would be ambiguous. UPDATE was specifically added in RFC 3311 to allow session parameter changes in early dialogs. If you need to renegotiate codecs or media before the call is answered, use UPDATE.

Diagnosing mid-call session changes?

Paste your SIP trace into SIPSymposium. The analyzer tracks re-INVITE and UPDATE patterns, SDP changes, and Allow header mismatches that cause mid-dialog renegotiation failures.

Analyze my trace Create free account
Related guides