Verify an SSO token

Overview

Confirm an SSO-issued token and return the session.

Called by the dashboard.

You'll need the token.

Returns the session: the token you sent, echoed back, with the user, their company, theme and white-label branding.

Prerequisites

Base URL

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

Endpoint

GET /api/v1/sso/rs-login

Authentication

Partner or Account token

  • Describes the user the token belongs to. There is no id to pass.
  • Any other token (for example a Location token) gets 403.
  • A user whose account is inactive gets 400.

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
statusstringsuccess, or signup_pending when the user hasn't finished signing up (then only message follows).
messagestringsignup_pending only: what the user still has to do.
tokenstringThe bearer token you sent, echoed back.
user.idintegerUser id.
user.usernamestringUsername.
user.emailstringEmail address.
user.email_verified_atstring or nullWhen the email address was verified.
user.phone_numberstring or nullPhone number.
user.first_namestring or nullFirst name.
user.last_namestring or nullLast name.
user.titlestring or nullJob title.
user.rolestringOne of Owner, Admin User, Basic User, Brand Assigned, Location Assigned, User.
user.total_locationintegerNumber of locations the user can reach.
user.show_review_feed_widgetintegerAlways 0.
company.idintegerThe user's company id.
company.namestringCompany name.
company.bundle_idintegerCompany level: 1 partner, 3 account.
company.company_optionobjectcompany_id, who_will_pay (string) and enable_generic_alert (boolean).
theme_optionsstring or nullTheme settings as a JSON-encoded string. null when none are set.
white_labelobjectlogo, white_url, favicon, title, status, login_logo, company_id and email_templates_enabled (boolean). With no branding set anywhere up the account tree, the defaults are logo, favicon and login_logo empty, status inactive, company_id null, and title the platform name.

Response payload

An Account token, with no branding set:

{
  "data": {
    "status": "success",
    "token": "<access-token>",
    "user": {
      "id": 3011,
      "username": "Jane",
      "email": "[email protected]",
      "email_verified_at": "2026-09-23T10:43:43.000000Z",
      "phone_number": null,
      "first_name": "Jane",
      "last_name": "Smith",
      "title": "Manager",
      "role": "Owner",
      "total_location": 2,
      "show_review_feed_widget": 0
    },
    "company": {
      "id": 5994,
      "name": "Acme Coffee",
      "bundle_id": 3,
      "company_option": {
        "company_id": 5994,
        "who_will_pay": "partner",
        "enable_generic_alert": false
      }
    },
    "theme_options": null,
    "white_label": {
      "logo": "",
      "white_url": "https://production.shoutaboutus.com",
      "favicon": "",
      "title": "Review Management",
      "status": "inactive",
      "login_logo": "",
      "company_id": null,
      "email_templates_enabled": true
    }
  }
}

Examples

Success payload

A Partner token, with branding set:

{
  "data": {
    "status": "success",
    "token": "<access-token>",
    "user": {
      "id": 3,
      "username": "John",
      "email": "[email protected]",
      "email_verified_at": "2026-06-11T10:34:52.000000Z",
      "phone_number": "+15555550100",
      "first_name": "John",
      "last_name": "Doe",
      "title": "Mr.",
      "role": "Owner",
      "total_location": 3,
      "show_review_feed_widget": 0
    },
    "company": {
      "id": 5,
      "name": "Acme Partner",
      "bundle_id": 1,
      "company_option": {
        "company_id": 5,
        "who_will_pay": "partner",
        "enable_generic_alert": false
      }
    },
    "theme_options": "{\"mode\":\"system\",\"skin\":\"default\",\"primaryColor\":\"#f1874c\"}",
    "white_label": {
      "logo": "https://d2ny6zb7otrnhl.cloudfront.net/white-label/logo/example.png",
      "white_url": "https://production.shoutaboutus.com",
      "favicon": "https://d2ny6zb7otrnhl.cloudfront.net/white-label/favicon/example.png",
      "title": "Acme",
      "status": "active",
      "login_logo": "",
      "company_id": 5,
      "email_templates_enabled": true
    }
  }
}

Signup not finished:

{
  "data": {
    "status": "signup_pending",
    "message": "Please complete signup process."
  }
}

Error payload

400 Inactive account

{
  "message": "Bad Request",
  "status": "error",
  "errors": {
    "status": "error",
    "message": "Your account is inactive. Please contact support for assistance.",
    "path": "#"
  }
}

403 Not a partner or account token

{
  "message": "Forbidden",
  "status": "error",
  "errors": "Response scribe brand/location user can access this portal."
}

500 Server error

{
  "message": "Internal Server Error",
  "status": "error",
  "errors": "Something went wrong! please try again."
}
StatusMeaning
200The session, or signup_pending.
400The user's account is inactive.
401The token is missing, expired or invalid.
403The token isn't a Partner or Account token.
500Unexpected server error.

Example request

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

Did this page help you?