NAV Navbar
cURL PHP Ruby Python
  • Introduction
  • Authentication
  • Products
  • Product Search
  • Status
  • Errors
  • Introduction

    API Version 3 is currently in Beta

    Welcome to the Synccentric API (v3 beta) documentation! You'll find all of the documentation for this API below. Select your programming language on the right side to see examples in each section. For quicker development in PHP, please download our SDK.

    Authentication

    Synccentric uses API keys to allow access to the API. You can register a new Synccentric API key while logged into https://v3.synccentric.com.

    Synccentric expects for the API key to be included in all API requests to the server in a Bearer Token.

    Products

    List Products

    Request

    <?php
    
    $cilent = new Synccentric('your-synccentric-api-token');
    
    $response = $cilent->listProducts();
    
    
    curl --request GET \
      --url https://v3.synccentric.com/api/v3/products \
      --header 'authorization: Bearer your-synccentric-api-token' \
      --header 'content-type: application/json'
    
    require 'uri'
    require 'net/http'
    
    url = URI("https://v3.synccentric.com/api/v3/products")
    
    http = Net::HTTP.new(url.host, url.port)
    http.use_ssl = true
    http.verify_mode = OpenSSL::SSL::VERIFY_NONE
    
    request = Net::HTTP::Get.new(url)
    request["content-type"] = 'application/json'
    request["authorization"] = 'Bearer your-synccentric-api-token'
    
    response = http.request(request)
    puts response.read_body
    
    import http.client
    
    conn = http.client.HTTPSConnection("v3.synccentric.com")
    
    payload = ""
    
    headers = {
        'content-type': "application/json",
        'authorization': "Bearer your-synccentric-api-token"
        }
    
    conn.request("GET", "/api/v3/products", payload, headers)
    
    res = conn.getresponse()
    data = res.read()
    
    print(data.decode("utf-8"))
    

    Response

    {
      "data": [
        {
          "type": "product",
          "id": 1,
          "attributes": {
            "asin": "B00EE65KU6",
            "initial_identifier": "018214830290",
            "error_msg": null
          }
        }
      ],
        "links": {
        "first": "https://v3.synccentric.com/api/v3/products?page=1",
        "last": "https://v3.synccentric.com/api/v3/products?page=2",
        "prev": null,
        "next": "https://v3.synccentric.com/api/v3/products?page=2"
        },
      "meta": {
        "pagination": {
          "total": 1,
          "count": 1,
          "per_page": 20,
          "current_page": 1,
          "total_pages": 1,
          "links": []
        }
      }
    }
    

    You can retieve a list of products belonging to your campaign by sending a GET request to the /products endpoint.

    HTTP Request

    GET https://v3.synccentric.com/api/v3/products

    Parameters

    campaign_id
    int

    Search for products only in the specified campaign. If this is omitted, then will search your current campaign.

    fields
    array

    Array of fields you want to search by. List of fields

    product_status
    string

    Will return products based on their status. Allowed statues are:

    • all

    • complete

    • incomplete

    • error

    downloadable
    boolean

    When set to true, will queue your export and return a link to where you can download your export as a json file.

    • true

    • false (default)

    downloadable_type
    string

    Setting this will change the file type of the download.

    • json

    • csv

    filters
    array

    Filter your results down even more. Allowed filters are:

    • 'sales_rank' => array(min,max)

    • 'duplicates' => 'best_ranked|all'

    • 'price' => array(buybox_new|buybox_used|new|used,min,max)

    • 'sellers_count' => array('new|used',min,max)

    • 'sellers' => array('amazon', 'fba', 'mfn')

    • 'tier_level' => array('standard','oversized')

    • 'identifier' => 'identifier'|array('ASIN')

    Retrieve a Product

    Request

    <?php
    $cilent = new Synccentric('your-synccentric-api-token');
    
    $response = $cilent->listProduct(product_id);
    
    curl --request GET \
      --url https://v3.synccentric.com/api/v3/products/{id} \
      --header 'authorization: Bearer your-synccentric-api-token' \
      --header 'content-type: application/json'
    
    require 'uri'
    require 'net/http'
    
    url = URI("https://v3.synccentric.com/api/v3/products/{id}")
    
    http = Net::HTTP.new(url.host, url.port)
    http.use_ssl = true
    http.verify_mode = OpenSSL::SSL::VERIFY_NONE
    
    request = Net::HTTP::Get.new(url)
    request["content-type"] = 'application/json'
    request["authorization"] = 'Bearer your-synccentric-api-token'
    
    response = http.request(request)
    puts response.read_body
    
    import http.client
    
    conn = http.client.HTTPSConnection("v3.synccentric.com")
    
    payload = ""
    
    headers = {
        'content-type': "application/json",
        'authorization': "Bearer your-synccentric-api-token"
        }
    
    conn.request("GET", "/api/v3/products/{id}", payload, headers)
    
    res = conn.getresponse()
    data = res.read()
    
    print(data.decode("utf-8"))
    

    Response

    {
      "type": "product",
      "id": 1,
      "attributes": {
        "asin": "B00EE65KU6",
        "initial_identifier": "018214830290",
        "error_msg": null
      }
    }
    

    You can retieve details of a specific product by sending a GET request to the /products/{id} endpoint.

    HTTP Request

    GET https://v3.synccentric.com/api/v3/products/{id}

    Parameters

    campaign_id
    int

    Search for products only in the specified campaign. If this is omitted, then will search your current campaign.

    fields
    array

    Array of fields you want to search by. List of fields

    Post Product

    Request

    <?php
    $cilent = new Synccentric('your-synccentric-api-token');
    
    $response = $cilent->import([['type' => 'asin', 'identifier' => 'ASINIDENTIFIER']]);
    
    curl --request POST \
      --url https://v3.synccentric.com/api/v3/products \
      --header 'authorization: Bearer your-synccentric-api-token' \
      --header 'content-type: application/json'
    
    require 'uri'
    require 'net/http'
    
    url = URI("https://v3.synccentric.com/api/v3/products")
    
    http = Net::HTTP.new(url.host, url.port)
    http.use_ssl = true
    http.verify_mode = OpenSSL::SSL::VERIFY_NONE
    
    request = Net::HTTP::Post.new(url)
    request["content-type"] = 'application/json'
    request["authorization"] = 'Bearer your-synccentric-api-token'
    
    response = http.request(request)
    puts response.read_body
    
    import http.client
    
    conn = http.client.HTTPSConnection("v3.synccentric.com")
    
    payload = ""
    
    headers = {
        'content-type': "application/json",
        'authorization': "Bearer your-synccentric-api-token"
        }
    
    conn.request("POST", "/api/v3/products", payload, headers)
    
    res = conn.getresponse()
    data = res.read()
    
    print(data.decode("utf-8"))
    

    Response

    {
          "type": "product",
          "attributes": {
            "id": 1,
            "status": "success'"
          }
    }
    

    To import products, send a POST request to the /products endpoint and include the product details in JSON format in the request body.

    HTTP Request

    POST https://v3.synccentric.com/api/v3/products

    Query Parameters

    campaign_id
    int

    Import to a specific campaign by id, otherwise it will just use the current campaign.

    identifiers
    array

    Required. Array of identifiers you would like to import. Can be from 1-1000 Required Fields:

    • type (case sensitive should be lowercase)

    • identifier

    Delete a Product

    Request

    <?php
    
    $cilent = new Synccentric('your-synccentric-api-token');
    
    $response = $cilent->deleteProducts();
    
    require 'uri'
    require 'net/http'
    
    url = URI("https://v3.synccentric.com/api/v3/products/{id}")
    
    http = Net::HTTP.new(url.host, url.port)
    http.use_ssl = true
    http.verify_mode = OpenSSL::SSL::VERIFY_NONE
    
    request = Net::HTTP::Delete.new(url)
    request["accept"] = 'application/json'
    request["content-type"] = 'application/json'
    request["authorization"] = 'Bearer your-synccentric-api-token'
    
    response = http.request(request)
    puts response.read_body
    
    import http.client
    
    conn = http.client.HTTPSConnection("v3.synccentric.com")
    
    payload = ""
    
    headers = {
        'accept': "application/json",
        'content-type': "application/json",
        'authorization': "Bearer your-synccentric-api-token"
        }
    
    conn.request("DELETE", "/api/v3/products/{id}",payload, headers)
    
    res = conn.getresponse()
    data = res.read()
    
    print(data.decode("utf-8"))
    
    curl --request DELETE \
      --url 'https://v3.synccentric.come/api/v3/products/{id}' \
      --header 'accept: application/json' \
      --header 'authorization: Bearer your-synccentric-api-token' \
      --header 'content-type: application/json' \
    

    Response

    {
        "type": "product",
        "attributes": {
            "status": "deleted"
        }
    }
    

    To delete products, send a DELETE request to the /products/{id} endpoint.

    HTTP Request

    DELETE https://v3.synccentric.com/api/v3/products/{id}

    Parameters

    campaign_id
    int

    Specify specific campaign to delete product/s from.

    id
    int

    Specify which product you want to delete.

    Fields

    These are all the fields you are able to return when viewing product/s.

    • actor
    • additional_image_1
    • additional_image_2
    • additional_image_3
    • additional_image_4
    • additional_image_5
    • all_categories
    • amazon_landed_price
    • artist
    • asin
    • aspect_ratio
    • audience_rating
    • author
    • band_material_type
    • binding
    • blueray_region
    • brand
    • buybox_new_landed_price
    • buybox_new_listing_price
    • buybox_new_shipping_price
    • buybox_new_subcondition
    • buybox_used_landed_price
    • buybox_used_listing_price
    • buybox_used_shipping_price
    • buybox_used_subcondition
    • category
    • cero_age_rating
    • chain_type
    • child_asins
    • clasp_type
    • color
    • cpu_manufacturer
    • cpu_speed
    • cpu_type
    • creator
    • description
    • director
    • display_size
    • ean
    • edition
    • eisbn
    • episode_sequence
    • esrb_age_rating
    • fba_fee_total
    • fba_monthly_storage
    • fba_order_handling
    • fba_pick_pack
    • fba_promotion
    • fba_tier_level
    • fba_weight_handling
    • features
    • format
    • genre
    • hard_disk_interface
    • hard_disk_size
    • hardware_platform
    • has_super_saver_shipping
    • hazardous_material_type
    • is_adult_product
    • is_eligible_for_prime
    • isbn
    • item_dimensions_height
    • item_dimensions_length
    • item_dimensions_weight
    • item_dimensions_width
    • keyword_match_percentage
    • label
    • languages
    • large_image
    • list_price_amount
    • list_price_currency_code
    • listing_url
    • lowest_new_feedback_count
    • lowest_new_feedback_count_fba
    • lowest_new_feedback_count_merchant
    • lowest_new_feedback_rating
    • lowest_new_feedback_rating_fba
    • lowest_new_feedback_rating_merchant
    • lowest_new_fulfillment_channel
    • lowest_new_price
    • lowest_new_price_fba
    • lowest_new_price_merchant
    • lowest_new_shipping
    • lowest_new_shipping_fba
    • lowest_new_shipping_merchant
    • lowest_offer_listings
    • lowest_refurbished_price
    • lowest_used_feedback_count
    • lowest_used_feedback_count_fba
    • lowest_used_feedback_count_merchant
    • lowest_used_feedback_rating
    • lowest_used_feedback_rating_fba
    • lowest_used_feedback_rating_merchant
    • lowest_used_fulfillment_channel
    • lowest_used_price
    • lowest_used_price_fba
    • lowest_used_price_merchant
    • lowest_used_shipping
    • lowest_used_shipping_fba
    • lowest_used_shipping_merchant
    • manufacturer
    • maximum_resolution
    • media_type
    • medium_image
    • merchant_name
    • metal_stamp
    • metal_type
    • model
    • mpn
    • node_id
    • nodeid_tree
    • number_of_discs
    • number_of_issues
    • number_of_items
    • number_of_pages
    • number_of_tracks
    • operating_system
    • optical_zoom
    • package_dimensions_height
    • package_dimensions_length
    • package_dimensions_weight
    • package_dimensions_width
    • package_quantity
    • parent_asin
    • part_num
    • pegi_rating
    • platform
    • processor_count
    • product_group
    • product_type_name
    • product_type_subcategory
    • publication_date
    • publisher
    • referral_fee
    • region_code
    • release_date
    • ring_size
    • running_time
    • sales_rank
    • sales_rank_category
    • sales_rank_summary
    • scent
    • season_sequence
    • second_lowest_landed_price
    • shaft_material
    • size
    • sku
    • small_image
    • studio
    • subcategory
    • system_memory_size
    • system_memory_type
    • theatrical_release_date
    • title
    • total_fees_estimate
    • total_new_sellers
    • total_new_sellers_fba
    • total_new_sellers_merchant
    • total_refurbished_sellers
    • total_used_sellers
    • total_used_sellers_fba
    • total_used_sellers_merchant
    • trade_in_value
    • upc
    • variable_closing_fee
    • warranty

    Product Search

    Request

    <?php
    
    $cilent = new Synccentric('your-synccentric-api-token');
    
    $response = $cilent->productSearch();
    
    curl --request POST \
      --url https://v3.synccentric.com/api/v3/product_search \
      --header 'accept: application/json' \
      --header 'authorization: Bearer your-synccentric-api-token' \
      --header 'content-type: application/json'
    
    require 'uri'
    require 'net/http'
    
    url = URI("https://v3.synccentric.com/api/v3/product_search")
    
    http = Net::HTTP.new(url.host, url.port)
    http.use_ssl = true
    http.verify_mode = OpenSSL::SSL::VERIFY_NONE
    
    request = Net::HTTP::Post.new(url)
    request["accept"] = 'application/json'
    request["content-type"] = 'application/json'
    request["authorization"] = 'Bearer your-synccentric-api-token'
    
    response = http.request(request)
    puts response.read_body
    
    import http.client
    
    conn = http.client.HTTPSConnection("v3.synccentric.com")
    
    payload = ""
    
    headers = {
        'accept': "application/json",
        'content-type': "application/json",
        'authorization': "Bearer your-synccentric-api-token"
        }
    
    conn.request("POST", "/api/v3/product_search", payload, headers)
    
    res = conn.getresponse()
    data = res.read()
    
    print(data.decode("utf-8"))
    

    Response

    {
      "type": "product_search",
      "attributes": {
        "status": "Success"
      }
    }
    

    To start a product search send a POST request to the /product_search endpoint.

    HTTP Request

    POST https://v3.synccentric.com/api/v3/product_search

    Parameters

    campaign_id
    int

    Search for products only in the specified campaign. If this is omitted, then will search your current campaign.

    retrieve_secondary_listings
    boolean

    Weather or not to retrieve secondary listings.

    • true

    • false (default)

    retrieve_other_identifiers
    boolean

    Will retrieve other identifiers e.g. UPC,etc.

    • true

    • false (default)

    search_only_new
    boolean

    Will search only new products if set to true.

    • true (default)

    • false

    Request

    <?php
    $cilent = new Synccentric('your-synccentric-api-token');
    
    $response = $cilent->cancelProductSearch();
    
    curl --request POST \
      --url https://v3.synccentric.com/api/v3/product_search/cancel \
      --header 'accept: application/json' \
      --header 'authorization: Bearer your-synccentric-api-token' \
      --header 'content-type: application/json'
    
    require 'uri'
    require 'net/http'
    
    url = URI("https://v3.synccentric.com/api/v3/product_search/cancel")
    
    http = Net::HTTP.new(url.host, url.port)
    http.use_ssl = true
    http.verify_mode = OpenSSL::SSL::VERIFY_NONE
    
    request = Net::HTTP::Post.new(url)
    request["accept"] = 'application/json'
    request["content-type"] = 'application/json'
    request["authorization"] = 'Bearer your-synccentric-api-token'
    
    response = http.request(request)
    puts response.read_body
    
    import http.client
    
    conn = http.client.HTTPSConnection("v3.synccentric.com")
    
    payload = ""
    
    headers = {
        'accept': "application/json",
        'content-type': "application/json",
        'authorization': "Bearer your-synccentric-api-token"
        }
    
    conn.request("POST", "/api/v3/product_search/cancel", payload, headers)
    
    res = conn.getresponse()
    data = res.read()
    
    print(data.decode("utf-8"))
    

    Response

    {
      "type": "product_search",
      "attributes": {
        "status": "Success",
        "message": "Your job will be cancelled"
      }
    }
    

    To cancel a search in progress send a POST request to the /product_search/cancel endpoint.

    HTTP Request

    POST https://v3.synccentric.com/api/v3/product_search/cancel

    Parameters

    campaign_id
    int

    Specify the campaign you want to cancel a job for. Otherwise will use current campaign.

    Throttling

    All limits are based on successful returned products per 24 hours.

    Example: If you are on the Standard Plan then your storage limit is 1,000 products. If you import 1,000 products and create a search and all products come back successful, then you will have 1,000 products left that you can search in 24 hours.

    Limits

    Basic Plan

    API is not avaliable

    Standard Plan

    (storage limit x 2): 2,000.

    Premium Plan

    (storage limit x 2): 10,000.

    Enterprise Plan

    storage limit

    Enterprise API

    (100k GUI): API scaling

    Status

    Get Campaign Status

    Request

    <?php
    $cilent = new Synccentric('your-synccentric-api-token');
    
    $response = $client->productSearchStatus();
    
    require 'uri'
    require 'net/http'
    
    url = URI("https://v3.synccentric.com/api/v3/status")
    
    http = Net::HTTP.new(url.host, url.port)
    http.use_ssl = true
    http.verify_mode = OpenSSL::SSL::VERIFY_NONE
    
    request = Net::HTTP::Get.new(url)
    request["accept"] = 'application/json'
    request["content-type"] = 'application/json'
    request["authorization"] = 'Bearer your-synccentric-api-token'
    
    response = http.request(request)
    puts response.read_body
    
    curl --request GET \
      --url https://v3.synccentric.com/api/v3/status \
      --header 'accept: application/json' \
      --header 'authorization: Bearer your-synccentric-api-token' \
      --header 'content-type: application/json'
    
    import http.client
    
    conn = http.client.HTTPSConnection("v3.synccentric.com")
    
    payload = ""
    
    headers = {
        'accept': "application/json",
        'content-type': "application/json",
        'authorization': "Bearer your-synccentric-api-token"
        }
    
    conn.request("GET", "/api/v3/status", payload, headers)
    
    res = conn.getresponse()
    data = res.read()
    
    print(data.decode("utf-8"))
    

    Response

    {
      "type": "status",
      "attributes": {
          "errorItems": 0,
          "totalItems": 1,
          "convertedItems": 1,
          "percentage": 100,
          "jobsCount": 0,
          "listingsReturned": 3,
          "cancelJob": false,
          "currentJobType": "product_search"
      }
    }
    

    To get the current status of your product search send a GET request to the /status endpoint.

    HTTP Request

    GET https://v3.synccentric.com/api/v3/status

    Errors

    The Synccentric API uses standard HTTP status codes to indicate whether the request succeeded or failed. Additionally, the errors array is returned for most failed calls and contains error objects corresponding to specific exceptions encountered during processing.

    HTTP Status Codes

    The following table lists which status codes are used by the Synccentric API. Generally, the status codes can be categorized as follows:

    The Error Object

    An error object describes a specific error. It can be returned for any 4xx and 5xx HTTP response, but is usually used to describe 400 errors.

    Attribute Description
    id Type of error
    status Code for the error
    title The title of the error
    detail The details of the error