PDF export (partner)
Overview
Returns the full data payload used to render the partner performance report PDF — header company info, KPI block, sentiment split, by-site, by-location, and the response feed.
Prerequisites
- A bearer token. Callable with Partner tokens.
Base URL
| Environment | URL |
|---|---|
| Production | https://production-api.shoutaboutus.com |
| Development | https://development-api.shoutaboutus.com |
Endpoint
POST /api/v1/partner/pdf/download/performance-report
Authentication
-
Requires a bearer token in the
Authorization: Bearer <bearer-token>header. -
Who can call it: Partner tokens.
-
Mounted under the
partner/pdfgroup. -
The handler hard-gates on
company.bundle_id == 1(returns500withAccess denied. Partner plan required.otherwise). -
Store set precedence:
account_id(account); elsestore_id→ single store; else all partner-user stores. -
All id params are guarded by an ownership check.
Rate limit
- No rate limit.
Request body
- Body:
| Field | Type | Required | Description |
|---|---|---|---|
range_start | string | yes | Y-m-d H:i:s |
range_end | string | yes | Y-m-d H:i:s |
store_id | integer | no | belongs to auth company |
account_id | integer | no | account (bundle_id=3) under this partner |
client_location_id | string | no | resolved to store_id |
client_account_id | string | no | resolved to account_id |
{
"range_start": "2024-01-01 00:00:00",
"range_end": "2024-12-31 23:59:59",
"account_id": 7
}Response
data.start(string) /end(string) — echoed date rangedata.company(object) —partner_name,account_name(comma-joined accounts, truncated to 3 + ". And N More Brand(s)"),store_name(same truncation for locations),logo(string|null, from white-label)data.kpis_data(object) — outputdata.reviewsSentiments(object)data.review_response_by_site(array) — see by-site shapedata.review_response_by_location(array) — per-store rows (id,name,total_reviews,avg_rating,per_of_total,total_response,per_total_response,avg_response_time)data.response_feed(array) —ResponseFeedresource collection (PDF mode)
200 Success · 200
200{
"data": {
"start": "2024-01-01 00:00:00",
"end": "2024-12-31 23:59:59",
"company": {
"partner_name": "Acme Partner",
"account_name": "Brand A, Brand B",
"store_name": "Store 1, Store 2",
"logo": "https://cdn.example.com/logo.png"
},
"kpis_data": {},
"reviewsSentiments": {},
"review_response_by_site": [],
"review_response_by_location": [],
"response_feed": []
}
}Errors
| Status | Meaning |
|---|---|
401 | The bearer token is missing, expired or invalid |
422 | The request failed validation — the response names the fields |
500 | Unexpected server error |
Example request
curl --request POST \
--url "https://production-api.shoutaboutus.com/api/v1/partner/pdf/download/performance-report" \
--header 'Authorization: Bearer <bearer-token>' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"range_start": "2024-01-01 00:00:00", "range_end": "2024-12-31 23:59:59", "account_id": 7}'Updated 8 days ago
Did this page help you?
