Boom Ai Message logs API
The Message logs API from Boom Ai — 1 operation(s) for message logs.
The Message logs API from Boom Ai — 1 operation(s) for message logs.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/boom-ai:boom-ai-message-logs-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Boom Message logs API
version: 1.0.0
description: 'Boom''s public REST API — one uniform surface over every platform capability. CDP: upsert people and custom objects, define object and relationship types, link and unlink relationships, and record behavioral events — one record per request or up to 1000 per request via the `/batch` endpoints. Segments: read (list, read, membership) and full authoring — discover the filterable catalog, validate a filter, create and update segments, preview match counts, and trigger evaluation. Initiatives: create and configure outreach initiatives, link WhatsApp templates, drive the lifecycle (launch, cancel, archive), and read collected-data summaries. Participants: enroll people into an active initiative, track their status, read conversation transcripts, and stop outreach. Journeys: read-only access to always-on message flows and their metrics. WhatsApp templates: list your WhatsApp numbers and list, read, and create message templates. The same capabilities are exposed as MCP tools with identical schemas.'
servers:
- url: https://www.useboom.ai
description: Production
- url: https://dev.useboom.ai
description: Development (sandbox — use a development organization API key)
security:
- bearerAuth: []
tags:
- name: Message logs
paths:
/api/v1/message-logs:
get:
operationId: message_logs_list
summary: List message delivery logs
description: 'List the messages your organization sent or received and what happened to each one — delivered, failed, or blocked — with the recipient and the failure reason. The same rows as Settings → Logs, so you can review delivery in bulk instead of opening conversations one at a time.
Statuses are a lifecycle, not a set of outcomes. SENT, DELIVERED and READ all mean the message went out; they differ only in how far it got. SENT means it left Boom and no receipt has come back yet. To count what you sent, ask for all three — asking for SENT alone returns only the ones still unconfirmed.
How far a message can get depends on the channel. WhatsApp reaches READ. Email never does: there is no read receipt, so an email resting at DELIVERED is fully settled. PENDING on an inbound message is normal and permanent — nobody sends a receipt for a message a customer wrote to you.
This is a log of messages, not a delivery-rate report. A few send failures never create a row at all, so an absent message is not proof that nothing was attempted.'
tags:
- Message logs
parameters:
- name: status
in: query
required: false
schema:
$schema: https://json-schema.org/draft/2020-12/schema
description: 'Keep only these statuses. Omit for every status. Several as a list, or over HTTP as one comma-separated value: `?status=SENT,DELIVERED,READ`.'
anyOf:
- type: string
enum:
- PENDING
- SENT
- DELIVERED
- READ
- FAILED
- type: array
items:
type: string
enum:
- PENDING
- SENT
- DELIVERED
- READ
- FAILED
- type: string
- name: channel
in: query
required: false
schema:
$schema: https://json-schema.org/draft/2020-12/schema
description: 'Keep only these channels. Omit for every channel. Several as a list, or over HTTP as one comma-separated value: `?channel=WHATSAPP,SMS`.'
anyOf:
- type: string
enum:
- WHATSAPP
- EMAIL
- SMS
- VOICE
- WEB_CHAT
- WEB_WIDGET
- FACEBOOK_MESSENGER
- INSTAGRAM
- type: array
items:
type: string
enum:
- WHATSAPP
- EMAIL
- SMS
- VOICE
- WEB_CHAT
- WEB_WIDGET
- FACEBOOK_MESSENGER
- INSTAGRAM
- type: string
- name: direction
in: query
required: false
schema:
$schema: https://json-schema.org/draft/2020-12/schema
default: OUTBOUND
description: Defaults to OUTBOUND — a delivery status only means something for a message you sent. Pass INBOUND for what customers sent you.
type: string
enum:
- INBOUND
- OUTBOUND
- name: createdAfter
in: query
required: false
schema:
$schema: https://json-schema.org/draft/2020-12/schema
description: Only messages created at or after this moment. A date (2026-08-01) or a full ISO 8601 timestamp.
type: string
- name: createdBefore
in: query
required: false
schema:
$schema: https://json-schema.org/draft/2020-12/schema
description: Only messages created at or before this moment. A date (2026-08-01) or a full ISO 8601 timestamp.
type: string
- name: search
in: query
required: false
schema:
$schema: https://json-schema.org/draft/2020-12/schema
description: Match the recipient's name, phone or email address. A phone matches in any format. Over MCP, refused with sensitive_field when the organization hid any of those fields.
type: string
maxLength: 100
- name: limit
in: query
required: false
schema:
$schema: https://json-schema.org/draft/2020-12/schema
description: Page size, up to 1000.
type: integer
minimum: 1
maximum: 1000
- name: cursor
in: query
required: false
schema:
$schema: https://json-schema.org/draft/2020-12/schema
description: Opaque cursor from a previous page.
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
$schema: https://json-schema.org/draft/2020-12/schema
type: object
properties:
range:
type: object
properties:
from:
anyOf:
- type: string
- type: 'null'
to:
anyOf:
- type: string
- type: 'null'
required:
- from
- to
additionalProperties: false
description: The window these rows actually cover. Quote it alongside any count you report — with no dates given the read covers a recent window, not all time.
data:
type: array
items:
type: object
properties:
id:
type: string
direction:
type: string
enum:
- INBOUND
- OUTBOUND
channel:
anyOf:
- type: string
enum:
- WHATSAPP
- EMAIL
- SMS
- VOICE
- WEB_CHAT
- WEB_WIDGET
- FACEBOOK_MESSENGER
- INSTAGRAM
- type: 'null'
description: Which channel carried the message. Statuses do not mean the same thing on every channel — see `status`.
status:
type: string
enum:
- PENDING
- SENT
- DELIVERED
- READ
- FAILED
createdAt:
type: string
description: ISO 8601 timestamp.
sentAt:
anyOf:
- type: string
- type: 'null'
deliveredAt:
anyOf:
- type: string
- type: 'null'
readAt:
anyOf:
- type: string
- type: 'null'
failedAt:
anyOf:
- type: string
- type: 'null'
errorMessage:
anyOf:
- type: string
- type: 'null'
description: Why it failed, in words. Populated for email (from the bounce or complaint notice); usually null on WhatsApp, where `errorCode` is what you get.
errorCode:
anyOf:
- anyOf:
- type: string
- type: number
- type: 'null'
description: 'The provider''s numeric failure code on WhatsApp. The ones you will actually see: 63024 — the number is not reachable on WhatsApp (wrong number, or it never had an account); 63049 — the recipient''s provider chose not to deliver a marketing message; 63032 — the recipient has blocked this business; 63050 — the business is not allowed to message this recipient. Any other code is passed through as-is. Null on rows sent before codes were recorded, which is not a data error.'
imported:
type: boolean
description: Carried over from a previous system rather than sent by Boom, so its status reflects whatever that system last knew and will never settle further.
recipient:
type: object
properties:
name:
anyOf:
- type: string
- type: 'null'
phone:
anyOf:
- type: string
- type: 'null'
email:
anyOf:
- type: string
- type: 'null'
description: 'Read the handle that matches the row''s channel: the email address on an email row, the phone on a WhatsApp or SMS one.'
required:
- name
- phone
- email
additionalProperties: false
required:
- id
- direction
- channel
- status
- createdAt
- sentAt
- deliveredAt
- readAt
- failedAt
- errorMessage
- errorCode
- imported
- recipient
additionalProperties: false
next_cursor:
anyOf:
- type: string
- type: 'null'
required:
- range
- data
- next_cursor
additionalProperties: false
'400':
description: Validation failed or the request cannot proceed.
content:
application/json:
schema:
type: object
properties:
error:
type: object
properties:
code:
type: string
description: Stable machine-readable error code (snake_case).
message:
type: string
required:
- code
- message
required:
- error
'401':
description: Missing, malformed, or revoked API key.
content:
application/json:
schema:
type: object
properties:
error:
type: object
properties:
code:
type: string
description: Stable machine-readable error code (snake_case).
message:
type: string
required:
- code
- message
required:
- error
'404':
description: The resource does not exist in this organization.
content:
application/json:
schema:
type: object
properties:
error:
type: object
properties:
code:
type: string
description: Stable machine-readable error code (snake_case).
message:
type: string
required:
- code
- message
required:
- error
'409':
description: Conflicts with the current state (duplicates, wrong lifecycle state).
content:
application/json:
schema:
type: object
properties:
error:
type: object
properties:
code:
type: string
description: Stable machine-readable error code (snake_case).
message:
type: string
required:
- code
- message
required:
- error
'422':
description: The request is well-formed but semantically invalid.
content:
application/json:
schema:
type: object
properties:
error:
type: object
properties:
code:
type: string
description: Stable machine-readable error code (snake_case).
message:
type: string
required:
- code
- message
required:
- error
'429':
description: Rate limit exceeded — retry after `Retry-After`.
content:
application/json:
schema:
type: object
properties:
error:
type: object
properties:
code:
type: string
description: Stable machine-readable error code (snake_case).
message:
type: string
required:
- code
- message
required:
- error
'500':
description: Internal server error.
content:
application/json:
schema:
type: object
properties:
error:
type: object
properties:
code:
type: string
description: Stable machine-readable error code (snake_case).
message:
type: string
required:
- code
- message
required:
- error
'503':
description: Transient error — retry with a narrower request.
content:
application/json:
schema:
type: object
properties:
error:
type: object
properties:
code:
type: string
description: Stable machine-readable error code (snake_case).
message:
type: string
required:
- code
- message
required:
- error
components:
securitySchemes:
bearerAuth:
type: http
scheme: bearer
description: 'Organization API key, sent as `Authorization: Bearer boom_org_...`.'
x-provenance:
method: harvested
publisher: Boom Ai
source: https://docs.useboom.ai/api-reference/openapi.json
note: split by refine-openapis from the provider's own published document, verified by fetch (openapi/_original/*.fetch.json);
stamped by stamp-openapi-provenance.py (roadmap#793)