List accounts

Overview

Get a paginated list of account companies (bundle_id=3) under the authenticated partner (bundle_id=1), with owner email, status, location/active-plan counts, and current plan name. Pass call_for=dropdown for a flat label/value list instead.

Prerequisites

  • A bearer token from your partner account.
  • Only Partner tokens can call this endpoint.
  • Contact support if you need help generating or obtaining a token.

Base URL

EnvironmentURL
Productionhttps://production-api.shoutaboutus.com
Developmenthttps://development-api.shoutaboutus.com

Endpoint

GET /api/v1/partner/account/list

Authentication

  • Requires a bearer token in the Authorization: Bearer <bearer-token> header.
  • Who can call it: Partner tokens.
  • Authentication is under the partner/account group.
  • The controller requires the caller's company to be bundle_id == 1 (partner); otherwise it returns 403.
  • Scope is limited to the partner's own account tree, further narrowed by the user's assign_brand/assign_location assignments.
  • Optional account_id/client_account_id filters are re-checked by an ownership check. A value outside the partner's accounts yields an empty page.

Rate limit

  • No rate limit.

Query parameters

  • Query: limit (integer, optional) — page size, default 10.
  • Query: page (integer, optional) — page number.
  • Query: sort_field (string, optional) — one of company_name, email, status, plan_name; default company_name.
  • Query: sort_by (string, optional) — asc/ASC/desc/DESC; default ASC.
  • Query: search_field (string, optional) — company_name, email, status, or plan_name (pairs with search_value).
  • Query: search_value (string, optional) — like-match value (exact status_id when search_field=status).
  • Query: active_plan (in:0,1, optional) — when 1, restrict to accounts with an active store plan.
  • Query: call_for (string, optional) — dropdown returns a flat label/value list (prepends {"label":"All","value":""} when more than one account and no search_value is supplied).
  • Query: account_id (integer, optional) — filter to one account by internal company id; must belong to the auth partner.
  • Query: client_account_id (string, max 255, optional) — partner-supplied external id, resolved to the account within the partner only.

Response

  • id (integer) — account company id.
  • company_name (string) — account name.
  • email (string) — owner user email.
  • account_status (string) — Active / Inactive / Paused (derived from person.status_id).
  • status (integer) — raw person.status_id.
  • total_locations (integer) — count of all store ids under the account.
  • store_ids (integer[]) — active/pending store ids.
  • total_active_plan (integer) — distinct stores with active/expired store_plans.
  • plan_name (string|null) — account-level plan name.
  • client_account_id (string|null) — partner-supplied external id.
  • sub_partner_name (string|null) — owning sub-partner's name when the account belongs to one, else null.

When call_for=dropdown, the data envelope wraps { "status": "success", "response": [{"label": "...", "value": "..."}, ...] }. An All entry is prepended only when more than one account is returned and no search_value was supplied.

200 Paginated · 200

{
  "data": [
    {
      "id": 7,
      "company_name": "Acme Brand",
      "email": "[email protected]",
      "account_status": "Active",
      "status": 1,
      "total_locations": 5,
      "store_ids": [15, 16, 17],
      "plan_name": "Pro Monthly"
    }
  ],
  "links": {
    "first": "https://production-api.shoutaboutus.com/api/v1/partner/account/list?page=1",
    "last": "https://production-api.shoutaboutus.com/api/v1/partner/account/list?page=3",
    "prev": null,
    "next": "https://production-api.shoutaboutus.com/api/v1/partner/account/list?page=2"
  },
  "meta": {
    "current_page": 1,
    "from": 1,
    "last_page": 3,
    "path": "https://production-api.shoutaboutus.com/api/v1/partner/account/list",
    "per_page": 10,
    "to": 10,
    "total": 24
  }
}

Errors

StatusMeaning
401The bearer token is missing, expired or invalid
403The token is valid but the record sits outside your account
422The request failed validation — the response names the fields
500Unexpected server error

Example request

curl --request GET \
  --url "https://production-api.shoutaboutus.com/api/v1/partner/account/list?limit=10&page=1&sort_field=company_name&sort_by=ASC" \
  --header 'Authorization: Bearer <bearer-token>' \
  --header 'Accept: application/json'

Did this page help you?