Get an account's plan
Overview
See which plan an account is on: its name, features, limits, and the review sites it includes.
Use this to show a business their current plan, or to check what features their locations have access to before you call something plan-gated.
You'll need the account's id.
Returns the plan with its features and review sites. plan is null when the account has no plan.
Prerequisites
- A Partner token. See Authentication.
- The account's id (
brandId), e.g. from List your accounts.
Base URL
| Environment | URL |
|---|---|
| Production | https://production-api.shoutaboutus.com |
| Development | https://development-api.shoutaboutus.com |
Endpoint
GET /api/v1/partner/account/{brandId}/assigned-plan
Authentication
Partner token
- The account must be inside your account tree. An id that doesn't exist, isn't an account, or is outside your tree returns
404. - An account that belongs to another partner returns
403.
Rate limit
This endpoint has no rate limit.
Request parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
brandId | path | integer | Yes | The account's id. |
Request body
None.
Request payload
None.
Response body
The payload is inside data.data.
| Field | Type | Description |
|---|---|---|
account | object | A summary of the account. |
account.id | integer | The account's id. |
account.name | string | The account's name. |
account.company_id | integer | The id of the partner (or sub-partner) the account sits under. |
account.bundle_id | integer | Always 3 (an account). |
account.client_account_id | string or null | Your own id for the account. |
account.billing_model | string or null | The account's billing model, or null. |
account.contract_model | string or null | The account's contract model, or null. |
plan | object or null | The account's plan, or null when it has none. |
plan.id | integer | The plan's id. |
plan.plan_name | string | The plan's name. |
plan.price | number | The plan's price. |
plan.original_price | number or null | The original price, or null. |
plan.status | string | active or inactive. |
plan.plan_type | string | plan-based or usage-based. |
plan.enforcement_mode | string | per-location or aggregate-pool. |
plan.is_admin_managed | boolean | true for plans set up by Shout About Us (plan-based partners), false for plans your partner creates (usage-based partners). |
plan.description | string or null | The plan's description. |
plan.plan_end_date | string or null | The date the plan ends, or null. |
plan.short_info | string or null | A one-line summary of the plan. |
plan.created_at | string | When the plan was created. |
plan.updated_at | string | When the plan was last changed. |
plan.deleted_at | string or null | Always null here. |
plan.features | array | The plan's features, one entry per feature. |
plan.features[].id | integer | The feature row's id. |
plan.features[].plan_id | integer | The plan's id. |
plan.features[].feature_name | string | The feature, e.g. ai_response or review_solicitation_email. |
plan.features[].enabled | boolean | Whether the feature is on in this plan. |
plan.features[].service_limit | integer or null | Usage-based plans: the usage limit. null means no limit. |
plan.features[].limit_type | string or null | monthly or quantity, or null. |
plan.features[].included_units | integer or null | Plan-based plans: the units included. null means unlimited. |
plan.features[].overage_rate | string or null | The price per unit over the limit, as a decimal string, e.g. "0.0800". |
plan.features[].hard_stop | boolean | true: the feature stops at its limit. false: usage over the limit is billed at overage_rate. |
plan.features[].created_at | string | When the feature row was created. |
plan.features[].updated_at | string | When the feature row was last changed. |
plan.features[].deleted_at | string or null | Always null here. |
plan.plan_review_sites | array | The review sites on the plan, with how often reviews are collected from each. |
plan.plan_review_sites[].id | integer | The row's id. |
plan.plan_review_sites[].plan_id | integer | The plan's id. |
plan.plan_review_sites[].review_site_id | integer | The review site's id. |
plan.plan_review_sites[].pull_frequency | string | How often reviews are collected: hourly, daily, weekly or monthly. |
plan.plan_review_sites[].pull_interval | integer | Collect every this many hours, days, weeks or months (1 to 30). |
plan.plan_review_sites[].pull_times | array of strings | Times of day to collect, as HH:MM. |
plan.plan_review_sites[].pull_days | array of integers or null | Days of the week to collect (0 to 6), or null. |
plan.plan_review_sites[].created_at | string | When the row was created. |
plan.plan_review_sites[].updated_at | string | When the row was last changed. |
plan.plan_review_sites[].deleted_at | string or null | Always null here. |
plan.plan_review_sites[].review_site | object | The review site, including id, name, link, logo and auth_type. |
plan.plan_review_sites[].review_site.id | integer | The review site's id. |
plan.plan_review_sites[].review_site.name | string | The review site's name. |
plan.plan_review_sites[].review_site.link | string | The review site's home page. |
plan.plan_review_sites[].review_site.logo | string or null | The review site's logo URL, or null. |
plan.plan_review_sites[].review_site.auth_type | string or null | How the site connects: oauth, cookie, credential, default, restapi or null. See List supported review sites. |
Response payload
{
"data": {
"data": {
"account": {
"id": 5994,
"name": "Acme Coffee",
"company_id": 2,
"bundle_id": 3,
"client_account_id": "docs-test-acct-001",
"billing_model": null,
"contract_model": null
},
"plan": {
"id": 36,
"plan_name": "Growth — Unlimited",
"price": 2,
"original_price": null,
"status": "active",
"plan_type": "plan-based",
"enforcement_mode": "per-location",
"is_admin_managed": true,
"description": null,
"plan_end_date": null,
"short_info": null,
"created_at": "2026-09-21T13:53:10.000000Z",
"updated_at": "2026-09-21T13:53:10.000000Z",
"deleted_at": null,
"features": [
{
"id": 1116,
"plan_id": 36,
"feature_name": "ai_response",
"enabled": true,
"service_limit": null,
"limit_type": null,
"included_units": 100,
"overage_rate": "0.0800",
"hard_stop": false,
"created_at": "2026-09-21T13:53:10.000000Z",
"updated_at": "2026-09-21T13:53:10.000000Z",
"deleted_at": null
},
{
"id": 1117,
"plan_id": 36,
"feature_name": "review_flag",
"enabled": true,
"service_limit": null,
"limit_type": null,
"included_units": 121,
"overage_rate": "0.0800",
"hard_stop": false,
"created_at": "2026-09-21T13:53:10.000000Z",
"updated_at": "2026-09-21T13:53:10.000000Z",
"deleted_at": null
}
],
"plan_review_sites": [
{
"id": 218,
"plan_id": 36,
"review_site_id": 1,
"pull_frequency": "daily",
"pull_interval": 1,
"pull_times": [
"06:00"
],
"pull_days": null,
"created_at": "2026-09-21T13:53:10.000000Z",
"updated_at": "2026-09-21T13:53:10.000000Z",
"deleted_at": null,
"review_site": {
"id": 1,
"name": "Yelp",
"link": "http://www.yelp.com",
"logo": null,
"auth_type": "cookie"
}
},
{
"id": 219,
"plan_id": 36,
"review_site_id": 3,
"pull_frequency": "daily",
"pull_interval": 1,
"pull_times": [
"06:00"
],
"pull_days": null,
"created_at": "2026-09-21T13:53:10.000000Z",
"updated_at": "2026-09-21T13:53:10.000000Z",
"deleted_at": null,
"review_site": {
"id": 3,
"name": "Facebook",
"link": "http://www.facebook.com",
"logo": null,
"auth_type": "oauth"
}
}
]
}
}
}
}The example shows two of the plan's features and two of its review sites.
Examples
Success payload
An account with no plan:
{
"data": {
"data": {
"account": {
"id": 5994,
"name": "Acme Coffee",
"company_id": 2,
"bundle_id": 3,
"client_account_id": "docs-test-acct-001",
"billing_model": null,
"contract_model": null
},
"plan": null
}
}
}Error payload
403 Another partner's account
{
"message": "Forbidden",
"status": "error",
"errors": "You do not have access to this account."
}404 Account not found
{
"message": "Not Found",
"status": "error",
"errors": "Account not found."
}| Status | Meaning |
|---|---|
200 | The account and its plan. |
401 | The token is missing, expired or invalid. |
403 | The account belongs to another partner. |
404 | Account not found.: the id is unknown, not an account, or outside your account tree. |
500 | Unexpected server error. |
Example request
curl --request GET \
--url "https://production-api.shoutaboutus.com/api/v1/partner/account/5994/assigned-plan" \
--header 'Authorization: Bearer <bearer-token>' \
--header 'Accept: application/json'Updated 17 days ago
Did this page help you?
