Connect by JBRH Open Connect

The budget that stops a call

budget_refusal is asked twice: before Connect places an outbound call, and before it answers an inbound one. A refused outbound is simply not placed. A refused inbound is answered and told — the caller hears the line's own closed-line message in the business's name and the call ends, rather than connecting to silence.

Status
Available What this means
Audience
both
Channels
phone
In the app
#/phone, #/usage
Last verified
Product version
6.3.2

The two questions#

A voice call is the most expensive thing Connect does per minute, and it is also the one thing that cannot be half-done. So the budget is asked before anything is committed, at both of the moments where a call can begin.

Before an outbound
Asked before the dial. Nothing rings, no session opens, no row is created for a call that was never going to complete. A due follow-up refused here stays due and is attempted again while it is inside its window.
Before answering an inbound
Asked while the phone is still ringing, before the conversation is set up. The call is answered — it has to be, or the caller learns nothing — but it is answered with a message rather than with a conversation.

The same gate stands in front of every kind of call: one the engine places, one a follow-up triggers, one the Assistant asks for, one a person dials from the browser line. There is a single outbound path, so there is a single place this is decided.

What a refused caller hears#

Not silence, and not a provider's error tone. The refusal brief carries closed_line_text — the line's own closing message, in the business's own name. It is deterministic text, it deliberately contains no opening hours, and it is warmed alongside the greetings under the closed kind so it is already audio when it is needed.

The worker plays it on a track of its own, posts refused_line, and hangs up. The row is ended with an outcome that names the reason. A caller gets a short, complete interaction with a business rather than a call that connects and drops.

The breaker is not the budget#

ai_quota is a separate mechanism with a different shape. It opens a breaker when the provider answers 429 or the key is revoked — a statement that the provider is refusing right now, rather than a statement about what the workspace has chosen to spend.

BudgetQuota breaker
Decided byThe workspace's own spending limitsThe provider refusing or the key failing
Scheduled workRefusedSkipped
A caller already on the lineRefused with the spoken messageStill attempted
Clears whenBudget is available againThe provider stops refusing

The asymmetry in the third row is deliberate. A background task can wait an hour and lose nothing. A human holding a phone cannot, so when the provider is merely rate-limiting, the attempt is made — it may well succeed, and failing without trying would be a certainty rather than a risk.

Living with a refusal#

  1. Check which refusal you have. The call record names the reason, and a budget refusal and a provider refusal look nothing alike in the record even though they look similar from a desk.

    Result Only one of them is fixed by changing a limit.

  2. For a budget refusal, look at what is consuming it before raising it.

    Result Most of a voice bill is carried context re-billed every turn, so a large brief can cost more than an extra hour of calls.

  3. For a breaker, check the key before the quota.

    Result A revoked key and an exhausted quota open the same breaker and have completely different fixes.

  4. Watch the follow-up queue while either is open.

    Result Due call-backs accumulate rather than failing, and they are abandoned once a day late — so a refusal that lasts overnight quietly costs you the commitments as well as the calls.

Questions#

Does a refused inbound call still cost money?

It is answered, so there is a call, and the closed-line audio is usually already synthesised and cached. What it does not do is open a model session, which is where the cost of a real conversation is. The refusal is cheap precisely because it happens before that.

Will a caller know they were refused for budget?

No, and deliberately so. They hear the line's closing message in the business's name. Announcing an internal spending limit to a customer would be worse than the refusal itself; the reason is recorded where the business can see it.

Why does scheduled work stop while live calls carry on during a breaker?

Because the cost of waiting is different. Skipping a background task delays something; abandoning a person mid-ring ends something. When the provider is rate-limiting rather than dead, the live attempt is worth making.