Review monitoring API V2

For better integration with your system!

FeedCheck REST API V2 documentation

FeedCheck offers an API in order to help consumer brands easily integrate review management into their platforms. Below you will find the technical documentation required for your integration. You can play with the api using our swagger page.

Authentication

The first interaction with our API is the authentication. The FeedCheck API uses Basic Authentication with username and password (Secret API Key). You can find this information in the Settings section ( https://app.feedcheck.co/settings ). The Secret API Key needs to be included in any of the following API calls. Otherwise, a 401 error code with the message "Could not verify your access level for that URL" will be returned.

Basic authentication is a simple authentication scheme built into the HTTP protocol. The client sends HTTP requests with the Authorization header that contains the word Basic word followed by a space and a base64-encoded string username:password.

Products

In FeedCheck, a product is defined by a group of links, each link pointing out to a product page (e.g. https://www.amazon.com/Apple-iPhone-Fully-Unlocked-5-8/dp/B075QNGDZD/ ).

Adding a product

For adding a product you need to make a POST request at /api/v2/products endpoint with the following payload:

{
	"name":"product name", 
	"owner":"my product",
        "links": [
          "https://www.amazon.com/Apple-Generation-Cancelling-Transparency-Personalized/dp/B0BDHWDR12?ref_=ast_sto_dp"
        ]
}
where "name" contains your product name, owner contains "my product" or "competitor" value, "links" is a list of string which contains the links related to this product.

Below is the request in cURL format:
curl -X POST "https://app.feedcheck.co/api/v2/products"
    -H "accept: application/json"
    -H "Authorization: Basic {{ base64 encoded username:password }}"
    -H "Content-Type: application/json"
    -d "{
        "name":"product name",
        "owner":"my product",
        "links":["https://www.amazon.com/Apple-Generation-Cancelling-Transparency-Personalized/dp/B0BDHWDR12?ref_=ast_sto_dp"]
    }"
where username and password are auth informations.

Retrieving products

Retrieving products from your account is done by GET request at /api/v2/products . The response has the following format:

[
    {
        "groups": [],
        "id": 29438,
        "links": [
          119105
        ],
        "name": "Webcam Cover Slide 6 Pack, 0.027 inch Ultra-Thin Metal Magnet Web Camera Cover for MacBook Pro iMac Laptop PC iPad Pro iPhone Surface Pro Echo Show Camera Blocker Slider, Protect Your Visual Prvacy",
        "owner": "my product",
        "rating": 3.8,
        "ratingsNumber": 203
    },
    {
        "groups": [],
        "id": 29439,
        "links": [
          119106
        ],
        "name": "Portable Monitor, InnoView 15.8 Inch FHD 1080P USB C HDMI Second External Monitor for Laptop, Desktop, MacBook, Phones, Tablet, PS5/4, Xbox, Switch, Built-in Speaker with Protective Case",
        "owner": "my product",
        "rating": 4.5,
        "ratingsNumber": 2032
    }
]

Below is the request in cURL format:

curl -X GET "https://app.feedcheck.co/api/v2/products"
    -H "accept: application/json"
    -H "Authorization: Basic {{ base64 encoded username:password }}"

Retrieve product by its name

We can do that with the same request as seen above but we have to complete the parameter describer in the list. In this way we pass a query parameter to the request and it will return the product that we search for.

Below is the request in cURL format:
curl -X GET "https://app.feedcheck.co/api/v2/products?name=test%20"
    -H "accept: application/json"
    -H "Authorization: Basic {{ base64 encoded username:password }}"
The request returns the following object:
[
  {
    "groups": [],
    "id": 31547,
    "links": [
      127816
    ],
    "name": "test",
    "owner": "my product",
    "rating": 5,
    "ratingsNumber": 7
  }
]

Retrieving a product based on ID

In FeedCheck we can fetch a products based on its ID with a request at /api/v2/products/{productId} and "productId" is a integer which represents the id of a product that exists in FeedCheck.

Below is the request in cURL format:
curl -X GET "https://app.feedcheck.co/api/v2/products/31547"
    -H "accept: application/json"
    -H "Authorization: Basic {{ base64 encoded username:password }}"
The request returns the next response:
{
  "groups": [],
  "id": 31547,
  "links": [
    127816
  ],
  "name": "Test Name Example",
  "owner": "my product",
  "rating": 5,
  "ratingsNumber": 7
}

Update a product based on ID

In FeedCheck we can update a product if we pass its id to this PATCH request /api/v2/products/{productId} and a payload which will contain the updated name. "productId" is a integer which represents the id of a product that exists in FeedCheck.

Below is the request in cURL format:
curl -X PATCH "https://app.feedcheck.co/api/v2/products/31547"
    -H "accept: application/json"
    -H "Authorization: Basic {{ base64 encoded username:password }}"
    -H "Content-Type: application/json"
    -d {
        "name":"Name Example Product"
    }
The request returns the next response:
{
  "groups": [],
  "id": 31547,
  "links": [
    127816
  ],
  "name": "Name Example Product",
  "owner": "my product",
  "rating": 5,
  "ratingsNumber": 7
}

Deleting a product based on ID

In FeedCheck we can delete a products based on its ID with a DELETE request at /api/v2/products/{productId}.

Below is the request in cURL format:
curl -X DELETE "https://app.feedcheck.co/api/v2/products/31547"
    -H "accept: application/json"
    -H "Authorization: Basic {{ base64 encoded username:password }}"

Retrieving products from group

In FeedCheck we can fetch products from a specific group making a request at /api/v2/groups/{groupId}/products and "groupId" is a integer which represents the id of a group that exists in FeedCheck.

Below is the request in cURL format:
curl -X GET "https://app.feedcheck.co/api/v2/groups/2804/products"
    -H "accept: application/json"
    -H "Authorization: Basic {{ base64 encoded username:password }}"
The request returns the next response:
[
    {
        "groups": [
            2804
        ],
        "id": 31490,
        "links": [
            127737
        ],
        "name": "My apple",
        "owner": "my product",
        "rating": 4.7,
        "ratingsNumber": 9258
    }
]

Key Drivers

In FeedCheck the key-drivers are used to calculate different metrics. By identifying the key drivers, your company can gain insights into the factors that have the most significant impact on your performance. This knowledge enables your business to make informed decisions, allocate resources effectively, and develop strategies to optimize the key drivers to achieve their desired outcomes. In our app you can make different operations over key-drivers like related below.

Getting all key drivers

Getting all key drivers is done by a GET request at /api/v2/features.

Below is the request in cURL format:
curl -X GET "https://app.feedcheck.co/api/v2/features"
    -H "accept: application/json"
    -H "Authorization: Basic {{ base64 encoded username:password }}"
The request returns a list with all key-drivers for a customer.

Getting all key drivers for a key driver set

This data is available at the endpoint /api/v2/featureSets/{featureSetId}/features where featureSetId represent the id of a key driver set.

Below is the request in cURL format:
curl -X GET "https://app.feedcheck.co/api/v2/featureSets/115/features"
     -H "accept: application/json"
     -H "Authorization: Basic {{ base64 encoded username:password }}"

The response has the following format:

[
  {
    "featureSet": {
      "id": 23562623,
      "name": "Makeup Products"
    },
    "id": 32458432,
    "keywords": "size, width, height",
    "name": "Makeup"
  },
  {
    "featureSet": {
      "id": 33547453,
      "name": "Makeup Products"
    },
    "id": 235263362,
    "keywords": "material, like, good",
    "name": "Style"
  }
]

Retrieving key drivers sets

Retrieving key drivers sets is done by a GET request at /api/v2/featureSets.

Below is the request in cURL format:
curl -X GET "https://app.feedcheck.co/api/v2/featureSets"
    -H "accept: application/json"
    -H "Authorization: Basic {{ base64 encoded username:password }}"
The request returns the next response:
[
  {
    "id": 23562623,
    "name": "Makeup Products"
  },
  {
    "id": 235634623,
    "name": "Phone Apple 13"
  }
]

Create key driver for a key driver set

Creating a key driver for a key driver set is done by a POST request at /api/v2/featureSets/{featureSetId}/features with the following payload:

{
    "name": "strength",
    "keywords": "power, voltage, great"
}
Below is the request in cURL format:
curl -X POST "https://app.feedcheck.co/api/v2/featureSets/23562623/features"
     -H "accept: application/json"  
     -H "Authorization: Basic "     
     -H "Content-Type: application/json" 
     -d "{
            "name": "strength",
            "keywords": "power, voltage, great"
        }"
