Relavoi sits between your app and the carrier network. Here's what happens when your courier taps "Call customer".
Your backend calls POST /v1/sessions with both parties' numbers and any metadata: order ID, zone, anything.
An atomic Redis allocator takes a number from the pool for the requested region, guaranteeing no participant overlap with any other live session on that number.
region lagos · allocated atomically
No app required. The call reaches the carrier network, arrives at Relavoi, and our router identifies the caller and bridges to the other side, against a sub-500ms p99 budget.
HMAC-signed webhooks and WebSocket events stream every state change: incoming, answered, ended, failed. The SDKs turn these into the in-call verification UI your customer sees.
When the job is done, a grace period covers follow-up calls, then the number returns to the pool after a cooldown. Dial it tomorrow and you reach nobody.
"This number is no longer active. Please contact [your brand] support."
dead line · redirect · custom message
Allocation and overlap checks run as one Redis Lua script. Two sessions can never race onto the same proxy for the same participant.
A circuit breaker tracks the carrier gateway's error rate and trips on sustained failure. Secondary-provider pools are on the roadmap, not yet provisioned.
Duplicate carrier events never create duplicate call legs. The routing decision is cached by event ID and replayed verbatim. Failed events land in a monitored dead-letter queue.
Pilot partners get a provisioned number pool and can build against the sandbox first.