[BUG] SIP Realtime API - No Audio Output, Phantom Audio Input (Broken Oct 18-22, 2025)

OpenAI Realtime API SIP Audio Potentially Critical Bug Report

Date: October 22, 2025
Affected Service: OpenAI Realtime API - SIP Integration
Severity: Critical - Complete audio failure on SIP calls
Status: Active bug affecting multiple users


Executive Summary

OpenAI’s Realtime API SIP integration has a critical bug where SIP calls connect successfully and AI responses are generated (confirmed by transcripts and WebSocket events), but no audio is transmitted over the RTP stream to callers. The same codebase was working correctly on October 18, 2025 and stopped working sometime between then and October 22, 2025, with no changes to our implementation.

This matches reports from other users in the OpenAI Developer Community experiencing identical issues in October 2025.


Environment Details

Infrastructure

  • SIP Provider: SignalWire (SWML-based routing)
  • Platform: Railway (Node.js backend)
  • Region: US East
  • Network: Cloud-hosted (Railway infrastructure)

OpenAI Configuration

  • API Endpoint: https://api.openai.com/v1/realtime/calls/{call_id}/accept
  • SIP Endpoint: sip:proj_xxxxxxxxxxxxxxxW@sip.api.openai.com;transport=tls;model=gpt-realtime-preview
  • WebSocket: wss://api.openai.com/v1/realtime?call_id={call_id}
  • Model (broken): gpt-realtime
  • Model (attempting workaround): gpt-realtime-2025-08-28

Audio Configuration

{
  "type": "realtime",
  "model": "gpt-realtime",
  "audio": {
    "input": {
      "format": "audio/pcmu",
      "transcription": {
        "language": "en",
        "model": "whisper-1"
      },
      "turn_detection": {
        "type": "semantic_vad"
      }
    },
    "output": {
      "voice": "cedar",
      "format": "audio/pcmu"
    }
  }
}

Timeline

Date Time Event
Oct 18, 2025 3:03 PM UTC-4 :white_check_mark: Call screening working correctly - audio audible
Oct 18, 2025 2:56 PM UTC-4 Deployed retry logic with exponential backoff
Oct 21, 2025 5:50 PM Added model=gpt-realtime-preview parameter to SIP URI
Oct 22, 2025 Morning :cross_mark: Audio completely silent - began troubleshooting
Oct 22, 2025 Afternoon Confirmed multiple users reporting same issue

Symptoms

What Works :white_check_mark:

  1. SIP signaling completes successfully

    • INVITE accepted with HTTP 200 OK
    • OpenAI returns proper SIP response
    • Call state shows as connected
  2. WebSocket connection established

    • Opens successfully
    • No WebSocket 1006 errors (in recent tests)
    • Maintains stable connection
  3. AI generates responses internally

    • Logs show response.output_audio_transcript.delta events
    • Logs show response.output_audio.done events
    • Transcripts are generated and stored correctly
    • Audio token counts confirm generation (e.g., 173 audio tokens)
  4. Webhook events fire correctly

    • realtime.call.incoming received
    • Call accepted successfully
    • All expected events arrive

What’s Broken :cross_mark:

  1. RTP audio stream is silent

    • Caller hears complete silence
    • No audio transmitted despite OpenAI generating it
    • RTP packets may be flowing but contain no audible audio
  2. Both codecs affected

    • PCMU (G.711 ΞΌ-law) - silent
    • PCMA (G.711 A-law) - not tested but community reports same issue
  3. OpenAI appears to generate additional β€œphantom” audio responses

    • After initial greeting, OpenAI continues generating new audio responses
    • These responses appear as separate realtime.response events with unique IDs
    • Each contains new transcripts as if OpenAI is hearing input we’re not sending
    • Example: After greeting, AI asks β€œCould you please tell me who you are and why you’re calling?”
    • This suggests OpenAI may be β€œhearing” something on the RTP input stream that we’re not sending
    • Hypothesis: RTP bidirectional issue - OpenAI may be receiving noise/silence as input and responding to it

Evidence from Logs

Successful WebSocket Connection (but no audio)

[OpenAI-SIP] βœ… WebSocket connected for call rtc_a46f81d14638494996963cc04eabaa12
[OpenAI-SIP] πŸ“¨ Event: response.created
[OpenAI-SIP] πŸ“¨ Event: response.output_audio.done
[OpenAI-SIP] πŸ”Š AUDIO EVENT DETAILS: {
  "type": "response.output_audio.done",
  "event_id": "event_CTWmcf72RIDeujSdIc1PW",
  "response_id": "resp_CTWmZhrXaRDN7CR6pAPH3",
  "item_id": "item_CTWmZTTulwmreIkFypPNQ",
  "output_index": 0,
  "content_index": 0,
  "transcript": "Hi, I'm XX, the AI answering service..."
}

Audio Format from OpenAI (WebSocket monitoring)

