The allowance
Each number gets one allowance per day. It depends on two things: how long the number has been active, and its current health band.- On its first day a number may send 20 messages.
- The allowance grows in a straight line to the per-number daily cap of 2,000 over 14 days.
- The number’s health band scales the result: good keeps all of it, fair three quarters, poor a half, failing a quarter. A number that has not been measured long enough to have a band keeps all of it, because the ramp is already the cautious part.
- The allowance never falls below the first-day figure and never rises above the cap.
The day
The allowance resets at midnight in the number’s own country, worked out from its phone number. A Brazilian number rolls over at midnight in Brazil, a British number at midnight in Britain. The read below reports the exact instant of the next reset.How long a number has been active
The ramp counts from the earliest moment Polymorfa can prove the number was active: when it was linked, or the oldest message in its history if that is earlier. A number whose age cannot be proven starts the ramp on the day the plan is turned on, and Console says so. The current number Health response exposes that evidence astenureSource: history
means an older history record anchors the ramp, link means a recorded pairing
does, and plan means neither was available so the project opt-in is the
anchor. Legacy evidence that cannot be classified reports null rather than
guessing a source.
What happens at the allowance
Immediately before transport, Polymorfa durably reserves one slot in the number’s active allowance day. Concurrent sends and runner restarts use the same counter, so they cannot spend the final slot more than once. A granted reservation remains counted even if transport later fails or its result cannot be confirmed. This keeps the configured allowance a strict ceiling. A send past the day’s allowance is refused before transport. Nothing on the number changes and no restriction is applied; retry the unsent message after the next reset. Replaying the same attempt within the same policy window returns the same refusal. If Polymorfa cannot durably authorize a slot, it pauses the send before transport and returns503 bansafe_accounting_unavailable with retryAfter: 5. Retry the same
message after that interval without creating parallel retries.
If another attempt already received a slot for the same logical send, Polymorfa returns
409 bansafe_send_outcome_unknown. It does not send the message again. Do not
retry it automatically; reconcile its delivery state before deciding whether
to create a new message.
Creating a group and adding people to a group do not count against the
allowance. Safety limits still apply to both.
Messages sent by simulated test-mode sessions do not consume a daily allowance.
The allowance is a ceiling among ceilings. Your plan’s throughput, a campaign’s
own pacing, and any safety limit in force all still apply, and the smallest one
wins.
Turn it on
The warm-up plan is in Console and on both APIs, with the same settings and the same responses:
Reading needs
sessions:read; changing needs sessions:manage. On the Platform
API, a signed-in team member must be an organization owner, admin, or developer
to change the plan; reading needs organization membership.
The response carries the plan, the cap the ramp climbs to, and the allowance
day by day for a number in good health, so you can show the curve without
recreating it:
entitled is true when at least one number in the project is on a plan that
includes BanSafe Lite. When it is false, turning the warm-up plan on is
refused with warmup_plan_not_entitled, and entitlementReason carries the
sentence that refusal returns.
A write is stored before any number is told about it. If a connected number
does not confirm the new plan, the request answers 503 propagation_pending
and the plan is already stored; retry the request and it is pushed again.
See one number’s allowance
GET /platform/bansafe/health/{session} carries a warmup block for the number:
enabled is false with a null allowance when the project has no warm-up
plan: there is no ceiling, rather than a ceiling of nothing. curve is drawn
at the number’s fresh current Health band. Without a fresh supported
estimate, the band is unknown and the cautious tenure ramp applies without an
additional Health reduction.
sentToday comes from the durable active allowance window. A successful read
returns 0 before the first reservation of the day. Health history does not
contain allowance fields.