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

EnvironmentURL
Productionhttps://production-api.shoutaboutus.com
Developmenthttps://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/pdf group.

  • The handler hard-gates on company.bundle_id == 1 (returns 500 with Access denied. Partner plan required. otherwise).

  • Store set precedence: account_id (account); else store_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:
FieldTypeRequiredDescription
range_startstringyesY-m-d H:i:s
range_endstringyesY-m-d H:i:s
store_idintegernobelongs to auth company
account_idintegernoaccount (bundle_id=3) under this partner
client_location_idstringnoresolved to store_id
client_account_idstringnoresolved 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 range
  • data.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) — output
  • data.reviewsSentiments (object)
  • data.review_response_by_site (array) — see by-site shape
  • data.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) — ResponseFeed resource collection (PDF mode)

200 Success · 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

StatusMeaning
401The bearer token is missing, expired or invalid
422The request failed validation — the response names the fields
500Unexpected 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}'

Did this page help you?