The request returns the next response:
[
  {
    "id": 23562623,
    "name": "Makeup Products"
  },
  {
    "id": 235634623,
    "name": "Phone Apple 13"
  }
]

Links

In FeedCheck the links are the places from where reviews are collected. A link point to a product page. All links belong to products, as we mentioned previously.

Adding a link to a product

Adding a link to a product is done by a POST request at /api/v2/products/{productId}/links endpoint with the following payload:

{
    "links":[
        "https://www.amazon.com/Apple-iPhone-Fully-Unlocked-5-8/dp/B075QNGDZD/"
    ]
}

Deleting a link from a product

Deleting a link from a product is done by a DELETE request at /api/v2/products/{productId}/links/{linkId} endpoint with the following payload:

Retrieving links

Retrieving links for a specific product is done by GET request at /api/v2/products/{productId}/links . The response has the following format:

[
    {
        "id": 31978,
        "url": "https://www.amazon.com/Apple-iPhone-Fully-Unlocked-5-8/dp/B075QNGDZD/",
        "product_id": 3351
    }
]

Deleting a link

Deleting a specific link is done by a DELETE request at /api/v2/links/{linkId}.

Updating a link

Updating a specific link is done by a PATCH request at /api/v2/links/{linkId} with a payload that contains the new URL.

