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
- The bearer token to check, for example the one from JumpCloud: exchange the code.
Base URL
| Environment | URL |
|---|---|
| Production | https://production-api.shoutaboutus.com |
| Development | https://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.
| Field | Type | Description |
|---|---|---|
status | string | success, or signup_pending when the user hasn't finished signing up (then only message follows). |
message | string | signup_pending only: what the user still has to do. |
token | string | The bearer token you sent, echoed back. |
user.id | integer | User id. |
user.username | string | Username. |
user.email | string | Email address. |
user.email_verified_at | string or null | When the email address was verified. |
user.phone_number | string or null | Phone number. |
user.first_name | string or null | First name. |
user.last_name | string or null | Last name. |
user.title | string or null | Job title. |
user.role | string | One of Owner, Admin User, Basic User, Brand Assigned, Location Assigned, User. |
user.total_location | integer | Number of locations the user can reach. |
user.show_review_feed_widget | integer | Always 0. |
company.id | integer | The user's company id. |
company.name | string | Company name. |
company.bundle_id | integer | Company level: 1 partner, 3 account. |
company.company_option | object | company_id, who_will_pay (string) and enable_generic_alert (boolean). |
theme_options | string or null | Theme settings as a JSON-encoded string. null when none are set. |
white_label | object | logo, 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."
}| Status | Meaning |
|---|---|
200 | The session, or signup_pending. |
400 | The user's account is inactive. |
401 | The token is missing, expired or invalid. |
403 | The token isn't a Partner or Account token. |
500 | Unexpected 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'Updated 17 days ago
Did this page help you?