{
  "audio": {
    "output": {
      "format": {
        "type": "audio/pcm",
        "rate": 24000
      },
      "voice": "cedar"
    }
  },
  "usage": {
    "output_token_details": {
      "audio_tokens": 173
    }
  }
}

Note: WebSocket shows audio/pcm at 24kHz internally, but SIP should use audio/pcmu at 8kHz. This is expected - OpenAI’s SIP gateway should transcode.

Phantom Audio Responses (Bidirectional RTP Issue)

Critical Observation: OpenAI generates multiple audio responses during a call where the caller is not speaking. This indicates OpenAI may be receiving RTP input that we’re not sending, or interpreting silence/noise as input.

{
  "object": "realtime.response",
  "id": "resp_CTXDa69PlLThlfCbIQx9m",
  "output": [
    {
      "type": "output_audio",
      "transcript": "Hi, I'm [Company Name], the AI answering service. I notice you're calling from a number I don't recognize. Could you please tell me who you are and why you're calling?"
    }
  ],
  "output_token_details": {
    "text_tokens": 52,
    "audio_tokens": 174
  },
  "usage": {
    "total_tokens": 336,
    "input_tokens": 110,
    "output_tokens": 226
  }
}

Key Evidence:

  • input_tokens: 110 - OpenAI claims to have received 110 audio tokens of input
  • But caller has not spoken - they’re waiting to hear the greeting
  • This suggests OpenAI is receiving RTP input (possibly silence or noise) and treating it as speech
  • This may indicate a bidirectional RTP problem - both input and output paths affected

Alternative Explanation:

  • Input tokens could be from initial session setup/configuration
  • But the fact that AI asks follow-up questions suggests it’s β€œhearing” something

Example Call IDs with Audio Failure

With gpt-realtime model (broken):

  • rtc_a46f81d14638494996963cc04eabaa12 (Oct 22, 2025 17:19 UTC)
  • rtc_fd68f3e535ca45cf8b231abc52d6379c (Oct 22, 2025 17:04 UTC)

With gpt-realtime-2025-08-28 model (testing workaround):

  • rtc_cc10cc08615341cb9e240087561a647a (Oct 22, 2025 17:47 UTC)
    • Model logged: "model": "gpt-realtime-2025-08-28"
    • Audio generated: 174 audio tokens
    • Transcript generated: β€œHi, XX, the AI answering service…”
    • Result: Audio still silent - workaround did NOT fix the issue

Troubleshooting Steps Attempted

1. Added Model Parameter to SIP URI :white_check_mark:

Issue: Initial WebSocket 1006 errors due to missing model parameter
Fix: Added ;model=gpt-realtime-preview to SIP URI
Result: WebSocket 1006 errors resolved, but audio still silent

2. Changed answer_on_bridge Setting :cross_mark:

Hypothesis: Audio path timing issue with SignalWire answering
Change: Set answer_on_bridge: false in SWML
Result: No improvement - audio still silent

3. Explicit Codec Specification :cross_mark:

Hypothesis: Codec negotiation failure
Change: Added codecs: 'PCMU,PCMA' to SWML connect block
Result: No improvement - audio still silent

4. Switched to Dated Model Version (In Progress) :counterclockwise_arrows_button:

Hypothesis: Recent model update introduced audio bug
Change: Using gpt-realtime-2025-08-28 instead of gpt-realtime
Result: Testing in progress


Related Community Reports

Identical Issues Reported by Other Users

  1. [BUG?] SIP Realtime – distorted or missing audio

  2. Asterisk + OpenAI Realtime SIP – call connects but no audio


Technical Analysis

Hypothesis 1: Bidirectional RTP Problem (Most Likely)

Evidence:

  • Output RTP (OpenAI β†’ Caller): Audio generated but silent - RTP packets may not contain audio data
  • Input RTP (Caller β†’ OpenAI): OpenAI receiving 110 input tokens when caller hasn’t spoken
  • Previous OpenAI fix involved RTP being blocked for non-Twilio/Telnyx providers
  • SignalWire (our provider) may not be whitelisted for RTP traffic
  • SIP signaling works perfectly (TLS), suggesting RTP-specific issue

Supporting Evidence:

  • WebSocket shows audio generation (internal confirmation)
  • SIP call connects successfully (signaling path clear)
  • Transcripts generated correctly (AI is working)
  • Audio tokens counted (audio is being created)
  • NEW: OpenAI reports input tokens when caller is silent - suggests RTP input path is also affected

Possible Root Causes:

  1. SignalWire IP ranges not whitelisted in OpenAI’s RTP firewall
  2. RTP media path routing incorrectly configured
  3. NAT/firewall blocking bidirectional RTP media flow
  4. RTP packet format mismatch (though unlikely with standard PCMU)

Hypothesis 2: Recent Model Update Regression

Evidence:

  • Working on Oct 18, broken by Oct 22
  • No code changes between working and broken states
  • Multiple users reporting same timeline

Test in Progress:

  • Using gpt-realtime-2025-08-28 (August dated version)
  • If this works, confirms regression in current gpt-realtime alias

Hypothesis 3: SDP/Codec Negotiation Change

