API Reference
v4Blooio v4 API (4.0.0-beta). Base URL https://api.blooio.com/v4.
Authenticated account, sender numbers, and contact cards.
Find My friend locations (device passthrough).
Sending surfaces (iMessage/Blooio, Twilio, WhatsApp, RCS, Apple Messages for Business) and their capabilities.
Channel routing / number pools: ordered sets of channels walked by priority for the agnostic send.
Contacts, their channel identities, capabilities, timeline, and tags.
Conversations and chat-level actions (typing, read, contact card, background).
Send messages and read message history, status, events, and reactions.
Native iMessage polls (Blooio channels).
Group chats on group-capable channels (Blooio, WhatsApp).
Webhook subscriptions and delivery attempts for inbound + lifecycle events.
Unified activity feed across messages, polls, groups, reactions, typing, payments, and messaging-safety state changes.
Support tickets between the organization and the Blooio team, including call-forwarding requests. Open a ticket, reply to it, close it, and poll it for progress. Priority is set by Blooio support and can't be changed over the API. OAuth apps need `tickets:read` to read tickets and comments and `tickets:write` to open, reply to, and update them.
Phone number lookup and geocoding (enterprise plans).
Every number the organization rents from Blooio, as one resource keyed by the number itself. A number carries one or more `products`: `imessage` (a Blooio iMessage line), `sms` (Blooio SMS), and `voice` (Blooio Voice). Each product is a channel, listed in the number's `channels`, and that channel is what you send and call from. Search and buy Blooio SMS and Blooio Voice numbers here; iMessage lines are bought through `/channels/blooio/purchases`. An organization holds up to 5 Blooio SMS and Blooio Voice numbers unless Blooio raises its limit. OAuth apps need `numbers:read` to read and `numbers:manage` to buy, change, and release.
US carrier registration for Blooio SMS. Carriers deliver texts from a local number only once the number sits on a 10DLC campaign they've provisioned. The organization registers one brand (who is sending), then one or more campaigns (what it sends and how people opt in). Blooio assigns the organization's SMS numbers to its oldest provisioned campaign automatically; `PATCH /numbers/{number}` with `campaign_id` moves a number to another. Registration status changes arrive as `registration.brand.updated` and `registration.campaign.updated` webhooks. OAuth apps need `numbers:read` to read and `numbers:manage` to register.
Blooio RCS registration. RCS messages arrive in the Google Messages app from a verified business sender, with its name, logo, and colors, instead of a phone number. The organization registers one brand (the business), then one or more senders (each a branded profile people message). Google verifies a sender's brand, testers try it on their own phones, and carriers approve its launch; it can message the testers once it's `verified` and anyone once it's `live`. Each sender is an `rcs_business` channel: send from its channel id or alias with `POST /messages`. Once submitted, a sender's name, logo, and banner and the brand's point of contact change by paid change request. Submitting, launching, and change requests bill the organization's SMS, Voice & RCS subscription, so they need a card on file. Status changes arrive as `registration.rcs_brand.updated`, `registration.rcs_sender.updated`, and `registration.rcs_change.updated` webhooks. OAuth apps need `numbers:read` to read and `numbers:manage` to register. See the Blooio RCS guide.
- Upload RCS asset
- Get RCS brand
- Put RCS brand
- Request RCS brand change
- List RCS changes
- Cancel RCS change
- List RCS senders
- Create RCS sender
- Get RCS sender
- Update RCS sender
- Remove RCS sender
- Request RCS sender change
- Launch RCS sender
- Submit RCS sender
- List RCS test devices
- Add RCS test device
- Remove RCS test device
Calls on the organization's Blooio Voice numbers. Every call has a handler that takes its audio once it's answered: `stream` (your WebSocket server, speaking the Blooio media stream protocol), `agent` (the Blooio agent that owns the number), or `softphone` (a teammate in the dashboard). Inbound calls go to the handler set in the number's voice settings (`PATCH /channels/{channel}/settings` with `inbound`); with `softphone`, the call rings the dashboard and you can also answer it yourself with `POST /calls/{call_id}/answer` after the `call.ringing` webhook, whichever answers first. A call lasts at most 4 hours. Call status changes arrive as `call.ringing`, `call.answered`, and `call.ended` webhooks. When an organization admin turns on call recording in the dashboard settings, every call is recorded from answer, and `call.recording.ready` fires once its recording is saved. OAuth apps need `calls:read` to read and `calls:write` to place and control calls.
Programmatic API key management — create keys, list them, deprecate them, and assign them to channels. **Blooio Apps (OAuth) only.** Every endpoint under this tag is callable *only* with a Blooio Apps OAuth access token (`blo_at_...`) whose install was granted the `apikeys:read` / `apikeys:manage` scopes. API-key and dashboard authentication are rejected with `403 oauth_token_required`. This mirrors the API-key management that has always lived in the dashboard, exposed to installed apps under explicit user consent.
Model-backed decisions about conversations. Bloobability v2 returns, for each policy you write, a calibrated probability that it holds and a separate estimate of whether the conversation can answer it, from the instant or full tier you choose. The deprecated v1 gauge stays documented for reference.