Reputation API

REST API for aggregating customer feedback, managing reviews and listings, running surveys, and accessing reputation metrics and insights across locations.

OpenAPI Specification

reputation-api-openapi.yml Raw ↑
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&amp;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\
        \ &gt;= 200 and response.status_code &lt; 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&amp;primaryProfile=true&amp;sort=ASC&amp;offset=0&amp;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