Content Recommendations
Get a personalized set of recommended content based on a user’s interests and what similar users have engaged with. This algorithm utilizes collaborative filtering based on selected engagement signals and categories/tags for a wide variety of recommendation formats.
Examples include:
- Recommended Videos
- Top Picks for You
- Shoes You May Like
- You May Be Interested In
- Your Daily Articles
- Suggested for You
Code Example
Take a look at this example of using the Content Recommendation endpoint, and read the detailed description below explaining each part of this code.
const data = JSON.stringify({
"object": {
"id": "Tim",
"type": "user"
},
"content_object_type": "article",
"primary_positive_relationship_type": "liked",
"secondary_positive_relationship_type": "viewed",
"primary_negative_relationship_type": "disliked",
"content_tagged_relationship_type": "taggedWith",
"content_tag_object_type": "tag"
});
const xhr = new XMLHttpRequest();
xhr.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open("GET", "https://api.pipeless.io/v1/apps/123/algos/recommendations/content");
xhr.setRequestHeader("accept", "application/json");
xhr.setRequestHeader("content-type", "application/json");
xhr.send(data);
import requests
url = "https://api.pipeless.io/v1/apps/123/algos/recommendations/content"
payload = {
"object": {
"id": "Tim",
"type": "user"
},
"content_object_type": "article",
"primary_positive_relationship_type": "liked",
"secondary_positive_relationship_type": "viewed",
"content_tagged_relationship_type": "taggedWith",
"content_tag_object_type": "tag"
}
headers = {
"accept": "application/json",
"content-type": "application/json"
}
response = requests.request("GET", url, json=payload, headers=headers)
print(response.text)
require 'uri'
require 'net/http'
require 'openssl'
url = URI("https://api.pipeless.io/v1/apps/123/algos/recommendations/content")
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.body = "{\"object\":{\"id\":\"Tim\",\"type\":\"user\"},\"content_object_type\":\"article\",\"primary_positive_relationship_type\":\"liked\",\"secondary_positive_relationship_type\":\"viewed\",\"content_tagged_relationship_type\":\"taggedWith\",\"content_tag_object_type\":\"tag\"}"
response = http.request(request)
puts response.read_body
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.pipeless.io/v1/apps/123/algos/recommendations/content",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_POSTFIELDS => "{\"object\":{\"id\":\"Tim\",\"type\":\"user\"},\"content_object_type\":\"article\",\"primary_positive_relationship_type\":\"liked\",\"secondary_positive_relationship_type\":\"viewed\",\"content_tagged_relationship_type\":\"taggedWith\",\"content_tag_object_type\":\"tag\"}",
CURLOPT_HTTPHEADER => [
"accept: application/json",
"content-type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\"object\":{\"id\":\"Tim\",\"type\":\"user\"},\"content_object_type\":\"article\",\"primary_positive_relationship_type\":\"liked\",\"secondary_positive_relationship_type\":\"viewed\",\"content_tagged_relationship_type\":\"taggedWith\",\"content_tag_object_type\":\"tag\"}");
Request request = new Request.Builder()
.url("https://api.pipeless.io/v1/apps/123/algos/recommendations/content")
.get()
.addHeader("accept", "application/json")
.addHeader("content-type", "application/json")
.build();
Response response = client.newCall(request).execute();
curl --request GET \
--url https://api.pipeless.io/v1/apps/123/algos/recommendations/content \
--header 'accept: application/json' \
--header 'content-type: application/json' \
--data '{"object":{"id":"Tim","type":"user"},"content_object_type":"article","primary_positive_relationship_type":"liked","secondary_positive_relationship_type":"viewed","content_tagged_relationship_type":"taggedWith","content_tag_object_type":"tag"}'
Here we're running this algo on App ID "123" where an object user "Tim" is the target who will being receiving personalized recommended content. The type of content that will be recommended is set to "article." The primary positive relationship is set to "liked" which means the algorithm is going to use "liked" relationships between users and articles to calculate recommendations. The secondary positive relationship of "viewed" adds a smaller weighting to factoring in users who have viewed articles rather than only those who have liked articles. The content tagged relationship type is set to "taggedWith" and content tag object type to "tag" which will be used in weighing recommendations not just on collaborative filtering of articles ("users who liked and viewed articles like you also liked and viewed these other articles") but also on the tags that articles share.
To summarize, this example is: "get recommended articles for Tim - articles that other users have liked and viewed who are users who had similar tastes as Tim based on Tim's previously liked and viewed articles - while also keeping articles more topically relevant to Tim's liked and viewed articles by factoring in tags on those articles"
Tutorial Example
You can see this API endpoint in action using our tutorial restaurant dataset here:
Recommended Content Tutorial Example
Community How-To's
How to add content recommendations to website
API Reference Documentation
You can read the reference docs for this endpoint here:
Get Recommended Content (for user)
Updated almost 2 years ago