SSO login (verify token, return session)

Overview

SSO callback: verifies the presented bearer token and returns the login session payload (user, company, theme, white-label). Used by the SPA after an SSO handoff. Returns 400 for an inactive account, and a 200 signup_pending status when email is unverified or signup is incomplete.

Prerequisites

  • A bearer token in the Authorization header.

Base URL

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

Endpoint

GET /api/v1/sso/rs-login

Authentication

  • Requires a bearer token in the Authorization: Bearer <bearer-token> header.

  • bearer token. Role: partner (bundle_id=1) or account (bundle_id=3) user (plus one legacy admin). Any other role gets 403.

Rate limit

  • No rate limit.

How it works

  • 200 with status/token/user/company/theme_options/white_label. 400 if the account is inactive. 403 if the user is neither a partner/account user nor the legacy admin.

Response

200 OK · 200

{
  "data": {
    "status": "success",
    "token": "<access-token>",
    "user": {
      "id": 3,
      "username": "[email protected]",
      "email": "[email protected]",
      "email_verified_at": "2026-06-11T10:34:52.000000Z",
      "phone_number": "123-456-7890",
      "first_name": "John",
      "last_name": "Doe",
      "title": "Mr.",
      "role": "Owner",
      "total_location": 3,
      "show_review_feed_widget": 0
    },
    "company": {
      "id": 5,
      "name": "Yelp 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": "hipages",
      "status": "active",
      "login_logo": "",
      "company_id": 5,
      "email_templates_enabled": true
    }
  }
}

200 Signup pending · 200

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

400 Inactive account · 400

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

403 Forbidden (role not allowed) · 403

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

Errors

StatusMeaning
400Inactive account
401The bearer token is missing, expired or invalid
403Forbidden (role not allowed)
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?