Reviews

Get all reviews from FeedCheck

We can fetch all reviews from the database using a single GET request to the endpoint /api/v2/reviews In this way we will get a list of reviews that looks like this:

[
    {
        "id": 12551741,
        "title": "Beautiful phone, happy with the upgrade",
        "content": "Phone freezes a bit and I need to reboot but that is maybe once a week. I am hopeful that a future update will fix this. Annoying that it doesn't read my face properly when I am wearing my glasses. Not many apps are up to the speed with the facial scan so I need to type in my password every time I check my banking statements. The missing fingerprint button took some time getting used to but once I did, I don't even miss it. The camera is lovely as is the speed. I wish there were more color and size choices, but prob next year.",
        "translatedEnTitle": "",
        "translatedEnContent": "",
        "rating": "4.0",
        "website": "amazon.com",
        "user": "Ofelia P.",
        "dataCreated": 1486447200,
        "dataDiscovered": 1486447200,
        "productId": 31978,
        "linkId": 121521,
        "signature": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
    }
]

Retrieving product reviews

Retrieving reviews for a specific product is done by GET request at /api/v2/products/{productId}/reviews. If you want to get reviews that are newer than a certain date you can use the URL param start_timestamp with a timestamp in UNIX format. To limit the output you can use the end_timestamp parameter or limit to limit to a fix number of results. The timestamp limiting params (start_timestamp and end_timestamp) use dataCreated field (in contrast to API V1). The response has the following format:

[
    {
        "id": 12551741,
        "title": "Beautiful phone, happy with the upgrade",
        "content": "Phone freezes a bit and I need to reboot but that is maybe once a week. I am hopeful that a future update will fix this. Annoying that it doesn't read my face properly when I am wearing my glasses. Not many apps are up to the speed with the facial scan so I need to type in my password every time I check my banking statements. The missing fingerprint button took some time getting used to but once I did, I don't even miss it. The camera is lovely as is the speed. I wish there were more color and size choices, but prob next year.",
        "translatedEnTitle": "",
        "translatedEnContent": "",
        "rating": "4.0",
        "website": "amazon.com",
        "user": "Ofelia P.",
        "dataCreated": 1486447200,
        "dataDiscovered": 1486447200,
        "productId": 31978,
        "linkId": 121521,
        "signature": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
    }
]

Retrieving group reviews

Retrieving reviews for a specific group is done by GET request at /api/v2/group/{groupId}/reviews. If you want to get reviews that are newer than a certain date you can use the URL param start_timestamp with a timestamp in UNIX format. The response has the same format as reviews endpoint.

Retrieving link reviews

Retrieving reviews for a specific link is done by GET request at /api/v2/links/{linkId}/reviews. If you want to get reviews that are newer than a certain date you can use the URL param start_timestamp with a timestamp in UNIX format. The response has the same format as reviews endpoint.

Histogram

Get histogram values for all products

The new version of api comes with a new endpoint that returns histogram data for all products related to a customer. You can make a get request at /api/v2/histogram and you will receive an object that looks like this:

{
  "histogram": [
    {
      "percentFromTotal": 50,
      "rating": 5,
      "reviewsNumber": 181
    },
    {
      "percentFromTotal": 11,
      "rating": 4,
      "reviewsNumber": 40
    },
    {
      "percentFromTotal": 6,
      "rating": 3,
      "reviewsNumber": 22
    },
    {
      "percentFromTotal": 8,
      "rating": 2,
      "reviewsNumber": 29
    },
    {
      "percentFromTotal": 24,
      "rating": 1,
      "reviewsNumber": 86
    }
  ],
  "totals": {
    "nps": 12.3,
    "reviewAverageNorm": 0.28,
    "reviewAverageRank": 3.56,
    "reviewCount": 358
  }
}

