openapi: 3.0.0
info:
title: Reputation API
description: REST API for aggregating customer feedback, managing reviews and listings,
running surveys, and accessing reputation metrics and insights across locations.
version: v3
contact:
name: Reputation Support
url: https://support.reputation.com/
servers:
- url: https://api.reputation.com
description: US Production
- url: https://api-eu.reputation.com
description: EU Production
security:
- ApiKeyAuth: []
components:
securitySchemes:
ApiKeyAuth:
type: apiKey
in: header
name: X-API-KEY
description: API key for authentication. For agency accounts, also include X-TENANT-ID
header.
parameters:
offset:
name: offset
in: query
description: Offset for pagination
schema:
type: integer
default: 0
limit:
name: limit
in: query
description: 'Maximum number of objects to return (default: 20, max: 2000)'
schema:
type: integer
default: 20
maximum: 2000
schemas:
PaginationMeta:
type: object
properties:
offset:
type: integer
limit:
type: integer
next:
type: string
format: uri
previous:
type: string
format: uri
Error:
type: object
properties:
errors:
type: array
items:
type: object
properties:
field:
type: string
code:
type: string
message:
type: string
tags:
- name: Asset Library
description: Manage image assets
- name: Authorize
description: Authorization management
- name: Categories
description: Business listing categories
- name: Credentials
description: OAuth credential management
- name: Listing Audits
description: Audit business listings across sources
- name: Locations
description: Manage business locations
- name: Metrics
description: Reputation metrics and insights
- name: Reports
description: Report generation and export
- name: Requests
description: Review request management
- name: Reviews
description: Review management and responses
- name: Rich Content
description: FAQs, menus, and product content
- name: Summary
description: Reputation summary data
- name: Surveys
description: Survey management and results
- name: Tenants
description: Tenant/account management
- name: Tickets
description: Customer service ticket management
- name: Users
description: User management
paths:
/v3/asset-library/upload/image:
post:
summary: Upload Image Files
operationId: post_asset_library_upload_image
tags:
- Asset Library
security:
- ApiKeyAuth: []
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
'400':
description: Bad request - invalid or missing parameters
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Unauthorized - invalid API key
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden - insufficient permissions
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'429':
description: Too many requests - rate limit exceeded
'500':
description: Internal server error
description: 'Select any number of files from your computer. Attach tags to
each image and send them as formData in the API request. The images will display
in your Asset Library (see below).
You must request to have the asset library enabled. Please contact your CSM
for assistance.
Note: This endpoint only accepts .jpg, .jpeg, or .png files.
Sample Requests
Python
import requests
file_1 = (''ImageFile_1.png'', open(''path_to_ImageFile_1.png'', ''rb''))
file_2 = (''ImageFile_2.png'', open(''path_to_ImageFile_2.png'''
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
properties:
images:
type: string
format: binary
description: '<p>(Required) Choose one or multiple image files from
your computer. There''s no limit to how many you can upload.</p>
'
tags:
type: string
description: '<p>Provide a valid JSON string with image file names
as keys and their respective tags as values. For example: {"image1.jpg":
["tag1", "tag2"], "image2.jpg": ["tag2", "tag3"]}.</p>
'
/v3/asset-library/upload/image/url:
post:
summary: Upload Image Using Public Urls
operationId: post_asset_library_upload_image_url
tags:
- Asset Library
security:
- ApiKeyAuth: []
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
'400':
description: Bad request - invalid or missing parameters
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Unauthorized - invalid API key
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden - insufficient permissions
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'429':
description: Too many requests - rate limit exceeded
'500':
description: Internal server error
description: "Upload images to your asset library using a public URL rather\
\ than a direct file upload. The images will display in your Asset Library\
\ (see below).\n\n\nYou must request to have the asset library enabled. Please\
\ contact your CSM for assistance.\nNote: This endpoint only accepts .jpg,\
\ .jpeg, or .png files.\nSample Requests\n\nPython\nimport requests\nimport\
\ json\ndata = {\n \"images\": [\n {\n \"url\": \"https://www.testImageUrl.com/image_1.jpg\"\
,\n \"tags\": [\"test_tag_1\", \"test_tag_2\""
requestBody:
required: true
content:
application/json:
schema:
type: object
example:
images:
- url: string
tags:
- string
/v3/authorize:
post:
summary: Authorize
operationId: post_authorize
tags:
- Authorize
security:
- ApiKeyAuth: []
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
'400':
description: Bad request - invalid or missing parameters
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Unauthorized - invalid API key
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden - insufficient permissions
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'429':
description: Too many requests - rate limit exceeded
'500':
description: Internal server error
description: "Authorize a user on your platform, either granting them access\
\ or updating their permissions based on provided personal and role-specific\
\ details.\nSample Requests\nPython\nimport requests\nimport json\nurl = 'https://api.reputation.com/v3/authorize'\n\
headers = {\n 'x-api-key': 'Your API key',\n 'Content-Type': 'application/json;charset=UTF-8'\n\
}\ndata = {\n \"userId\": \"346345\",\n \"locationCodes\": \"145, 742,\
\ 520\",\n \"firstName\": \"Jeff\",\n \"lastName\": \"Goodman\",\n \
\ \"email\": \"[email protected]\""
requestBody:
required: true
content:
application/json:
schema:
type: object
example:
userId: string
locationCodes: string array
firstName: string
lastName: string
email: string
role: string
timezone: string
/v3/categories:
get:
summary: Get Categories
operationId: get_categories
tags:
- Categories
security:
- ApiKeyAuth: []
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
'400':
description: Bad request - invalid or missing parameters
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Unauthorized - invalid API key
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden - insufficient permissions
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'429':
description: Too many requests - rate limit exceeded
'500':
description: Internal server error
description: "Provides the Business Listings categories for each profile, detailing\
\ each category's associated industries and identifiers.\nSample Requests\n\
Python\nimport requests\nurl = 'https://api.reputation.com/v3/categories?offset=0&limit=3'\n\
headers = {\n 'x-api-key': 'Your API Key',\n 'Content-Type': 'application/json;charset=UTF-8'\n\
}\nresponse = requests.get(url, headers=headers)\nif response.status_code\
\ >= 200 and response.status_code < 400:\n print(response.text)\n\
else:\n print(\"Error: \","
requestBody:
required: true
content:
application/json:
schema:
type: object
/v3/credentials/oauth:
get:
summary: Get Oauth Status
operationId: get_credentials_oauth
tags:
- Credentials
security:
- ApiKeyAuth: []
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
'400':
description: Bad request - invalid or missing parameters
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Unauthorized - invalid API key
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden - insufficient permissions
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'429':
description: Too many requests - rate limit exceeded
'500':
description: Internal server error
description: "This endpoint retrieves the OAuth credentials for various locations,\
\ detailing the validity and the last refresh date of connections to different\
\ online sources like Facebook, Instagram, LinkedIn and more.\nSample Requests\n\
Python\nimport requests\nurl = 'https://api.reputation.com/v3/credentials/oauth'\n\
headers = {\n 'Accept': 'application/json',\n 'x-api-key': 'Your API\
\ key'\n}\nresponse = requests.get(url, headers=headers)\nif response.status_code\
\ == 200:\n print(response.json())\nelse:\n prin"
/v3/listing-audits:
get:
summary: Get Listing Audits
operationId: get_listing_audits
tags:
- Listing Audits
security:
- ApiKeyAuth: []
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
'400':
description: Bad request - invalid or missing parameters
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Unauthorized - invalid API key
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden - insufficient permissions
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'429':
description: Too many requests - rate limit exceeded
'500':
description: Internal server error
description: 'This endpoint facilitates the retrieval of listing audits, allowing
you to examine and assess the integrity of listings over specified time frames
or for specific locations and sources with the optional query parameters.
Sample Requests
JavaScript XHR Request
var xhr = new XMLHttpRequest();
xhr.open(''GET'', ''https://api.reputation.com/v3/listing-audits?limit=2'',
true);
xhr.setRequestHeader(''Accept'', ''application/json'');
xhr.setRequestHeader(''x-api-key'', ''Your API key'');
xhr.onreadystatechange = f'
parameters:
- &id001
name: offset
in: query
description: Offset for pagination
schema:
type: integer
default: 0
- &id002
name: limit
in: query
description: Maximum number of objects to return
schema:
type: integer
default: 20
maximum: 2000
/v3/locations:
get:
summary: Get Locations
operationId: get_locations
tags:
- Locations
security:
- ApiKeyAuth: []
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
'400':
description: Bad request - invalid or missing parameters
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Unauthorized - invalid API key
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden - insufficient permissions
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'429':
description: Too many requests - rate limit exceeded
'500':
description: Internal server error
description: 'Retrieves detailed location profiles, providing comprehensive
data that extends beyond just basic location attributes within the Business
Listing Solution. You can use this endpoint to access an array of information
about specific profiles.
Note: The Get Locations and Get Location endpoints are designed to retrieve
only cleansed profiles. If you attempt to fetch an unmanaged profile using
either endpoint, the response will result in a null value.
Sample
JavaScript XHR Request
var xhr = new XMLHt'
parameters:
- *id001
- *id002
post:
summary: Save Location
operationId: post_locations
tags:
- Locations
security:
- ApiKeyAuth: []
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
'400':
description: Bad request - invalid or missing parameters
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Unauthorized - invalid API key
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden - insufficient permissions
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'429':
description: Too many requests - rate limit exceeded
'500':
description: Internal server error
description: 'Let''s you submit a detailed location profile, providing comprehensive
data that extends beyond just basic location attributes within the Business
Listing Solution. You can also use this endpoint to add our update information
about specific profile.
Please note: Incremental changes are not supported. All profile data must
be included in each request to prevent existing data from being overwritten
or removed.
Sample
JavaScript XHR Request
var xhr = new XMLHttpRequest();
xhr.open(''POST'', ''https://a'
requestBody:
required: true
content:
application/json:
schema:
type: object
example:
location:
optedOut: boolean
internalName: string
industryID: string
externalName: string
places:
- officeName: string
address:
streetAddress1: string
locality: string
region: string
postalCode: string
country: string
phones:
- number: string
primary: boolean
country: string
phoneType: string
primary: boolean
description: string
categories:
- category:
label: string
primary: boolean
utm: boolean
attributes:
- attributeId: string
boolValue: boolean
- attributeId: string
values:
- boolValue: boolean
- boolValue: boolean
type: string
createdDate: string
updatedDate: string
/v3/locations-search:
get:
summary: Search Locations
operationId: get_locations_search
tags:
- Locations
security:
- ApiKeyAuth: []
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
'400':
description: Bad request - invalid or missing parameters
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Unauthorized - invalid API key
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden - insufficient permissions
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'429':
description: Too many requests - rate limit exceeded
'500':
description: Internal server error
description: 'Facilitates the searching of profiles based on various parameters
like name, location, type, and more. It''s designed to offer a comprehensive
search capability for you to filter and retrieve specific profiles from the
vast Business Listing Solution database.
Sample
JavaScript XHR Request
var xhr = new XMLHttpRequest();
xhr.open(''GET'', ''https://api.reputation.com/v3/locations-search?type=Person&primaryProfile=true&sort=ASC&offset=0&limit=20'',
true);
xhr.setRequestHeader(''x-api-key'
parameters:
- *id001
- *id002
post:
summary: Search Locations
operationId: post_locations_search
tags:
- Locations
security:
- ApiKeyAuth: []
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
'400':
description: Bad request - invalid or missing parameters
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Unauthorized - invalid API key
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden - insufficient permissions
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'429':
description: Too many requests - rate limit exceeded
'500':
description: Internal server error
description: 'Facilitates detailed searches for location profiles based on a
range of specific parameters provided in the request body. It serves as an
alternative to the GET version of the endpoint, providing a means to submit
search parameters in the body of the request.
Sample
JavaScript XHR Request
var xhr = new XMLHttpRequest();
var url = "https://api.reputation.com/v3/locations-search";
xhr.open("POST", url, true);
xhr.setRequestHeader("Content-Type", "application/json");
xhr.setRequestHeader("x-api-key'
requestBody:
required: true
content:
application/json:
schema:
type: object
example:
firstName: string
lastName: string
placeID: string
parentID: string
linkedProfileID: string
officeName: string
locality: string
region: string
postalCode: string
gender: string
phoneType: string
websiteType: string
type: string
profileDefinition: string
categoryID:
- string
categoryName:
- string
tag:
- string
utm: boolean
insuranceID:
- string
insuranceName:
- string
language:
- string
acceptingNewPatients: string
specialtyID:
- string
primaryProfile: string
lat: 0
lng: 0
radius: 0
sorts:
- fieldName: string
sortOrder: string
offset: integer
limit: integer
query: string
updatedSince: string
/v3/locations-faceted-search:
get:
summary: Search Faceted Locations
operationId: get_locations_faceted_search
tags:
- Locations
security:
- ApiKeyAuth: []
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
'400':
description: Bad request - invalid or missing parameters
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Unauthorized - invalid API key
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden - insufficient permissions
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'429':
description: Too many requests - rate limit exceeded
'500':
description: Internal server error
description: This endpoint facilitates a faceted profile search of the platform,
providing aggregated counts of profiles based on specified criteria. Rather
than returning individual profile data, this endpoint groups profiles based
on a selected attribute (such as phoneType, gender, etc.) and returns a count
of profiles for each distinct value within that attribute. It's an efficient
way to understand the distribution of profiles based on varying characteristics
without retrieving the details of each profil
parameters:
- *id001
- *id002
/v3/locations/{locationID}:
get:
summary: Get Location
operationId: get_locations_locationID
tags:
- Locations
security:
- ApiKeyAuth: []
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
'400':
description: Bad request - invalid or missing parameters
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Unauthorized - invalid API key
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden - insufficient permissions
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'429':
description: Too many requests - rate limit exceeded
'500':
description: Internal server error
description: 'This endpoint retrieves detailed information about a specific
location profile on the platform based on the provided locationID.
The response returns detailed attributes of the location profile, including
its internal and external names, industry type, state, associated places like
office addresses, contact information, and more.
Note: The Get Locations and Get Location endpoints are designed to retrieve
only cleansed profiles. If you attempt to fetch an unmanaged profile using
either endpoint, '
parameters:
- name: locationID
in: path
required: true
schema:
type: string
description: The locationID identifier
delete:
summary: Delete Location
operationId: delete_locations_locationID
tags:
- Locations
security:
- ApiKeyAuth: []
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
'400':
description: Bad request - invalid or missing parameters
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Unauthorized - invalid API key
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden - insufficient permissions
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'429':
description: Too many requests - rate limit exceeded
'500':
description: Internal server error
description: "This endpoint lets you delete a specific location profile from\
\ the system, identified by its locationID. If you wish to only mark the location\
\ as inactive rather than fully deleting it, you can utilize the optional\
\ preserveLocation query parameter.\nSample\nJavaScript XHR Request\nvar xhr\
\ = new XMLHttpRequest();\nxhr.open('DELETE', 'https://api.reputation.com/v3/locations/BP?preserveLocation=true',\
\ true);\nxhr.setRequestHeader('x-api-key', 'Your API key');\nxhr.onreadystatechange\
\ = function() {\n if"
parameters:
- name: locationID
in: path
required: true
schema:
type: string
description: The locationID identifier
/v3/locations/{locationID}/opt-out:
put:
summary: Opt Out Of Audit
operationId: put_locations_locationID_opt_out
tags:
- Locations
security:
- ApiKeyAuth: []
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
'400':
description: Bad request - invalid or missing parameters
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Unauthorized - invalid API key
content:
application/json:
schema:
# --- truncated at 32 KB (138 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/reputation/refs/heads/main/openapi/reputation-api-openapi.yml