Evidence:

  • Community reports mention both PCMU and PCMA affected
  • No codec-specific errors in logs
  • Explicit codec specification didn’t help

Unlikely because:

  • No SIP error codes indicating negotiation failure
  • Multiple codecs affected identically

Request to OpenAI Engineering

Immediate Investigation Needed

  1. Check RTP firewall rules

    • Verify SignalWire IP ranges are allowed for RTP traffic
    • Confirm RTP ports are open bidirectionally
    • Check if recent infrastructure changes affected non-Twilio/Telnyx providers
  2. Review recent model updates

    • What changed in gpt-realtime alias between Oct 18-22, 2025?
    • Are there known issues with the current model version?
    • Should we use gpt-realtime-2025-08-28 as a workaround?
  3. Verify audio transcoding

    • Is the SIP gateway properly transcoding PCM 24kHz β†’ PCMU 8kHz?
    • Are RTP packets being generated with actual audio data?
    • Are there any logs on OpenAI’s side showing RTP transmission failures?

Information We Can Provide

  • Specific call IDs with complete timing and logs
  • Full SIP INVITE/SDP from SignalWire
  • WebSocket message dumps showing audio generation
  • Network traces if needed (with your guidance)
  • Test calls on demand to reproduce issue

SWML Configuration (SignalWire Routing)

Non-Whitelisted Caller Flow (AI Screening)

{
  "version": "1.0.0",
  "sections": {
    "main": [
      {
        "answer": {
          "max_duration": 14400
        }
      },
      {
        "set": {
          "parent_call_sid": "%{call.call_id}"
        }
      },
      {
        "set": {
          "session_id": "call_%{vars.parent_call_sid}"
        }
      },
      {
        "play": {
          "url": "say: Connecting to call screener."
        }
      },
      {
        "connect": {
          "to": "sip:proj_XXXXXXXXXXXXXXXXXXXX@sip.api.openai.com;transport=tls;model=gpt-realtime-preview",
          "from": "%{call.from}",
          "timeout": 300,
          "max_duration": 14400,
          "session_timeout": 14400,
          "answer_on_bridge": false,
          "codecs": "PCMU,PCMA",
          "headers": [
            {
              "name": "X-Parent-CallSid",
              "value": "%{vars.parent_call_sid}"
            },
            {
              "name": "X-Session-ID",
              "value": "%{vars.session_id}"
            },
            {
              "name": "X-Caller",
              "value": "%{call.from}"
            },
            {
              "name": "X-Called",
              "value": "%{call.to}"
            }
          ]
        }
      }
    ]
  }
}

Call Flow Diagram

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Caller         β”‚
β”‚  +1-XXX-XXX-XXX β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜
         β”‚ INVITE
         β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  SignalWire                     β”‚
β”‚  - Receives call                β”‚
β”‚  - Generates SWML               β”‚
β”‚  - Checks whitelist             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
         β”‚ SIP INVITE (TLS)
         β”‚ to: sip:proj_XXX@sip.api.openai.com
         β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  OpenAI SIP Gateway             β”‚
β”‚  - Sends webhook                β”‚
β”‚  - Waits for /accept            β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
         β”‚ POST webhook
         β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Our Voice API Server           β”‚
β”‚  - Verifies webhook             β”‚
β”‚  - Calls /accept endpoint       β”‚
β”‚  - Opens WebSocket monitor      β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
         β”‚ POST /v1/realtime/calls/{id}/accept
         β”‚ with audio config
         β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  OpenAI Realtime API            β”‚
β”‚  - Accepts call (200 OK)        β”‚
β”‚  - Establishes WebSocket        β”‚
β”‚  - βœ… Generates AI responses    β”‚
β”‚  - βœ… Sends audio events        β”‚
β”‚  - ❌ RTP AUDIO SILENT          β”‚ ⚠️ PROBLEM HERE
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
         β”‚ RTP (should contain audio)
         β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  SignalWire                     β”‚
β”‚  - Bridges RTP                  β”‚
β”‚  - ❌ Receives silence          β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
         β”‚ RTP (silent)
         β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Caller         β”‚
β”‚  ❌ HEARS NOTHINGβ”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Expected Behavior

  1. Caller dials forwarding number β†’ SignalWire
  2. SignalWire routes via SIP to OpenAI
  3. OpenAI Realtime API generates greeting: β€œHi, I’m XX, the AI answering service…”
  4. Caller should hear the greeting (currently silent)
  5. Conversation proceeds with AI screening caller
  6. Based on screening decision, AI either connects or rejects call

Actual Behavior

Steps 1-3 work perfectly, but step 4 fails - caller hears complete silence despite OpenAI generating the audio internally.


Additional Context

SignalWire IP Ranges (if needed for firewall rules)

OpenAI may need to whitelist SignalWire’s infrastructure. We can provide:

  • Source IP addresses from our logs
  • SignalWire’s published IP ranges
  • Network traces showing RTP packet flow

Working Reference Implementation

