Synup Locations API

The Locations API from Synup — 25 operation(s) for locations.

Operations 26

POST /locations/activate Activate archived locations #
POST /locations/archive Archive multiple locations #
GET /locations/advanced-search-filters Available advanced filter values #
GET /locations/search-filters Available search filter values #
POST /locations/cancel_archive Cancel scheduled location archival #
GET /locations/photos/requests/{requestId} Check Bulk Photo Upload Status #
POST /locations Create a new business location #
GET /locations List all locations #
POST /locations/photos/remove Delete Location Photos #
GET /locations/download Download locations #
GET /locations/filter Filter locations #
GET /countries Get a list of supported countries and their states
GET /locations-by-store-codes Get locations by store codes #
GET /locations/{locationId}/photos Get Photos by Location IDs
GET /plan-sites Get Site Details for Your Plan
GET /sub-categories Get SubCategories and AdditionalCategories
GET /locations/google-verification-stats Google verification location stats #
GET /subscriptions List Active Subscriptions
GET /locations-by-ids List particular locations #
GET /locations/add-on-count Location add-on count #
GET /locations/{locationId}/indexing-rate Location Indexing Rate
GET /locations/package-count Location package count #
GET /locations/search Search locations #
POST /locations/photos/star Star/Unstar Location Photos #
POST /locations/update Update business location #
POST /locations/photos Upload Photos to a Location #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/synup-locations-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

synup-locations-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Synup Locations API
  version: '4'
  description: 'REST API v4 for the Synup local marketing platform: business locations, listing syndication to 80+ directories, review/interaction aggregation and response, review campaigns, local rank tracking and grid-rank heatmaps, local and social posts, AI post ideas, menus, connected accounts, users and profile analytics.


    ASSEMBLED BY API EVANGELIST from the per-endpoint OpenAPI documents Synup publishes on its own documentation host (developer.synup.com, Apidog project 797384). Every operation, parameter, response, example and schema below is verbatim provider content; only the merge into a single document is ours. Source index: https://developer.synup.com/llms.txt'
  contact:
    name: Synup Developer Documentation
    url: https://developer.synup.com/
  x-assembled-by: api-evangelist enrichment pipeline (local-v1)
  x-assembled-from: 506 per-endpoint OpenAPI fragments published at https://developer.synup.com/<slug>.md
  x-assembled-date: '2026-08-13'
