get
https://production-api.shoutaboutus.com/api/v1/campaign//report/sms
Get SMS-channel KPIs (valid recipients, processed, sent, delivered, clicked, failed, tests, kiosk) plus computed rates and a per-day timeseries for one campaign.
Auth: Account — authentication bearer token; requires the user's own company bundle_id === 3 (ACCOUNT). The campaign, so an account can only read its own campaigns (404 Campaign not found otherwise). Non-account users get 403.
Rate limit: No rate limit.
Request
- Query:
start_date(stringY-m-d, optional) — defaults to the campaign'screated_atstart-of-day. - Query:
end_date(stringY-m-d, optional) — defaults to now end-of-day. Ifstart_date > end_datethe two are swapped.
Response — { data. } envelope. Note: the controller passes an array that already contains status and data keys to successResponse, so the literal payload is { data: { status: "success", data: { kpis, timeseries } } }.
data.status(string) —"success".data.data.kpis.recipients_valid(int) — count of audience rows withis_phone_valid = 'valid',is_test = false.data.data.kpis.sent/delivered/clicked/failed/processed(int) — non-test counts within the date window (sent_at / delivered_at / link_clicked_at / failed_at / created_at respectively;failedalso requiresstatus = 'failed').data.data.kpis.tests_sent(int) —is_test = truerequests created in window.data.data.kpis.kiosk_sent(int) — non-testis_kiosk = truerequests in window.data.data.kpis.rates.processed_rate/delivery_rate/click_rate/sent_vs_audience_rate(float, 2dp) — percentages; 0 when denominator is 0.data.data.timeseries.by_day[](array) — one row per calendar day in range withdate(Y-m-d),sent,delivered,clicked,failed,processed(all int).
Path params
| Parameter | Type | Required | Notes |
|---|---|---|---|
campaignId | integer | Required | Digits only. |
Errors: 422 on validation failure.
Recent Requests
Log in to see full request history
| Time | Status | User Agent | |
|---|---|---|---|
Retrieving recent requests… | |||
Loading…