We have a known-working state from October 18, 2025 at 3:03 PM UTC-4 with:

  • Same code
  • Same configuration
  • Same audio settings
  • Audio was audible to callers

The only changes since then:

  1. Added model=gpt-realtime-preview parameter (required, resolved WebSocket 1006)
  2. Minor SWML adjustments (tested with/without - no difference)

Questions for OpenAI

  1. Were there any changes to RTP firewall rules between Oct 18-22, 2025?
  2. Are SignalWire IP addresses whitelisted for RTP traffic?
  3. Were there any updates to the gpt-realtime model in late October 2025?
  4. Is there a known issue with SIP audio in the current production version?
  5. Should we use gpt-realtime-2025-08-28 as a temporary workaround?
  6. Can you check RTP packet transmission logs for our call IDs?
  7. Are there any specific SDP requirements we might be missing?
  8. Why is OpenAI reporting 110 input audio tokens when the caller hasn’t spoken?
    • Is this normal session setup overhead?
    • Or is OpenAI receiving RTP input that we’re not sending?
    • Could this indicate a bidirectional RTP media path issue?
  9. Can you verify RTP packet payloads contain actual audio data (not just headers)?
    • Both incoming (caller β†’ OpenAI) and outgoing (OpenAI β†’ caller) directions

Contact Information

Reporter: [Redacted for privacy - available upon request to OpenAI support]
Project: AI Call Screening Service
Priority: Critical - Production service completely non-functional
Availability: Available for live debugging, test calls, or providing additional logs


Appendix: Full Example Log Sequence

1. Incoming Call Webhook

[VoiceAPI] ========== INCOMING OPENAI WEBHOOK ==========
[VoiceAPI] Event Type: realtime.call.incoming
[VoiceAPI] Call ID: rtc_a46f81d14638494996963cc04eabaa12
[VoiceAPI] From: +1347XXXXXXX
[VoiceAPI] To: +1773XXXXXXX

2. Accept Call (200 OK)

[OpenAI-SIP] πŸ“€ Sending /accept with audio configuration
[OpenAI-SIP] πŸ”Š Audio output voice: cedar
[OpenAI-SIP] 🌐 Request URL: https://api.openai.com/v1/realtime/calls/rtc_a46f81d14638494996963cc04eabaa12/accept
[OpenAI-SIP] βœ… Call rtc_a46f81d14638494996963cc04eabaa12 accepted by OpenAI - HTTP 200

3. WebSocket Connected

[OpenAI-SIP] βœ… WebSocket connected for call rtc_a46f81d14638494996963cc04eabaa12
[OpenAI-SIP] 🎯 Session already configured in /accept - sending response.create to trigger greeting

4. AI Generates Audio (confirmed by events)

[OpenAI-SIP] πŸ“¨ Event: response.output_audio.done
[OpenAI-SIP] πŸ“¨ Event: response.output_audio_transcript.done
[OpenAI-SIP] πŸ€– AI transcript: "Hi, I'm [Company Name], the AI answering service. I notice you're calling from a number I don't recognize. Could you please tell me who you are and why you're calling?"
[OpenAI-SIP] 🎀 Audio should be playing now on the SIP call - check if caller hears this!

5. Audio Token Confirmation

{
  "usage": {
    "output_token_details": {
      "text_tokens": 52,
      "audio_tokens": 173
    }
  }
}

Result: Audio generated (173 tokens), transcript logged, but caller heard nothing.


End of Report

This report documents a critical production issue affecting OpenAI Realtime API SIP integration. Multiple users are experiencing identical symptoms. Immediate engineering attention requested.

Looking at my trace session logs, it appears some phantom audio is getting through because openai is responding:
trace_sess_CTMoUshd2Eyl62aPtoLxT: β€œtext”: β€œGot it, you’re looking for some help with an issue about your online order. Could you tell me a bit more about what happened or what specific help you need? That way I can figure out how to best assist you.”

trace_sess_CTUvwl5DNM1Ur5wvOGnD3: β€œtext”: β€œGot it. You’re trying to reach Sarah about a project update. Do you have a preferred time you’d like me to pass along, or any specific message you’d like me to relay?”

trace_sess_CTWmVlCPFmgc1IJORugD0: β€œtext”: β€œAbsolutely, I’m here to help you get more visibility. Can you tell me a bit about what kind of business you have and what you’ve tried so far?”

noted in a different thread: don’t set format, it’s not needed when using WebRTC/SIP. We should be ignoring this parameter but evidently in some cases it’s slipping through.

3 Likes

I’m having the same issue. I’m testing using Zoiper. I noticed that the RTP Stream is coming from a MSFT Azure Cloud IP at 52.247.126.209. So, perhaps some firewall rule changed because based on a tcpdump from that ip I don’t see any traffic coming from that IP

1 Like

This unfortunately does not resolve the issue for me.

Does the format removal resolve your problem?

No…I don’t use that parameter at all. Do you know the RTP Server that’s being advertised in the 200 OK. I have a feeling that a range of RTP Servers aren’t working. The one I’m seeing is 52.247.126.209. I’m not receiving any traffic from that server.

