API reference
The BloomText API is a REST API with JSON request and response bodies, standard HTTP status codes, and bearer authentication with an API key. Everything on these pages is generated from the OpenAPI spec below, which you can also import into Postman, Okta Workflows, or any client generator.
Download the OpenAPI specVersion 1.0.0
- OpenAPI 3.1 (YAML) · The source of every reference page.
- OpenAPI 3.1 (JSON) · The same spec, for tools that import JSON.
- OpenAPI 3.0 · For Okta Workflows and other tools that read 3.0.
- Swagger 2.0 · For Microsoft Power Automate connectors.
Run in PostmanDownloads the BloomText collection, generated from the spec. In Postman, choose Import and drop in the file, or paste this link, then set the
api_key variable. If your key reaches several organizations, set org_id and switch on that parameter.Base URL
https://api.bloomtext.com/v1New to the API? Start with the Patient API quickstart, then read Authentication for API keys and scopes. To provision staff, see Manage members.
Endpoints by credential
Resources
OrganizationPatientsPatient importsPatient messagesPatient conversationsPhone numbersCampaignsProfileMessagesReactionsConversationsParticipantsUsersOrganizationsMembersTeamsMember eventsAudit events
Conventions
- Authentication: send an API key as
Authorization: Bearer …. See Authentication. - Access: an API key reaches the Patient API: patient records by ID, phone, or MRN, and bounded reads of patient messages. With member scopes it also reaches the account endpoints for organizations, members and teams.
- Turned on per account: some endpoints, including OAuth, which reaches a person’s own conversations under
/me, are turned on for an account that asks; their pages have a Request access button. - Organizations: a key that reaches more than one organization names one with
org_idon every call. See Organizations a key reaches. - Search: message lists take a
qof words and operators, likerefill from:patient. See Search. - IDs: objects have a stable
id, usually a UUID. - Timestamps: RFC 3339 strings in UTC, like
2026-09-21T12:00:00Z. - Lists: cursor-paginated with
page[limit]andpage[after]. See Pagination. - Writes: every
POSTtakes anIdempotency-Key. See Idempotency. - Errors: RFC 9457 problem details. See Errors.
All endpoints
Organization
| Method | Path | Endpoint |
|---|---|---|
| GET | /organization | Retrieve the organization |
Patients
| Method | Path | Endpoint |
|---|---|---|
| GET | /patients | Find patients |
| POST | /patients | Create a patient |
| GET | /patients/{patientId} | Retrieve a patient |
| PATCH | /patients/{patientId} | Update a patient |
| DELETE | /patients/{patientId} | Delete a patient |
Patient imports
| Method | Path | Endpoint |
|---|---|---|
| POST | /patient-imports | Import patients |
| GET | /patient-imports/{importId} | Retrieve an import |
Patient messages
| Method | Path | Endpoint |
|---|---|---|
| GET | /patient-messages | List patient messages |
| POST | /patient-messages | Send a message to a patient |
| POST | /messages:batch | Send messages to patients in a batch |
| GET | /patient-messages/{messageId} | Retrieve a patient message |
Patient conversations
| Method | Path | Endpoint |
|---|---|---|
| GET | /patient-conversations | List patient conversations |
| GET | /patient-conversations/{conversationId} | Retrieve a patient conversation |
Phone numbers
| Method | Path | Endpoint |
|---|---|---|
| GET | /phone-numbers | List phone numbers |
Campaigns
| Method | Path | Endpoint |
|---|---|---|
| GET | /campaigns | List campaigns |
| POST | /campaigns | Create a campaign |
| GET | /campaigns/{campaignId} | Retrieve a campaign |
| PATCH | /campaigns/{campaignId} | Update a campaign |
| DELETE | /campaigns/{campaignId} | Delete a campaign |
| GET | /campaigns/{campaignId}/recipients | List campaign recipients |
| POST | /campaigns/{campaignId}/recipients | Add campaign recipients |
| POST | /campaigns/{campaignId}/recipients/remove | Remove campaign recipients |
| POST | /campaigns/{campaignId}/start | Start a campaign |
| POST | /campaigns/{campaignId}/pause | Pause a campaign |
| POST | /campaigns/{campaignId}/stop | Stop a campaign |
Profile
| Method | Path | Endpoint |
|---|---|---|
| GET | /me | Retrieve the profile |
Messages
| Method | Path | Endpoint |
|---|---|---|
| GET | /me/messages | List messages |
| GET | /me/messages/{messageId} | Retrieve a message |
| POST | /me/conversations/{conversationId}/messages | Send a message |
Reactions
| Method | Path | Endpoint |
|---|---|---|
| GET | /me/messages/{messageId}/reactions | List reactions |
| POST | /me/messages/{messageId}/reactions | Add a reaction |
| DELETE | /me/messages/{messageId}/reactions | Remove a reaction |
Conversations
| Method | Path | Endpoint |
|---|---|---|
| GET | /me/conversations | List conversations |
| GET | /me/conversations/{conversationId} | Retrieve a conversation |
Participants
| Method | Path | Endpoint |
|---|---|---|
| GET | /me/conversations/{conversationId}/participants | List participants |
Users
| Method | Path | Endpoint |
|---|---|---|
| GET | /users | List users |
| GET | /users/{userId} | Retrieve a user |
Organizations
| Method | Path | Endpoint |
|---|---|---|
| GET | /orgs | List organizations |
Members
| Method | Path | Endpoint |
|---|---|---|
| GET | /members | List members |
| POST | /members | Add a member |
| GET | /members/{memberId} | Retrieve a member |
| PATCH | /members/{memberId} | Update a member |
| DELETE | /members/{memberId} | Remove a member |
Teams
| Method | Path | Endpoint |
|---|---|---|
| GET | /teams | List teams |
| POST | /teams/{teamId}/members | Add a member to a team |
| DELETE | /teams/{teamId}/members/{memberId} | Remove a member from a team |
Member events
| Method | Path | Endpoint |
|---|---|---|
| GET | /member-events | List member events |
Audit events
| Method | Path | Endpoint |
|---|---|---|
| GET | /audit-events | List audit events |
Last updated on