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

Base URL

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

ParameterInTypeRequiredDescription
brandIdpathintegerYesThe account's id.

Request body

None.

Request payload

None.

Response body

The payload is inside data.data.

FieldTypeDescription
accountobjectA summary of the account.
account.idintegerThe account's id.
account.namestringThe account's name.
account.company_idintegerThe id of the partner (or sub-partner) the account sits under.
account.bundle_idintegerAlways 3 (an account).
account.client_account_idstring or nullYour own id for the account.
account.billing_modelstring or nullThe account's billing model, or null.
account.contract_modelstring or nullThe account's contract model, or null.
planobject or nullThe account's plan, or null when it has none.
plan.idintegerThe plan's id.
plan.plan_namestringThe plan's name.
plan.pricenumberThe plan's price.
plan.original_pricenumber or nullThe original price, or null.
plan.statusstringactive or inactive.
plan.plan_typestringplan-based or usage-based.
plan.enforcement_modestringper-location or aggregate-pool.
plan.is_admin_managedbooleantrue for plans set up by Shout About Us (plan-based partners), false for plans your partner creates (usage-based partners).
plan.descriptionstring or nullThe plan's description.
plan.plan_end_datestring or nullThe date the plan ends, or null.
plan.short_infostring or nullA one-line summary of the plan.
plan.created_atstringWhen the plan was created.
plan.updated_atstringWhen the plan was last changed.
plan.deleted_atstring or nullAlways null here.
plan.featuresarrayThe plan's features, one entry per feature.
plan.features[].idintegerThe feature row's id.
plan.features[].plan_idintegerThe plan's id.
plan.features[].feature_namestringThe feature, e.g. ai_response or review_solicitation_email.
plan.features[].enabledbooleanWhether the feature is on in this plan.
plan.features[].service_limitinteger or nullUsage-based plans: the usage limit. null means no limit.
plan.features[].limit_typestring or nullmonthly or quantity, or null.
plan.features[].included_unitsinteger or nullPlan-based plans: the units included. null means unlimited.
plan.features[].overage_ratestring or nullThe price per unit over the limit, as a decimal string, e.g. "0.0800".
plan.features[].hard_stopbooleantrue: the feature stops at its limit. false: usage over the limit is billed at overage_rate.
plan.features[].created_atstringWhen the feature row was created.
plan.features[].updated_atstringWhen the feature row was last changed.
plan.features[].deleted_atstring or nullAlways null here.
plan.plan_review_sitesarrayThe review sites on the plan, with how often reviews are collected from each.
plan.plan_review_sites[].idintegerThe row's id.
plan.plan_review_sites[].plan_idintegerThe plan's id.
plan.plan_review_sites[].review_site_idintegerThe review site's id.
plan.plan_review_sites[].pull_frequencystringHow often reviews are collected: hourly, daily, weekly or monthly.
plan.plan_review_sites[].pull_intervalintegerCollect every this many hours, days, weeks or months (1 to 30).
plan.plan_review_sites[].pull_timesarray of stringsTimes of day to collect, as HH:MM.
plan.plan_review_sites[].pull_daysarray of integers or nullDays of the week to collect (0 to 6), or null.
plan.plan_review_sites[].created_atstringWhen the row was created.
plan.plan_review_sites[].updated_atstringWhen the row was last changed.
plan.plan_review_sites[].deleted_atstring or nullAlways null here.
plan.plan_review_sites[].review_siteobjectThe review site, including id, name, link, logo and auth_type.
plan.plan_review_sites[].review_site.idintegerThe review site's id.
plan.plan_review_sites[].review_site.namestringThe review site's name.
plan.plan_review_sites[].review_site.linkstringThe review site's home page.
plan.plan_review_sites[].review_site.logostring or nullThe review site's logo URL, or null.
plan.plan_review_sites[].review_site.auth_typestring or nullHow 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."
}
StatusMeaning
200The account and its plan.
401The token is missing, expired or invalid.
403The account belongs to another partner.
404Account not found.: the id is unknown, not an account, or outside your account tree.
500Unexpected 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'

Did this page help you?