Yeah. SignalWire developers are reporting that they are sending audio, but not getting a response from OpenAi.
signalwire-openai-image

do you have a SIP capture you can share? Can you verify you are sending SIP ACK?

Yes, ACK is confirmed. Attached is the full SIP capture (PCAP) showing complete
handshake.

Call Details:

  • Call-ID: f132ad23-3a42-44b9-a973-90c6ac35d673
  • Timestamp: 2025-10-22 03:00:23 UTC
  • Duration: ~30 seconds before BYE

SIP Flow (All Successful):
03:00:23 β†’ INVITE sent
03:00:23 ← 100 Trying
03:00:23 ← 180 Ringing
03:00:27 ← 200 OK
03:00:27 β†’ ACK sent :white_check_mark:
03:00:57 β†’ BYE

SDP from Your 200 OK:
c=IN IP4 52.247.126.209
m=audio 41739 RTP/SAVP 0 101
a=crypto:7 AES_CM_128_HMAC_SHA1_80 inline:NPpAKx8oBnByayB9mgBpom9oLVYb7dT+bM70Tw89

Critical Finding:
PCAP shows 0 UDP packets from 52.247.126.209:41739 during entire call. Your Azure RTP
server advertised itself in SDP but never transmitted. SignalWire was ready to receive
at 138.197.216.120:17762.

This confirms the issue reported by other community users - Azure RTP server
52.247.126.209 (MSFT range 52.224.0.0/11) is not sending packets to non-Twilio
providers.

Can you check Azure RTP server logs for this call to see why packets weren’t sent?

link to my .pcap file: https://drive.google.com/file/d/1tkOgl3bQVRMWexksQSlRE-SQx6yzpXPN/view?usp=sharing

I think this may be the Contact URI issue noted in SIP/RTP compatibility and security issues . I can’t tell for sure since your pcap is all UDP traffic, but it’s possible the ACK isn’t reaching us. We just made a change to not start the UDP stream until the ACK is received to prevent the first few media packets from being lost.

We’re working on a fix right now.

1 Like

Thank you! Much appreciated!

It looks like thats the issue I’m experiencing as well. The contact in the ACK is missing the domain name. This is being done by Zoiper soft phone. Not sure how to fix it. But, it’s not working with our carrier, which is Flowroute. But, this was working before.

A fix for the Contact header URI issue has been deployed. Please advise if you are still seeing this issue.

2 Likes

It look like I’m having the same issue still, but will get a capture in a bit.

Hmm, ok. If you can post some call IDs I can also look on our side.

I am still seeing this issue. The Contact header is missing transport=tls. Call ID: rtc_45b2563006ac4a388d39978c3b8ca4c1

SIP/2.0 200 OK
Via: SIP/2.0/TLS 192.168.101.235:50975;branch=z9hG4bK.4fafIJdYJ;rport=49404;received=172.68.238.128
From: sip:proj_****@sip.api.openai.com;tag=a-Xnh5QsG
To: sip:proj_****@sip.api.openai.com;tag=c117be2e-82a2-4968-bb9c-4d1292c13c87
Call-ID: kNHnVuzq5A
CSeq: 20 INVITE
Content-Length: 286
Content-Type: application/sdp
Contact: sip:OAI@sip.api.openai.com:5061

v=0
o=- 1636 1638 IN IP4 52.247.127.231
s=OAI
c=IN IP4 52.247.127.231
t=0 0
m=audio 57527 RTP/SAVP 96 101
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=ptime:20
a=rtpmap:96 opus/48000/2
a=crypto:2 AES_CM_128_HMAC_SHA1_80 inline:ZsKWPRzsgziMdz0V1jQTrI5Fw6hbXKy2B4kWMjpj

1 Like

Also still having the same issue. Will send my .pcap privately.

Test Details

  • Timestamp: 2025-10-23 10:52:18 UTC

  • Call-ID: 180d45c3-d5d7-43ab-9558-063f16c798d4

  • SIP Provider: SignalWire

  • Call Duration: ~50 seconds before I hung up

SIP Handshake: :white_check_mark: Working


10:52:18 β†’ INVITE

10:52:18 ← 100 Trying

10:52:18 ← 180 Ringing

10:52:22 ← 200 OK (with SDP)

10:52:22 β†’ ACK βœ…

10:53:12 β†’ BYE

OpenAI’s SDP (from 200 OK)


c=IN IP4 52.247.127.231 ← New Azure IP (was 52.247.126.209 before)

m=audio 51303 RTP/SAVP 0 101

a=crypto:7 AES_CM_128_HMAC_SHA1_80 inline:ToKXPC9B7Our+zGw+UtcwO1/3PRYK22Yn7yO9cqf

SignalWire’s RTP Endpoint


c=IN IP4 137.184.153.255

m=audio 16866 RTP/SAVP 0 18 8 9 102 101 103

ZERO RTP packets from OpenAI’s Azure server during entire 50-second call.

