List your plans

Overview

Get every plan available to your partner.

Use this before creating an account or changing a plan, to find the plan_id.

You'll need a partner token.

Returns each plan with its name, price, capabilities and limits, review sites, and collection cadence. Plans are set up by Shout About Us, so the list is read-only (meta.read_only is always true).

Prerequisites

Base URL

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

Endpoint

GET /api/v1/partner/plans/list

Authentication

Partner token

  • Lists the plans set up for your partner that match its billing model: plan-based partners get the plans set up by Shout About Us (is_admin_managed true), usage-based partners their own plans (is_admin_managed false).
  • A partner with no billing model configured gets 403.

Rate limit

This endpoint has no rate limit.

Request parameters

None.

Request body

None.

Request payload

None.

Response body

The payload is inside data.

FieldTypeDescription
dataarrayThe plans, sorted by name.
data[].idintegerThe plan's id.
data[].plan_namestringThe plan's name.
data[].pricenumberThe plan's price.
data[].original_pricenumber or nullThe original price, or null.
data[].statusstringactive or inactive.
data[].plan_typestringplan-based or usage-based.
data[].enforcement_modestringper-location or aggregate-pool.
data[].is_admin_managedbooleantrue for plans set up by Shout About Us (plan-based partners), false for plans your partner creates (usage-based partners).
data[].descriptionstring or nullThe plan's description.
data[].plan_end_datestring or nullThe date the plan ends, or null.
data[].short_infostring or nullA one-line summary of the plan.
data[].created_atstringWhen the plan was created.
data[].updated_atstringWhen the plan was last changed.
data[].deleted_atstring or nullAlways null here.
data[].featuresarrayThe plan's features, one entry per feature.
data[].features[].idintegerThe feature row's id.
data[].features[].plan_idintegerThe plan's id.
data[].features[].feature_namestringThe feature, e.g. ai_response or review_solicitation_email.
data[].features[].enabledbooleanWhether the feature is on in this plan.
data[].features[].service_limitinteger or nullUsage-based plans: the usage limit. null means no limit.
data[].features[].limit_typestring or nullmonthly or quantity, or null.
data[].features[].included_unitsinteger or nullPlan-based plans: the units included. null means unlimited.
data[].features[].overage_ratestring or nullThe price per unit over the limit, as a decimal string, e.g. "0.0800".
data[].features[].hard_stopbooleantrue: the feature stops at its limit. false: usage over the limit is billed at overage_rate.
data[].features[].created_atstringWhen the feature row was created.
data[].features[].updated_atstringWhen the feature row was last changed.
data[].features[].deleted_atstring or nullAlways null here.
data[].plan_review_sitesarrayThe review sites on the plan, with how often reviews are collected from each.
data[].plan_review_sites[].idintegerThe row's id.
data[].plan_review_sites[].plan_idintegerThe plan's id.
data[].plan_review_sites[].review_site_idintegerThe review site's id.
data[].plan_review_sites[].pull_frequencystringHow often reviews are collected: hourly, daily, weekly or monthly.
data[].plan_review_sites[].pull_intervalintegerCollect every this many hours, days, weeks or months (1 to 30).
data[].plan_review_sites[].pull_timesarray of stringsTimes of day to collect, as HH:MM.
data[].plan_review_sites[].pull_daysarray of integers or nullDays of the week to collect (0 to 6), or null.
data[].plan_review_sites[].created_atstringWhen the row was created.
data[].plan_review_sites[].updated_atstringWhen the row was last changed.
data[].plan_review_sites[].deleted_atstring or nullAlways null here.
data[].plan_review_sites[].review_siteobjectThe review site, including id, name, link, logo and auth_type.
data[].plan_review_sites[].review_site.idintegerThe review site's id.
data[].plan_review_sites[].review_site.namestringThe review site's name.
data[].plan_review_sites[].review_site.linkstringThe review site's home page.
data[].plan_review_sites[].review_site.logostring or nullThe review site's logo URL, or null.
data[].plan_review_sites[].review_site.auth_typestring or nullHow the site connects: oauth, cookie, credential, default, restapi or null. See List supported review sites.
data[].features[].partner_billing_enabledbooleantrue when your partner's billing setup has this feature turned on (or has no setting for it).
metaobjectAbout the list.
meta.billing_modelstringYour partner's billing model: plan-based or usage-based.
meta.read_onlybooleanAlways true: plans can't be changed through the API.

Response payload

{
  "data": {
    "data": [
      {
        "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,
            "partner_billing_enabled": true
          },
          {
            "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,
            "partner_billing_enabled": true
          },
          {
            "id": 1118,
            "plan_id": 36,
            "feature_name": "response_to_past_reviews",
            "enabled": true,
            "service_limit": null,
            "limit_type": "monthly",
            "included_units": 12,
            "overage_rate": "0.0500",
            "hard_stop": false,
            "created_at": "2026-09-21T13:53:10.000000Z",
            "updated_at": "2026-09-21T13:53:10.000000Z",
            "deleted_at": null,
            "partner_billing_enabled": true
          }
        ],
        "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"
            }
          }
        ]
      }
    ],
    "meta": {
      "billing_model": "plan-based",
      "read_only": true
    }
  }
}

The example shows three of the plan's features and two of its review sites.

Examples

Success payload

See Response payload.

Error payload

403 Billing model not configured

{
  "message": "Forbidden",
  "status": "error",
  "errors": "Partner billing model is not configured."
}

403 No partner

{
  "message": "Forbidden",
  "status": "error",
  "errors": "Authenticated user is not associated with an partner."
}
StatusMeaning
200Your partner's plans.
401The token is missing, expired or invalid.
403Your partner has no billing model configured, or the token isn't linked to a partner.
500Unexpected server error.

Example request

curl --request GET \
  --url "https://production-api.shoutaboutus.com/api/v1/partner/plans/list" \
  --header 'Authorization: Bearer <bearer-token>' \
  --header 'Accept: application/json'

Did this page help you?