Skip to main content
Retrieve bulk SMS processing status and counts

Authorizations

Authorization
string
header
required

OAuth 2.0 Client Credentials for the External Integration API (ADR-015, ADR-023).

Client authentication: HTTP Basic (client_secret_basic). Access-token audience: 1funnel-external-api.

The tokenUrl below is the production target. Sandbox uses a different host. OpenAPI cannot bind tokenUrl to the selected servers entry; see x-1funnel-oauth on the root document and the authentication guide when published.

Coarse OAuth scopes (if any) are token-level vocabulary (ADR-013 IA-06). They are not the ADR-022 resource permission catalogue. Resource permissions are enforced after token validation via application-to-business grants (ADR-016) and are documented per operation with x-required-permissions.

These URLs are architecture targets. They are not claimed to be deployed or generally available.

Headers

X-Request-Id
string

Request correlation identifier (STD-API-01 D12). Clients may supply a value of 1–128 characters matching A-Za-z0-9._-. Missing or invalid values are replaced by a server-generated identifier. Distinct from W3C traceparent, resource ids, Idempotency-Key, and webhook event ids.

Required string length: 1 - 128
Pattern: ^[A-Za-z0-9._-]+$
Example:

"req_01HZX3K9EXAMPLE"

Path Parameters

businessId
string<uuid>
required

Business resource selector in /v1/businesses/{businessId}/… (ADR-006). UUIDv7-compatible opaque identifier. {businessId} is not authorization proof. The resource server must independently verify an active application-to-business grant, required permission, and ownership (ADR-016, ADR-022).

UUID with version nibble 7 (UUIDv7). STD-API-01 prefers UUIDv7 for new platform-generated external resource identifiers. Clients must still treat the value as opaque. Not every path parameter is guaranteed to be v7 solely because it is a UUID; use this schema where the contract asserts UUIDv7.

Pattern: ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-7[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$
Example:

"018f3c4e-7b2a-7c3d-8e9f-0123456789ab"

bulkMessageId
string<uuid>
required

Bulk SMS message identifier (UUIDv7). Not authorization proof. UUID with version nibble 7 (UUIDv7). STD-API-01 prefers UUIDv7 for new platform-generated external resource identifiers. Clients must still treat the value as opaque. Not every path parameter is guaranteed to be v7 solely because it is a UUID; use this schema where the contract asserts UUIDv7.

Pattern: ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-7[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$
Example:

"018f3c4e-7b2a-7c3d-8e9f-0123456789ab"

Response

Bulk message detail

Bulk SMS resource. Processing status is distinct from recipient delivery outcomes (ADR-018 SMS-11–SMS-15). settled means status == completed && retryable_failed_count == 0 when authoritative submission counters are available — not delivery completion.

id
string<uuid>
required

UUID with version nibble 7 (UUIDv7). STD-API-01 prefers UUIDv7 for new platform-generated external resource identifiers. Clients must still treat the value as opaque. Not every path parameter is guaranteed to be v7 solely because it is a UUID; use this schema where the contract asserts UUIDv7.

Pattern: ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-7[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$
Example:

"018f3c4e-7b2a-7c3d-8e9f-0123456789ab"

business_id
string<uuid>
required

UUID with version nibble 7 (UUIDv7). STD-API-01 prefers UUIDv7 for new platform-generated external resource identifiers. Clients must still treat the value as opaque. Not every path parameter is guaranteed to be v7 solely because it is a UUID; use this schema where the contract asserts UUIDv7.

Pattern: ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-7[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$
Example:

"018f3c4e-7b2a-7c3d-8e9f-0123456789ab"

from
string
required

Authorized sender identity for the business (from). The backend validates that the application/business may use this sender. Arbitrary sender IDs are not permitted. Public sender-ID management resources remain future (ADR-018 SMS-19 / target architecture).

Required string length: 1 - 20
Example:

"1FUNNEL"

classification
enum<string>
required

Public message classification (lowercase snake_case). Transactional vs promotional distinction for compliance and routing policy.

Available options:
transactional,
promotional
Example:

"transactional"

status
enum<string>
required

Bulk-message processing lifecycle (ADR-018 SMS-13 / ADR-003 Model B). completed means the primary processing pass finished — not all delivered and not all retries settled.

Available options:
created,
scheduled,
queued,
processing,
paused,
completed,
failed,
cancelled
Example:

"processing"

settled
boolean | null
required

Derived when authoritative retryable_failed_count is available: status == completed && retryable_failed_count == 0. Null when settlement cannot be computed. Independent of delivery_summary.

accepted_at
string<date-time>
required

RFC 3339 date-time. Response timestamps are UTC with a Z offset (STD-API-01 D06). Client-supplied timestamps must include an explicit offset; local times without an offset are rejected.

Example:

"2026-10-13T09:00:00.000Z"

message
string | null
template
object | null

Immutable revision pin recorded on an accepted SMS (DEC-SMS-T02 / ADR-018 SMS-08). Present on accepted message representations after the backend resolves the active revision at durable acceptance.

Example:
intake
object | null

Intake classification counts (ADR-018 SMS-14). Omit this object when authoritative intake totals are unavailable — do not fabricate zeros.

submission
object | null

Submission/processing counts (ADR-018 SMS-14). Not delivery outcomes. Omit when unavailable — do not fabricate zeros. Do not present success as delivery.

delivery_summary
object | null

Null when authoritative delivery reporting is unavailable, with a machine-readable warnings entry. Do not fabricate zero counts. Do not treat unavailable reporting as delivery failure.

Example:
warnings
object[]