PCAP shows:

  • :white_check_mark: SIP signaling complete (INVITE β†’ 200 OK β†’ ACK)

  • :white_check_mark: SRTP crypto negotiated successfully

  • :cross_mark: 0 UDP packets from 52.247.127.231:51303

  • :cross_mark: 0 audio packets on media stream

  • :cross_mark: Caller heard complete silence

Observations

  1. Different Azure IP: Previously seeing 52.247.126.209, now seeing 52.247.127.231 (both in MSFT Azure range 52.224.0.0/11)

  2. Same behavior: Zero RTP transmission from Azure servers

  3. SIP works perfectly: Only RTP/media path is broken

Attached is a sip capture from my Zoiper client running TLS.

The crux of the issue seems to be that the 200 OK is being sent from OpenAI multiple times because the ACK is not being received by OpenAI because it’s not being sent via TLS. The ACK from the attached capture looks like this:

ACK sip:OAI@sip.api.openai.com:5061 SIP/2.0
Via: SIP/2.0/ ;branch=z9hG4bK-524287-1β€”5a0d9c58ccacfeff;rport
Max-Forwards: 70
Contact: sip:proj_MrxkZ5BlbAFrpJXiyZBrs6mq;transport=TLS
Call-ID: bXTDF1CGdRrTYO5aMnEzbw..
CSeq: 1 ACK
User-Agent: Z 5.6.6 v2.10.20.5
Content-Length: 0

I have confirmed that my sip client is sending the ACK via UDP versus TLS. I think this issue in combination with the recent OpenAI change to only send audio when the ACK is received has caused this issue. But, I might be wrong… I hope this helps to narrow down the problem space and issue.

One last note…I can probably push this call thru a SIP Proxy (i.e. Kamailio) and add the transport=TLS on RURI of the ACK if we need to prove or disprove this is the issue.

-Mack

Capture:

INVITE sip:proj_MrxkZ5BlbAFrpJXiyZBrs6mq@sip.api.openai.com;transport=TLS SIP/2.0
Via: SIP/2.0/TLS 192.168.50.9:62098;branch=z9hG4bK-524287-1β€”61a8e6e5620c7054;rport
Max-Forwards: 70
Contact: sip:proj_MrxkZ5BlbAFrpJXiyZBrs6mq@192.168.50.9:62098;transport=tls
To: sip:proj_MrxkZ5BlbAFrpJXiyZBrs6mq@sip.api.openai.com
From: sip:proj_MrxkZ5BlbAFrpJXiyZBrs6mq@sip.api.openai.com;transport=TLS;tag=dcaa3604
Call-ID: bXTDF1CGdRrTYO5aMnEzbw..
CSeq: 1 INVITE
Allow: INVITE, ACK, CANCEL, BYE, NOTIFY, REFER, MESSAGE, OPTIONS, INFO, SUBSCRIBE
Content-Type: application/sdp
Supported: replaces, norefersub, extended-refer, timer, sec-agree, outbound, path, X-cisco-serviceuri
User-Agent: Z 5.6.6 v2.10.20.5
Allow-Events: presence, kpml, talk, as-feature-event
Content-Length: 1265

v=0
o=Z 0 223850955 IN IP4 50.192.97.226
s=Z
c=IN IP4 50.192.97.226
t=0 0
m=audio 58172 RTP/SAVP 106 98
a=rtpmap:106 opus/48000/2
a=fmtp:106 sprop-maxcapturerate=24000; minptime=20; useinbandfec=1
a=rtpmap:98 telephone-event/48000
a=fmtp:98 0-16
a=sendrecv
a=rtcp-mux
a=crypto:5 AES_256_CM_HMAC_SHA1_80 inline:pIEEfERofJJK4CwHWFgyVJWfQ5PTO7PzEF4XoYpI1rnfj6pGtDsS85urjavR9w==
a=crypto:6 AES_256_CM_HMAC_SHA1_32 inline:pIEEfERofJJK4CwHWFgyVJWfQ5PTO7PzEF4XoYpI1rnfj6pGtDsS85urjavR9w==
a=crypto:9 AES_CM_256_HMAC_SHA1_80 inline:pIEEfERofJJK4CwHWFgyVJWfQ5PTO7PzEF4XoYpI1rnfj6pGtDsS85urjavR9w==
a=crypto:10 AES_CM_256_HMAC_SHA1_32 inline:pIEEfERofJJK4CwHWFgyVJWfQ5PTO7PzEF4XoYpI1rnfj6pGtDsS85urjavR9w==
a=crypto:3 AES_192_CM_HMAC_SHA1_80 inline:pIEEfERofJJK4CwHWFgyVJWfQ5PTO7PzEF4XoYpI1rnfj6pGtDs=
a=crypto:4 AES_192_CM_HMAC_SHA1_32 inline:pIEEfERofJJK4CwHWFgyVJWfQ5PTO7PzEF4XoYpI1rnfj6pGtDs=
a=crypto:7 AES_CM_192_HMAC_SHA1_80 inline:pIEEfERofJJK4CwHWFgyVJWfQ5PTO7PzEF4XoYpI1rnfj6pGtDs=
a=crypto:8 AES_CM_192_HMAC_SHA1_32 inline:pIEEfERofJJK4CwHWFgyVJWfQ5PTO7PzEF4XoYpI1rnfj6pGtDs=
a=crypto:1 AES_CM_128_HMAC_SHA1_80 inline:pIEEfERofJJK4CwHWFgyVJWfQ5PTO7PzEF4XoYpI
a=crypto:2 AES_CM_128_HMAC_SHA1_32 inline:pIEEfERofJJK4CwHWFgyVJWfQ5PTO7PzEF4XoYpI
sigcomp id=