Get histogram values for a product

We can fetch all values needed for histogram to be displayed. We have to make a single GET request to the endpoint /api/v2/product/{productId}/histogram In this way, we will get an object with values that describe the histogram and look like the response from the request above.

Below is the request in cURL format:
curl -X GET "http://0.0.0.0:32323/api/v2/histogram/29444"
    -H "accept: application/json"
    -H "Authorization: Basic {{ base64 encoded username:password }}"

Groups

Retrieving groups

Retrieving all groups in your account is done by GET request at /api/v2/groups . The response has the following format:

[
    {
        "id": 123,
        "name": "The group name",
        "productIds": [
            29440,
            29881
        ]
    }
]

Create group

In FeedCheck groups can be created with a POST request at /api/v2/groups with the following payload:

{
	"name": "Group Name"
}
Below is the request in cURL format:
curl -X POST "https://app.feedcheck.co/api/v2/groups"
    -H "accept: application/json"
    -H "Authorization: Basic {{ base64 encoded username:password }}"
    -H "Content-Type: application/json"
    -d "{"name":"Group Name"}"

The above request returns the created group id.

Retrieving group by Id

Retrieving a group by id from your account is done by GET request at /api/v2/groups/{groupId} . The response has the following format:

{
    "id": 123,
    "name": "The group name",
    "productIds": [
        29440,
        29881
    ]
}

Delete group by Id

Deleting a group by id from your account is done by DELETE request at /api/v2/groups/{groupId} . The response is represented by the id of the group that has been deleted.

Patch (Update) group by Id

Updating a group by id from your account is done by PATCH request at /api/v2/groups/{groupId}. The body of the request contains the new name that will be associated to the group. As response we get the entire group that has been updated.

Adding product to group

In FeedCheck the products can be added one by one to a group with a POST request at /api/v2/groups/{groupId}/addProduct with the following payload:

{
	"productId": 31490
}
where "productId" contains the id of the product and "groupId" is a integer which represents the id of a group that exists in FeedCheck.

Below is the request in cURL format:
curl -X POST "https://app.feedcheck.co/api/v2/groups/2804/addProduct"
    -H "accept: application/json"
    -H "Authorization: Basic {{ base64 encoded username:password }}"
    -H "Content-Type: application/json"
    -d "{"productId":31490}"

Deleting product from group

In FeedCheck the products can be deleted one by one from a group with a DELETE request at /api/v2/groups/{groupId}/deleteProduct/{productId}.

Where "productId" contains the id of the product and "groupId" is a integer which represents the id of a group that exists in FeedCheck.

Below is the request in cURL format:
curl -X POST "https://app.feedcheck.co/api/v2/groups/2804/deleteProduct/31234"
    -H "accept: application/json"
    -H "Authorization: Basic {{ base64 encoded username:password }}"
    -H "Content-Type: application/json"

Alerts

Retrieving alerts

Retrieving all alerts from your account is done by GET request at /api/v2/alerts . The response has the following format:

[
  {
    "id": 0,
    "email": "example@gmail.com",
    "method": "daily email",
    "type": "rating",
    "phone": "(555) 555-1234",
    "condition": "lt",
    "product": "product_29441",
    "channel": "amazon.com"
  }
]

Create Alert

In FeedCheck alerts can be created with a POST request at /api/v2/alerts with the following payload:

{
  "email": "example@gmail.com",
  "method": "email",
  "type": "new_reviews",
  "phone": "(555) 555-1234",
  "product": "product_29444",
  "channel": "ebay.com",
  "symbol": "",
  "sensitivity": ""
}

The above request returns the id of created alert.

Retrieving alert by Id

Retrieving alert by id from your account is done by GET request at /api/v2/alert/{alertId} . The response has the following format:

{
  "channel": "website-example.com",
  "condition": "lte 5",
  "email": "example@gmail.com",
  "id": 731,
  "method": "daily email",
  "phone": "(555) 555-1234",
  "product": "myproducts",
  "type": "rating"
}

Delete alert by Id

Deleting an alert by id from your account is done by DELETE request at /api/v2/alert/{alertId} . The response is represented by the id of the alert that has been deleted.

If you have different products with the same links in a group you may receive duplicate reviews. If you want to deduplicate reviews use the query parameter deduplicate=1