LiveKit Inference STT returns HTTP 429 with AssemblyAI Universal-3.5 Pro despite available concurrency

Title: LiveKit Inference STT returns HTTP 429 with AssemblyAI Universal-3.5 Pro despite available concurrency

Hello LiveKit team,

We are developing ACHOPA, a platform that uses LiveKit rooms and a Python Caption Agent to provide live subtitles during streaming experiences.

On September 20, 2026, at approximately 21:45 (UTC−5), our Caption Agent successfully joined a room, detected the creator’s microphone, and attempted to start streaming STT using assemblyai/universal-3-5-pro through LiveKit Inference.

The STT connection was rejected with HTTP 429 on three consecutive attempts. The final error was:

APIConnectionError: failed to recognize speech after 3 attempts (caused by WSServerHandshakeError: 429, message='Invalid response status', url='wss://agent-gateway.livekit.cloud/v1/stt?model=assemblyai/universal-3-5-pro')

Our LiveKit Cloud dashboard shows a limit of 5 concurrent connections for this model, with a peak usage of 2/5 over the past seven days. Our project is on the Build plan and shows 124 minutes of AssemblyAI Universal-3.5 Pro STT usage in September.

The Agent was successfully dispatched and connected to the room. The failure occurred when opening the STT connection.

Could you help us determine which limit or condition caused the HTTP 429 response? In particular, could it be related to an inference credit balance, a per-minute quota, an account-level restriction, or an upstream service issue?

We can provide the relevant job ID, session ID, timestamps, and sanitized logs if needed.

Thank you.

It is probably easiest to see by looking in your agent logs.

See here for how to view agent logs;

Hi CW ilson, thanks for your reply!

We have already checked the logs from our Python agent running locally.

The agent is dispatched successfully, joins the LiveKit room, and detects the creator’s microphone. However, when it attempts to start streaming STT through LiveKit Inference, the gateway returns HTTP 429 on all three attempts.

We reproduced the same issue with two different STT models:

  • assemblyai/universal-3-5-pro
  • deepgram/nova-3

The final error from our Deepgram test was:

APIConnectionError: failed to recognize speech after 3 attempts
(caused by WSServerHandshakeError: 429, message=‘Invalid response status’,
url=‘wss://agent-gateway.livekit.cloud/v1/stt?model=deepgram/nova-3’)

Our dashboard shows peak usage of 2/5 concurrent connections for AssemblyAI and 1/5 for Deepgram. The Billing page shows our STT usage, but we cannot find the remaining inference credit balance.

Since both models fail through LiveKit Inference, could you please help us determine whether our project has exhausted its inference credits or reached another shared gateway quota?

Is there a way to check the remaining inference credit balance or identify the specific limit causing this HTTP 429?

Thank you for your help!

What is your project ID? What plan are you on?

Hi CW ilson, thanks for following up! Our LiveKit Cloud project ID is p_5s4fm8fapqb, and we are on the Build plan. Please let us know if you need any additional information to investigate the HTTP 429 errors.

We need to make this view easier to see when you’ve reached the build plan limits.

I think the easiest thing to do for now is to go to this page:
https://cloud.livekit.io/projects/p_/settings/billing

Copy that table there for the current month and put it in an LLM like ChatGPT or Claude along with this prompt:

Find me the cost breakdown for LLM, TTS, STT (and their total). Use the rates in the description

You will see you’ve hit your aggregate cap.

We will work on making this much easier to decode.

– Chris Wilson

Hi Chris, thank you for your guidance!

I checked our LiveKit Cloud Billing page for September 2026 and calculated the STT usage using the rates shown in the table:

  • AssemblyAI Universal 3.5 Pro: 276 minutes × $0.45/hour = $2.07

  • Deepgram Nova-3: 85 minutes × $0.288/hour = $0.408

  • Total estimated STT usage: $2.478 (approximately $2.48)

Our project is on the Build plan. The Billing page currently shows $0.00 in billed costs, and we have not used LLM or TTS through LiveKit Inference.

Does this mean we have effectively reached the Build plan’s aggregate Inference credit limit? Could that explain why we received HTTP 429 errors with both AssemblyAI and Deepgram through LiveKit Inference, despite being below the displayed concurrent STT connection limits?

I’ve attached a screenshot of our September usage table for reference.

Thank you again for your help!

Yes, on the build plan, it will always show $0.00 since you are not charged for those.

Yes, you reached your aggregate limit.

Hi Chris, thank you for clarifying the Inference credit limit.

I have a separate question about deploying an Agent on the Build plan.

I created my first Agent, and the LiveKit Cloud dashboard shows its deployment as PRODUCTION. Unfortunately, its initial version failed to start because of a code error.

I corrected the code locally, but when I try to deploy the updated version to the same Agent ID, the CLI returns:

unable to deploy agent: maximum number of deployments (0) reached

I checked the pricing page: Build includes 1 Agent deployment and 0 non-production deployments.

Does updating an existing production Agent require a non-production deployment slot? Is there a way to replace the failed version within the Build plan, or would upgrading to Ship be necessary?

Thank you again for your help.