OAuth endpoints
All 37 endpoints an org admin’s OAuth access token can call: the admin’s own conversations, which only OAuth reaches, and every Patient API endpoint. Each links to its full reference page, with parameters, errors, and code samples.
https://api.bloomtext.com/v1Send the access token as Authorization: Bearer $BLOOMTEXT_ACCESS_TOKEN. The scope column is what the admin must have approved; see Scopes.
Authorization server
Your app gets and manages tokens with these standard OAuth 2.0 URLs. They return OAuth errors, not problem details. See Connect with OAuth.
| Method | URL | Used to |
|---|---|---|
| GET | https://app.bloomtext.com/oauth/authorize | Send the admin to sign in and approve your app |
| POST | https://app.bloomtext.com/oauth/token | Exchange a code for tokens and refresh an access token |
| POST | https://app.bloomtext.com/oauth/revoke | Disconnect a user |
| GET | https://app.bloomtext.com/.well-known/oauth-authorization-server | Discover the authorization server |
| GET | https://api.bloomtext.com/.well-known/oauth-protected-resource/v1 | Discover the API as a protected resource |
The admin’s own conversations
OAuth only. These reach the conversations the connected admin is in, and the organization’s staff directory.
Profile
The person who connected your app with OAuth, and the grant itself.
| Method | Path | Endpoint | Scope |
|---|---|---|---|
| GET | /me | Retrieve the profile | messages.read |
Messages
The connected person’s own messages, in team chats and patient conversations.
| Method | Path | Endpoint | Scope |
|---|---|---|---|
| GET | /me/messages | List messages | messages.read |
| GET | /me/messages/{messageId} | Retrieve a message | messages.read |
| POST | /me/conversations/{conversationId}/messages | Send a message | messages.write |
Reactions
Emoji reactions on the connected person’s messages.
| Method | Path | Endpoint | Scope |
|---|---|---|---|
| GET | /me/messages/{messageId}/reactions | List reactions | messages.read |
| POST | /me/messages/{messageId}/reactions | Add a reaction | messages.write |
| DELETE | /me/messages/{messageId}/reactions | Remove a reaction | messages.write |
Conversations
The connected person’s own conversations, team chats and patient conversations.
| Method | Path | Endpoint | Scope |
|---|---|---|---|
| GET | /me/conversations | List conversations | messages.read |
| GET | /me/conversations/{conversationId} | Retrieve a conversation | messages.read |
Participants
Staff and patients in one of the connected person’s conversations.
| Method | Path | Endpoint | Scope |
|---|---|---|---|
| GET | /me/conversations/{conversationId}/participants | List participants | messages.read |
Users
Staff members of the connected person’s organization.
| Method | Path | Endpoint | Scope |
|---|---|---|---|
| GET | /users | List users | messages.read |
| GET | /users/{userId} | Retrieve a user | messages.read |
Patient API
The same endpoints an API key calls. With OAuth, phone numbers are limited to the admin’s teams’ numbers, and messages come from the admin rather than a key.
Organization
The organization a credential belongs to.
| Method | Path | Endpoint | Scope |
|---|---|---|---|
| GET | /organization | Retrieve the organization | Any |
Patients
Patient records, always found by patient ID, phone number, or MRN.
| Method | Path | Endpoint | Scope |
|---|---|---|---|
| GET | /patients | Find patients | patients.read |
| POST | /patients | Create a patient | patients.write |
| GET | /patients/{patientId} | Retrieve a patient | patients.read |
| PATCH | /patients/{patientId} | Update a patient | patients.write |
| DELETE | /patients/{patientId} | Delete a patient | patients.write |
Patient imports
Bulk imports of patient records.
| Method | Path | Endpoint | Scope |
|---|---|---|---|
| POST | /patient-imports | Import patients | patients.write |
| GET | /patient-imports/{importId} | Retrieve an import | patients.write |
Patient messages
Messages with patients: send to a patient by ID or phone number, read patient messages by time range, and check delivery.
| Method | Path | Endpoint | Scope |
|---|---|---|---|
| GET | /patient-messages | List patient messages | messages.read |
| POST | /patient-messages | Send a message to a patient | messages.write |
| GET | /patient-messages/{messageId} | Retrieve a patient message | messages.read |
Patient conversations
Conversations with patients, one per patient and clinic phone number.
| Method | Path | Endpoint | Scope |
|---|---|---|---|
| GET | /patient-conversations | List patient conversations | messages.read |
| GET | /patient-conversations/{conversationId} | Retrieve a patient conversation | messages.read |
Phone numbers
The clinic phone numbers messages to patients come from, and the team each belongs to.
| Method | Path | Endpoint | Scope |
|---|---|---|---|
| GET | /phone-numbers | List phone numbers | messages.read |
Campaigns
One message sent to many patients from a clinic phone number, with per-patient delivery.
| Method | Path | Endpoint | Scope |
|---|---|---|---|
| GET | /campaigns | List campaigns | messages.read |
| POST | /campaigns | Create a campaign | messages.write |
| GET | /campaigns/{campaignId} | Retrieve a campaign | messages.read |
| PATCH | /campaigns/{campaignId} | Update a campaign | messages.write |
| DELETE | /campaigns/{campaignId} | Delete a campaign | messages.write |
| GET | /campaigns/{campaignId}/recipients | List campaign recipients | messages.read |
| POST | /campaigns/{campaignId}/recipients | Add campaign recipients | messages.write |
| POST | /campaigns/{campaignId}/recipients/remove | Remove campaign recipients | messages.write |
| POST | /campaigns/{campaignId}/start | Start a campaign | messages.write |
| POST | /campaigns/{campaignId}/pause | Pause a campaign | messages.write |
| POST | /campaigns/{campaignId}/stop | Stop a campaign | messages.write |