SIP/2.0 100 Trying
Via: SIP/2.0/TLS 192.168.50.9:62098;received=172.68.204.196;branch=z9hG4bK-524287-1β€”61a8e6e5620c7054;rport=43428
Contact: sip:OAI@sip.api.openai.com:5061
To: sip:proj_MrxkZ5BlbAFrpJXiyZBrs6mq@sip.api.openai.com;tag=5c8fc103-3e1b-4eff-8418-de12f27be378
From: sip:proj_MrxkZ5BlbAFrpJXiyZBrs6mq@sip.api.openai.com;transport=TLS;tag=dcaa3604
Call-ID: bXTDF1CGdRrTYO5aMnEzbw..
CSeq: 1 INVITE
Content-Length: 0

SIP/2.0 180 Ringing
Via: SIP/2.0/TLS 192.168.50.9:62098;rport=43428;branch=z9hG4bK-524287-1β€”61a8e6e5620c7054;received=172.68.204.196
Contact: sip:OAI@sip.api.openai.com:5061
To: sip:proj_MrxkZ5BlbAFrpJXiyZBrs6mq@sip.api.openai.com;tag=5c8fc103-3e1b-4eff-8418-de12f27be378
From: sip:proj_MrxkZ5BlbAFrpJXiyZBrs6mq@sip.api.openai.com;transport=TLS;tag=dcaa3604
Call-ID: bXTDF1CGdRrTYO5aMnEzbw..
CSeq: 1 INVITE
Content-Length: 0

SIP/2.0 180 Ringing
Via: SIP/2.0/TLS 192.168.50.9:62098;rport=43428;branch=z9hG4bK-524287-1β€”61a8e6e5620c7054;received=172.68.204.196
Contact: sip:OAI@sip.api.openai.com:5061
To: sip:proj_MrxkZ5BlbAFrpJXiyZBrs6mq@sip.api.openai.com;tag=5c8fc103-3e1b-4eff-8418-de12f27be378
From: sip:proj_MrxkZ5BlbAFrpJXiyZBrs6mq@sip.api.openai.com;transport=TLS;tag=dcaa3604
Call-ID: bXTDF1CGdRrTYO5aMnEzbw..
CSeq: 1 INVITE
Content-Length: 0

SIP/2.0 180 Ringing
Via: SIP/2.0/TLS 192.168.50.9:62098;rport=43428;branch=z9hG4bK-524287-1β€”61a8e6e5620c7054;received=172.68.204.196
Contact: sip:OAI@sip.api.openai.com:5061
To: sip:proj_MrxkZ5BlbAFrpJXiyZBrs6mq@sip.api.openai.com;tag=5c8fc103-3e1b-4eff-8418-de12f27be378
From: sip:proj_MrxkZ5BlbAFrpJXiyZBrs6mq@sip.api.openai.com;transport=TLS;tag=dcaa3604
Call-ID: bXTDF1CGdRrTYO5aMnEzbw..
CSeq: 1 INVITE
Content-Length: 0

SIP/2.0 200 OK
Via: SIP/2.0/TLS 192.168.50.9:62098;branch=z9hG4bK-524287-1β€”61a8e6e5620c7054;rport=43428;received=172.68.204.196
Contact: sip:OAI@sip.api.openai.com:5061
To: sip:proj_MrxkZ5BlbAFrpJXiyZBrs6mq@sip.api.openai.com;tag=5c8fc103-3e1b-4eff-8418-de12f27be378
From: sip:proj_MrxkZ5BlbAFrpJXiyZBrs6mq@sip.api.openai.com;transport=TLS;tag=dcaa3604
Call-ID: bXTDF1CGdRrTYO5aMnEzbw..
CSeq: 1 INVITE
Content-Type: application/sdp
Content-Length: 280

v=0
o=- 0 2 IN IP4 52.247.59.112
s=OAI
c=IN IP4 52.247.59.112
t=0 0
m=audio 32889 RTP/SAVP 106 101
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=ptime:20
a=rtpmap:106 opus/48000/2
a=crypto:1 AES_CM_128_HMAC_SHA1_80 inline:VKPjHYw+4ozYqJv3dHd7THkrbBG6Zn4WFyU93axP