servers:
- url: https://api.synup.com/api/v4
  description: Base ENV (as published in every Synup doc fragment). Tenant workspace domains (https://<workspace>.synup.com/api/v4) also serve the same API.
tags:
- name: Locations
paths:
  /locations/activate:
    post:
      summary: Activate archived locations
      deprecated: false
      description: "<span style=\"font-size: 14px;\">\nUse this API to reactivate one or more previously archived locations, allowing them to be updated and managed again.\n    \n\n:::info[]\nImportant Notes:\n- <span style=\"font-size: 14px;\">Activating a location restores its functionality, enabling updates and modifications.</span>\n- <span style=\"font-size: 14px;\">Only archived locations can be activated; active locations do not require this action.</span>\n- <span style=\"font-size: 14px;\">Reactivating a location may resume billing based on your subscription plan.</span>\n:::\n</span>"
      operationId: activateLocations
      tags:
      - Locations
      parameters:
      - name: Authorization
        in: header
        description: API key for authentication
        required: true
        example: API T9V35W3xxxxxxxxxxx
        schema:
          type: string
      - name: Content-Type
        in: header
        description: ''
        required: true
        example: application/json
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                input:
                  type: object
                  required:
                  - locationIds
                  properties:
                    locationIds:
                      type: array
                      description: Array of location Node IDs to activate
                      items:
                        type: string
                  x-apidog-orders:
                  - locationIds
              x-apidog-orders:
              - input
            example:
              input:
                locationIds:
                - TG9jYXRpb246MTE3MTM4OQ==
      responses:
        '200':
          description: Locations activated successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      activateLocations:
                        type: object
                        properties:
                          bulkEditTaskId:
                            type:
                            - string
                            - 'null'
                            description: ID of bulk edit task if multiple locations are being activated
                          clientMutationId:
                            type:
                            - string
                            - 'null'
                          errors:
                            type:
                            - array
                            - 'null'
                            items:
                              type: string
                          result:
                            type: array
                            items:
                              type: object
                              properties:
                                errors:
                                  type:
                                  - array
                                  - 'null'
                                  items:
                                    type: string
                                locationId:
                                  type: string
                                  description: Node ID of the location
                                status:
                                  type: string
                                  enum:
                                  - ACTIVE
                                  description: Final status of the activation operation
                                success:
                                  type: boolean
                                  description: Whether the operation was successful
                              x-apidog-orders:
                              - errors
                              - locationId
                              - status
                              - success
                          success:
                            type:
                            - boolean
                            - 'null'
                        x-apidog-orders:
                        - bulkEditTaskId
                        - clientMutationId
                        - errors
                        - result
                        - success
                    x-apidog-orders:
                    - activateLocations
                x-apidog-orders:
                - data
              example:
                data:
                  activateLocations:
                    bulkEditTaskId: null
                    clientMutationId: null
                    errors: null
                    result:
                    - errors: null
                      locationId: TG9jYXRpb246MTE3MTM4OQ==
                      status: ACTIVE
                      success: true
                    success: null
          headers: {}
          x-apidog-name: OK
        '400':
          description: Bad request - invalid input
          content:
            application/json:
              schema:
                type: object
                properties: {}
                x-apidog-orders: []
          headers: {}
          x-apidog-name: Bad Request
        '401':
          description: Unauthorized - invalid or missing API key
          content:
            application/json:
              schema:
                type: object
                properties: {}
                x-apidog-orders: []
          headers: {}
          x-apidog-name: Unauthorized
        '403':
          description: Forbidden - insufficient permissions
          content:
            application/json:
              schema:
                type: object
                properties:
                  errors:
                    type: array
                    items:
                      type: string
                      examples:
                      - Insufficient permissions to activate locations
                x-apidog-orders:
                - errors
          headers: {}
          x-apidog-name: Forbidden
      security: []
      x-apidog-folder: Locations
      x-apidog-status: released
      x-run-in-apidog: https://app.apidog.com/web/project/797384/apis/api-13659836-run
  /locations/archive:
    post:
      summary: Archive multiple locations
      deprecated: false
      description: "<span style=\"font-size: 14px;\">\n\nThis API allows you to archive One or More Business Locations. \n\n:::info[]\n- <span style=\"font-size: 14px;\">Archiving a location does not delete it from your account.</span>\n- <span style=\"font-size: 14px;\">Archived locations cannot be updated until reactivated.</span>\n- <span style=\"font-size: 14px;\">The location will be scheduled for archival until the end of the billing cycle.</span>\n- <span style=\"font-size: 14px;\">Once the invoice for the next month is generated, the location will be archived.</span>\n- <span style=\"font-size: 14px;\">Payments for archived locations stop after the current billing cycle is completed.</span>\n\n:::\n\n</span>"
      operationId: archiveLocations
      tags:
      - Locations
      parameters:
      - name: Authorization
        in: header
        description: API key for authentication
        required: true
        example: API T9V35W3xxxxxxxxxxx
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                input:
                  type: object
                  required:
                  - locationIds
                  properties:
                    locationIds:
                      type: array
                      description: Array of location Node IDs to archive
                      items:
                        type: string
                  x-apidog-orders:
                  - locationIds
              x-apidog-orders:
              - input
            example:
              input:
                locationIds:
                - TG9jYXRpb246MTE4MzMzMA==
                - TG9jYXRpb246MTE3MTM4OQ==
      responses:
        '200':
          description: Locations archived successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      archiveLocations:
                        type: object
                        properties:
                          bulkEditTaskId:
                            type:
                            - string
                            - 'null'
                          clientMutationId:
                            type:
                            - string
                            - 'null'
                          errors:
                            type:
                            - array
                            - 'null'
                            items:
                              type: string
                          result:
                            type: array
                            items:
                              type: object
                              properties:
                                errors:
                                  type:
                                  - array
                                  - 'null'
                                  items:
                                    type: string
                                locationId:
                                  type: string
                                  description: Node ID of the location
                                status:
                                  type: string
                                  enum:
                                  - ARCHIVED
                                  - ARCHIVE_SCHEDULED
                                  description: Final status of the archive operation
                                success:
                                  type: boolean
                                  description: Whether the operation was successful
                              x-apidog-orders:
                              - errors
                              - locationId
                              - status
                              - success
                          success:
                            type:
                            - boolean
                            - 'null'
                        x-apidog-orders:
                        - bulkEditTaskId
                        - clientMutationId
                        - errors
                        - result
                        - success
                    x-apidog-orders:
                    - archiveLocations
                x-apidog-orders:
                - data
              example:
                data:
                  archiveLocations:
                    bulkEditTaskId: null
                    clientMutationId: null
                    errors: null
                    result:
                    - errors: null
                      locationId: TG9jYXRpb246MTE3MTM4OQ==
                      status: ARCHIVE_SCHEDULED
                      success: true
                    - errors: null
                      locationId: TG9jYXRpb246MTE4MzMzMA==
                      status: ARCHIVE_SCHEDULED
                      success: true
                    success: null
          headers: {}
          x-apidog-name: OK
        '400':
          description: Bad request - invalid input
          content:
            application/json:
              schema:
                type: object
                properties: {}
                x-apidog-orders: []
          headers: {}
          x-apidog-name: Bad Request
        '401':
          description: Unauthorized - invalid or missing API key
          content:
            application/json:
              schema:
                type: object
                properties: {}
                x-apidog-orders: []
          headers: {}
          x-apidog-name: Unauthorized
        '403':
          description: Forbidden - insufficient permissions
          content:
            application/json:
              schema:
                type: object
                properties: {}
                x-apidog-orders: []
          headers: {}
          x-apidog-name: Forbidden
      security: []
      x-apidog-folder: Locations
      x-apidog-status: released
      x-run-in-apidog: https://app.apidog.com/web/project/797384/apis/api-13659698-run
  /locations/advanced-search-filters:
    get:
      summary: Available advanced filter values
      deprecated: false
      description: '<br>

        <span style="font-size: 14px;">


        Returns the distinct values available for the advanced location filters across the account''s locations: countries, states, cities, postal (zip) codes, and custom attribute names. Use these values to populate the advanced filter controls before calling Filter locations.

        </span>'
      operationId: advancedSearchFilters
      tags:
      - Locations
      parameters:
      - name: Synup-Version
        in: header
        description: API version date (YYYY-MM-DD).
        required: true
        example: '2026-04-17'
        schema:
          type: string
      - name: Authorization
        in: header
        description: API key for authentication.
        required: true
        example: API T9V35W3xxxxxxxxxxx
        schema:
          type: string
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      advancedSearchFilters:
                        $ref: '#/components/schemas/LocationAdvancedSearchFilterType'
                    x-apidog-orders:
                    - advancedSearchFilters
                    x-apidog-ignore-properties: []
                x-apidog-orders:
                - data
                x-apidog-ignore-properties: []
          headers: {}
          x-apidog-name: ''
        '401':
          description: Unauthorized - Invalid or missing API key
          content:
            application/json:
              schema:
                type: object
                properties: {}
                x-apidog-orders: []
                x-apidog-ignore-properties: []
          headers: {}
          x-apidog-name: ''
      security: []
      x-apidog-folder: Locations
      x-apidog-status: released
      x-run-in-apidog: https://app.apidog.com/web/project/797384/apis/api-40051636-run
  /locations/search-filters:
    get:
      summary: Available search filter values
      deprecated: false
      description: '<br>

        <span style="font-size: 14px;">


        Returns the distinct values available for the standard location filters across the account''s accessible locations: tags, folders, categories, additional categories, and Google Business Profile (GBP) categories (primary and additional). Use these values to populate the filter controls before calling Filter locations.

        </span>'
      operationId: searchFilters
      tags:
      - Locations
      parameters:
      - name: Synup-Version
        in: header
        description: API version date (YYYY-MM-DD).
        required: true
        example: '2026-04-17'
        schema:
          type: string
      - name: Authorization
        in: header
        description: API key for authentication.
        required: true
        example: API T9V35W3xxxxxxxxxxx
        schema:
          type: string
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      searchFilters:
                        $ref: '#/components/schemas/LocationSearchFilterType'
                    x-apidog-orders:
                    - searchFilters
                    x-apidog-ignore-properties: []
                x-apidog-orders:
                - data
                x-apidog-ignore-properties: []
          headers: {}
          x-apidog-name: ''
        '401':
          description: Unauthorized - Invalid or missing API key
          content:
            application/json:
              schema:
                type: object
                properties: {}
                x-apidog-orders: []
                x-apidog-ignore-properties: []
          headers: {}
          x-apidog-name: ''
      security: []
      x-apidog-folder: Locations
      x-apidog-status: released
      x-run-in-apidog: https://app.apidog.com/web/project/797384/apis/api-40051651-run
  /locations/cancel_archive:
    post:
      summary: Cancel scheduled location archival
      deprecated: false
      description: "<span style=\"font-size: 14px;\">\nUse this API to cancel the archival of locations that are scheduled for archival but have not yet been processed.\n    \n:::info[]\n    \n<span style=\"font-size: 14px;\">\n**Important Notes:**\n- <span style=\"font-size: 14px;\">This endpoint can only cancel archival for locations that are in **ARCHIVE_SCHEDULED** status</span>\n- <span style=\"font-size: 14px;\">Once canceled, the location will return to **ACTIVE** status and can be updated as usual.</span>\n- <span style=\"font-size: 14px;\">Billing for the location will continue as per the standard cycle.</span>\n </span>\n   \n:::\n    </span>"
      operationId: cancelLocationsArchive
      tags:
      - Locations
      parameters:
      - name: Authorization
        in: header
        description: API key for authentication
        required: true
        example: API T9V35W3xxxxxxxxxxx
        schema:
          type: string
      - name: Content-Type
        in: header
        description: ''
        required: true
        example: application/json
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                input:
                  type: object
                  required:
                  - locationIds
                  properties:
                    locationIds:
                      type: array
                      description: Array of location Node IDs to cancel archival for
                      items:
                        type: string
                  x-apidog-orders:
                  - locationIds
              x-apidog-orders:
              - input
            example:
              input:
                locationIds:
                - TG9jYXRpb246MTE4MzMzMA==
      responses:
        '200':
          description: Location archival cancellation successful
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      cancelLocationsArchive:
                        type: object
                        properties:
                          bulkEditTaskId:
                            type:
                            - string
                            - 'null'
                            description: ID of bulk edit task if multiple locations are involved
                          clientMutationId:
                            type:
                            - string
                            - 'null'
                          errors:
                            type:
                            - array
                            - 'null'
                            items:
                              type: string
                          result:
                            type: array
                            items:
                              type: object
                              properties:
                                errors:
                                  type:
                                  - array
                                  - 'null'
                                  items:
                                    type: string
                                locationId:
                                  type: string
                                  description: Node ID of the location
                                status:
                                  type: string
                                  enum:
                                  - ACTIVE
                                  description: Status after cancellation
                                success:
                                  type: boolean
                                  description: Whether the operation was successful
                              x-apidog-orders:
                              - errors
                              - locationId
                              - status
                              - success
                          success:
                            type:
                            - boolean
                            - 'null'
                        x-apidog-orders:
                        - bulkEditTaskId
                        - clientMutationId
                        - errors
                        - result
                        - success
                    x-apidog-orders:
                    - cancelLocationsArchive
                x-apidog-orders:
                - data
              example:
                data:
                  cancelLocationsArchive:
                    bulkEditTaskId: null
                    clientMutationId: null
                    errors: null
                    result:
                    - errors: null
                      locationId: TG9jYXRpb246MTE4MzMzMA==
                      status: ACTIVE
                      success: true
                    success: null
          headers: {}
          x-apidog-name: OK
        '400':
          description: Bad request - invalid input
          content:
            application/json:
              schema:
                type: object
                properties: {}
                x-apidog-orders: []
          headers: {}
          x-apidog-name: Bad Request
        '401':
          description: Unauthorized - invalid or missing API key
          content:
            application/json:
              schema:
                type: object
                properties: {}
                x-apidog-orders: []
          headers: {}
          x-apidog-name: Unauthorized
        '403':
          description: Forbidden - insufficient permissions
          content:
            application/json:
              schema:
                type: object
                properties: {}
                x-apidog-orders: []
          headers: {}
          x-apidog-name: Forbidden
        '404':
          description: Location not found or not in ARCHIVE_SCHEDULED status
          content:
            application/json:
              schema:
                type: object
                properties: {}
                x-apidog-orders: []
          headers: {}
          x-apidog-name: Record Not Found
      security: []
      x-apidog-folder: Locations
      x-apidog-status: released
      x-run-in-apidog: https://app.apidog.com/web/project/797384/apis/api-13659850-run
  /locations/photos/requests/{requestId}:
    get:
      summary: Check Bulk Photo Upload Status
      deprecated: false
      description: "<span style=\"font-size: 14px;\">\n\nThis API monitors the progress of uploading multiple photos to a location, which is particularly useful when the upload involves more than 30 photos.\n    \nRetrieve the current status of a bulk image upload request for a location. Use the requestId returned in the Upload Photos API to fetch the status.\n    \nFor more details, refer to [Manage photos for your location](https://developer.synup.com/doc-833258.md). \n</span>"
      operationId: checkBulkPhotoUploadStatus
      tags:
      - Locations
      parameters:
      - name: requestId
        in: path
        description: Request ID returned from bulk upload photos API
        required: true
        example: ''
        schema:
          type: string
          format: uuid
          examples:
          - d5673c0a-f9ca-4588-84fa-528ff7feac56
      - name: Authorization
        in: header
        description: API key for authentication
        required: true
        example: API T9V35W3xxxxxxxxxxx
        schema:
          type: string
      responses:
        '200':
          description: Successfully retrieved upload status
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      getLocationPhotosUploadStatus:
                        type: object
                        properties:
                          status:
                            type: string
                            description: 'Current status of the upload process:

                              * PROCESSING - Image Upload in progress. Check again later.

                              * SUCCESS - Image Upload successfully completed.

                              * ERROR - Image upload process failed.

                              '
                            enum:
                            - PROCESSING
                            - SUCCESS
                            - ERROR
                            examples:
                            - PROCESSING
                            - SUCCESS
                            - ERROR
                            x-apidog-enum:
                            - value: PROCESSING
                              name: ''
                              description: ''
                            - value: SUCCESS
                              name: ''
                              description: ''
                            - value: ERROR
                              name: ''
                              description: ''
                          requestId:
                            type: string
                            description: The ID of the bulk upload request
                            format: uuid
                            examples:
                            - e6c2d9d9-9a18-4015-88cf-9a4e19a6f49a
                        x-apidog-orders:
                        - status
                        - requestId
                    x-apidog-orders:
                    - getLocationPhotosUploadStatus
                x-apidog-orders:
                - data
              example:
                data:
                  getLocationPhotosUploadStatus:
                    requestId: e6c2d9d9-9a18-4015-88cf-9a4e19a6f49a
                    status: SUCCESS
          headers: {}
          x-apidog-name: OK
      security: []
      x-apidog-folder: Locations
      x-apidog-status: released
      x-run-in-apidog: https://app.apidog.com/web/project/797384/apis/api-13642386-run
  /locations:
    post:
      summary: Create a new business location
      deprecated: false
      description: "<span style=\"font-size: 14px;\">\nA **Location** represents a physical business entity within your account and serves as the foundation for managing and interacting with the API’s features. Each Location acts as a centralized hub for managing and accessing data related to that specific business, including:\n    \n- **Listings Management**: Maintain accurate and consistent business details across multiple publishers.\n- **Review Monitoring**: Track and respond to customer feedback associated with the location.\n- **Performance Insights**: Analyze key metrics related to visibility, engagement, and growth.\n- **SEO Optimization**: Enhance local search presence and improve rankings.\n\n<br>\n    \n\n**_See the Request Section for a detailed data schema of Supported Fields. Here’s a key detail to keep in mind:_**\n</span>\n\n\n:::info []\n<span style=\"font-size: 14px;\">\n**Processing Time for Location Updates**\nUpdates to any location attributes, including `enabledSiteIds` or `submissionDisabledSiteIds`, are processed asynchronously before they are accurately reflected across all publishers and within the system.\n\n<span style=\"font-size: 14px;\"> For example, If the business hours for a location are updated in the system, the changes are processed asynchronously before being reflected across all publishers. </span>\n    \n</span>\n:::\n"
      operationId: createLocation
      tags:
      - Locations
      parameters:
      - name: Authorization
        in: header
        description: 'API key for authentication '
        required: true
        example: API T9V35W3xxxxxxxxxxx
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                input:
                  type: object
                  properties:
                    name:
                      type: string
                      description: Name of the business
                    storeId:
                      type:
                      - string
                      - 'null'
                      description: Unique store identifier. Must be unique across all locations.
                    street:
                      type: string
                      description: Street address of the business
                    street1:
                      type: string
                      description: Additional street address information
                    city:
                      type: string
                      description: City where the business is located
                    postalCode:
                      type: string
                      description: Postal code of the business location
                    phone:
                      type: string
                      title: ''
                      description: "- Must follow the international **E.164 format**. [Ref here.](https://www.twilio.com/docs/glossary/what-e164)\n- Do not include the `+` sign or country code.\n- Remove parentheses and special characters.\n- Example:\n  - **Incorrect**: `(123)-456-7890`, `+1-123-456-7890`\n  - **Correct**: `1234567890`"
                      examples:
                      - '1234567890'
                    stateIso:
                      type: string
                      description: State ISO code. Refer to the Places API for valid ISOs.
                    countryIso:
                      type: string
                      description: Country ISO code. Refer to the Places API for valid ISOs.
                    ownerEmail:
                      type: string
                      description: Email of the business owner
                    ownerName:
                      type: string
                      description: Name of the business owner

# --- truncated at 32 KB (472 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/synup/refs/heads/main/openapi/synup-locations-api-openapi.yml