SIP/2.0 200 OK
Via: SIP/2.0/TLS 192.168.50.9:62098;branch=z9hG4bK-524287-1β€”61a8e6e5620c7054;rport=43428;received=172.68.204.196
Contact: sip:OAI@sip.api.openai.com:5061
To: sip:proj_MrxkZ5BlbAFrpJXiyZBrs6mq@sip.api.openai.com;tag=5c8fc103-3e1b-4eff-8418-de12f27be378
From: sip:proj_MrxkZ5BlbAFrpJXiyZBrs6mq@sip.api.openai.com;transport=TLS;tag=dcaa3604
Call-ID: bXTDF1CGdRrTYO5aMnEzbw..
CSeq: 1 INVITE
Content-Type: application/sdp
Content-Length: 280

v=0
o=- 0 2 IN IP4 52.247.59.112
s=OAI
c=IN IP4 52.247.59.112
t=0 0
m=audio 32889 RTP/SAVP 106 101
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=ptime:20
a=rtpmap:106 opus/48000/2
a=crypto:1 AES_CM_128_HMAC_SHA1_80 inline:VKPjHYw+4ozYqJv3dHd7THkrbBG6Zn4WFyU93axP

SIP/2.0 200 OK
Via: SIP/2.0/TLS 192.168.50.9:62098;branch=z9hG4bK-524287-1β€”61a8e6e5620c7054;rport=43428;received=172.68.204.196
Contact: sip:OAI@sip.api.openai.com:5061
To: sip:proj_MrxkZ5BlbAFrpJXiyZBrs6mq@sip.api.openai.com;tag=5c8fc103-3e1b-4eff-8418-de12f27be378
From: sip:proj_MrxkZ5BlbAFrpJXiyZBrs6mq@sip.api.openai.com;transport=TLS;tag=dcaa3604
Call-ID: bXTDF1CGdRrTYO5aMnEzbw..
CSeq: 1 INVITE
Content-Type: application/sdp
Content-Length: 280

v=0
o=- 0 2 IN IP4 52.247.59.112
s=OAI
c=IN IP4 52.247.59.112
t=0 0
m=audio 32889 RTP/SAVP 106 101
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=ptime:20
a=rtpmap:106 opus/48000/2
a=crypto:1 AES_CM_128_HMAC_SHA1_80 inline:VKPjHYw+4ozYqJv3dHd7THkrbBG6Zn4WFyU93axP

ACK sip:[my email]:5061 SIP/2.0
Via: SIP/2.0/ ;branch=z9hG4bK-524287-1β€”5a0d9c58ccacfeff;rport
Max-Forwards: 70
Contact: sip:proj_MrxkZ5BlbAFrpJXiyZBrs6mq;transport=TLS
To: sip:proj_MrxkZ5BlbAFrpJXiyZBrs6mq@sip.api.openai.com;tag=5c8fc103-3e1b-4eff-8418-de12f27be378
From: sip:proj_MrxkZ5BlbAFrpJXiyZBrs6mq@sip.api.openai.com;transport=TLS;tag=dcaa3604
Call-ID: bXTDF1CGdRrTYO5aMnEzbw..
CSeq: 0 ACK
Content-Length: 0

ACK sip:[my email]:5061 SIP/2.0
Via: SIP/2.0/ ;branch=z9hG4bK-524287-1β€”5a0d9c58ccacfeff;rport
Max-Forwards: 70
Contact: sip:proj_MrxkZ5BlbAFrpJXiyZBrs6mq;transport=TLS
To: sip:proj_MrxkZ5BlbAFrpJXiyZBrs6mq@sip.api.openai.com;tag=5c8fc103-3e1b-4eff-8418-de12f27be378
From: sip:proj_MrxkZ5BlbAFrpJXiyZBrs6mq@sip.api.openai.com;transport=TLS;tag=dcaa3604
Call-ID: bXTDF1CGdRrTYO5aMnEzbw..
CSeq: 1 ACK
User-Agent: Z 5.6.6 v2.10.20.5
Content-Length: 0

ACK sip:[my email]:5061 SIP/2.0
Via: SIP/2.0/UDP 192.168.50.9:62097;branch=z9hG4bK-524287-1β€”5a0d9c58ccacfeff;rport
Max-Forwards: 70
Contact: sip:proj_MrxkZ5BlbAFrpJXiyZBrs6mq@192.168.50.9:62097;transport=TLS
To: sip:proj_MrxkZ5BlbAFrpJXiyZBrs6mq@sip.api.openai.com;tag=5c8fc103-3e1b-4eff-8418-de12f27be378
From: sip:proj_MrxkZ5BlbAFrpJXiyZBrs6mq@sip.api.openai.com;transport=TLS;tag=dcaa3604
Call-ID: bXTDF1CGdRrTYO5aMnEzbw..
CSeq: 1 ACK
User-Agent: Z 5.6.6 v2.10.20.5
Content-Length: 0

Thanks for the SIP details. For some reason the Contact header in the 200 is still coming back as sip: rather than sips:. This is the root cause.

2 Likes