Serving recommendation
Serves recommended items for the ad unit (tagid) and request payload (RecoRequest).
Resolves the recommendation policy for the ad unit and retrieves candidates from its configured sources.
When provided, seed_item_id is used by policy sources that support seed-based retrieval, such as Association and Pinned.
Returns the items to render (catalog_id, position) and a tracking_token for recommendation tracking.
curl --request POST \
--url https://your_a2_service/app/v0/recommendation/{tagid} \
--header 'Content-Type: application/json' \
--data '
{
"app": {
"bundle": "<string>",
"domain": "<string>",
"name": "<string>",
"storeurl": "<string>",
"ver": "<string>"
},
"device": null,
"filter": "<unknown>",
"seed_item_id": "<string>",
"site": {
"domain": "<string>",
"mobile": true,
"name": "<string>",
"page": "<string>",
"ref": "<string>",
"search": "<string>"
},
"user": {
"gender": "M",
"id": "account-187acvbvz",
"yob": 1988
}
}
'import requests
url = "https://your_a2_service/app/v0/recommendation/{tagid}"
payload = {
"app": {
"bundle": "<string>",
"domain": "<string>",
"name": "<string>",
"storeurl": "<string>",
"ver": "<string>"
},
"device": None,
"filter": "<unknown>",
"seed_item_id": "<string>",
"site": {
"domain": "<string>",
"mobile": True,
"name": "<string>",
"page": "<string>",
"ref": "<string>",
"search": "<string>"
},
"user": {
"gender": "M",
"id": "account-187acvbvz",
"yob": 1988
}
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
app: {
bundle: '<string>',
domain: '<string>',
name: '<string>',
storeurl: '<string>',
ver: '<string>'
},
device: null,
filter: '<unknown>',
seed_item_id: '<string>',
site: {
domain: '<string>',
mobile: true,
name: '<string>',
page: '<string>',
ref: '<string>',
search: '<string>'
},
user: {gender: 'M', id: 'account-187acvbvz', yob: 1988}
})
};
fetch('https://your_a2_service/app/v0/recommendation/{tagid}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://your_a2_service/app/v0/recommendation/{tagid}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'app' => [
'bundle' => '<string>',
'domain' => '<string>',
'name' => '<string>',
'storeurl' => '<string>',
'ver' => '<string>'
],
'device' => null,
'filter' => '<unknown>',
'seed_item_id' => '<string>',
'site' => [
'domain' => '<string>',
'mobile' => true,
'name' => '<string>',
'page' => '<string>',
'ref' => '<string>',
'search' => '<string>'
],
'user' => [
'gender' => 'M',
'id' => 'account-187acvbvz',
'yob' => 1988
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://your_a2_service/app/v0/recommendation/{tagid}"
payload := strings.NewReader("{\n \"app\": {\n \"bundle\": \"<string>\",\n \"domain\": \"<string>\",\n \"name\": \"<string>\",\n \"storeurl\": \"<string>\",\n \"ver\": \"<string>\"\n },\n \"device\": null,\n \"filter\": \"<unknown>\",\n \"seed_item_id\": \"<string>\",\n \"site\": {\n \"domain\": \"<string>\",\n \"mobile\": true,\n \"name\": \"<string>\",\n \"page\": \"<string>\",\n \"ref\": \"<string>\",\n \"search\": \"<string>\"\n },\n \"user\": {\n \"gender\": \"M\",\n \"id\": \"account-187acvbvz\",\n \"yob\": 1988\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://your_a2_service/app/v0/recommendation/{tagid}")
.header("Content-Type", "application/json")
.body("{\n \"app\": {\n \"bundle\": \"<string>\",\n \"domain\": \"<string>\",\n \"name\": \"<string>\",\n \"storeurl\": \"<string>\",\n \"ver\": \"<string>\"\n },\n \"device\": null,\n \"filter\": \"<unknown>\",\n \"seed_item_id\": \"<string>\",\n \"site\": {\n \"domain\": \"<string>\",\n \"mobile\": true,\n \"name\": \"<string>\",\n \"page\": \"<string>\",\n \"ref\": \"<string>\",\n \"search\": \"<string>\"\n },\n \"user\": {\n \"gender\": \"M\",\n \"id\": \"account-187acvbvz\",\n \"yob\": 1988\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://your_a2_service/app/v0/recommendation/{tagid}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"app\": {\n \"bundle\": \"<string>\",\n \"domain\": \"<string>\",\n \"name\": \"<string>\",\n \"storeurl\": \"<string>\",\n \"ver\": \"<string>\"\n },\n \"device\": null,\n \"filter\": \"<unknown>\",\n \"seed_item_id\": \"<string>\",\n \"site\": {\n \"domain\": \"<string>\",\n \"mobile\": true,\n \"name\": \"<string>\",\n \"page\": \"<string>\",\n \"ref\": \"<string>\",\n \"search\": \"<string>\"\n },\n \"user\": {\n \"gender\": \"M\",\n \"id\": \"account-187acvbvz\",\n \"yob\": 1988\n }\n}"
response = http.request(request)
puts response.read_body{
"items": [
{
"catalog_id": "catalog-123",
"position": 0
},
{
"catalog_id": "catalog-234",
"position": 1
}
],
"tracking_token": "dXNlci0xMjN8ZjQ3YWMxMGJ8OWMzZTc3YTE",
"version": "0.1.0"
}{
"items": [
{
"catalog_id": "<string>",
"position": 123,
"score": 123
}
],
"version": "<string>",
"errorcode": "<string>",
"ext": "<unknown>",
"tracking_token": "<string>",
"user": {
"buyeruid": "<string>",
"ext": "<unknown>",
"gender": "M",
"geo": {
"accuracy": 123,
"city": "<string>",
"country": "<string>",
"ext": "<unknown>",
"ipservice": 1,
"lastfix": 1,
"lat": 123,
"lon": 123,
"metro": "<string>",
"region": "<string>",
"regionfips104": "<string>",
"type": 1,
"utcoffset": 123,
"zip": "<string>"
},
"id": "<string>",
"keywords": "<string>",
"yob": 32767
}
}{
"items": [
{
"catalog_id": "<string>",
"position": 123,
"score": 123
}
],
"version": "<string>",
"errorcode": "<string>",
"ext": "<unknown>",
"tracking_token": "<string>",
"user": {
"buyeruid": "<string>",
"ext": "<unknown>",
"gender": "M",
"geo": {
"accuracy": 123,
"city": "<string>",
"country": "<string>",
"ext": "<unknown>",
"ipservice": 1,
"lastfix": 1,
"lat": 123,
"lon": 123,
"metro": "<string>",
"region": "<string>",
"regionfips104": "<string>",
"type": 1,
"utcoffset": 123,
"zip": "<string>"
},
"id": "<string>",
"keywords": "<string>",
"yob": 32767
}
}"<string>"{
"items": [
{
"catalog_id": "<string>",
"position": 123,
"score": 123
}
],
"version": "<string>",
"errorcode": "<string>",
"ext": "<unknown>",
"tracking_token": "<string>",
"user": {
"buyeruid": "<string>",
"ext": "<unknown>",
"gender": "M",
"geo": {
"accuracy": 123,
"city": "<string>",
"country": "<string>",
"ext": "<unknown>",
"ipservice": 1,
"lastfix": 1,
"lat": 123,
"lon": 123,
"metro": "<string>",
"region": "<string>",
"regionfips104": "<string>",
"type": 1,
"utcoffset": 123,
"zip": "<string>"
},
"id": "<string>",
"keywords": "<string>",
"yob": 32767
}
}Path Parameters
The ID of the ad unit.
Get from the advertising manager.
Body
RecoRequest is used for requesting a recommendation.
RecoRequest is used for requesting a recommendation.
App object for the current serving request.
Show child attributes
Show child attributes
Device object for the current serving request.
Show child attributes
Show child attributes
null
Site object for the current serving request.
Show child attributes
Show child attributes
User object for the current serving request.
Show child attributes
Show child attributes
{
"gender": "M",
"id": "account-187acvbvz",
"yob": 1988
}
Response
Successfully served recommendation
Recommended items.
Show child attributes
Show child attributes
Version of the SDK API.
Error code if the request failed.
Optional A2 specific extensions.
Token identifying this recommendation result, echoed back on tracking calls. Absent on error responses.
Echoed User object from the ad request.
Show child attributes
Show child attributes
Was this page helpful?
curl --request POST \
--url https://your_a2_service/app/v0/recommendation/{tagid} \
--header 'Content-Type: application/json' \
--data '
{
"app": {
"bundle": "<string>",
"domain": "<string>",
"name": "<string>",
"storeurl": "<string>",
"ver": "<string>"
},
"device": null,
"filter": "<unknown>",
"seed_item_id": "<string>",
"site": {
"domain": "<string>",
"mobile": true,
"name": "<string>",
"page": "<string>",
"ref": "<string>",
"search": "<string>"
},
"user": {
"gender": "M",
"id": "account-187acvbvz",
"yob": 1988
}
}
'import requests
url = "https://your_a2_service/app/v0/recommendation/{tagid}"
payload = {
"app": {
"bundle": "<string>",
"domain": "<string>",
"name": "<string>",
"storeurl": "<string>",
"ver": "<string>"
},
"device": None,
"filter": "<unknown>",
"seed_item_id": "<string>",
"site": {
"domain": "<string>",
"mobile": True,
"name": "<string>",
"page": "<string>",
"ref": "<string>",
"search": "<string>"
},
"user": {
"gender": "M",
"id": "account-187acvbvz",
"yob": 1988
}
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
app: {
bundle: '<string>',
domain: '<string>',
name: '<string>',
storeurl: '<string>',
ver: '<string>'
},
device: null,
filter: '<unknown>',
seed_item_id: '<string>',
site: {
domain: '<string>',
mobile: true,
name: '<string>',
page: '<string>',
ref: '<string>',
search: '<string>'
},
user: {gender: 'M', id: 'account-187acvbvz', yob: 1988}
})
};
fetch('https://your_a2_service/app/v0/recommendation/{tagid}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://your_a2_service/app/v0/recommendation/{tagid}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'app' => [
'bundle' => '<string>',
'domain' => '<string>',
'name' => '<string>',
'storeurl' => '<string>',
'ver' => '<string>'
],
'device' => null,
'filter' => '<unknown>',
'seed_item_id' => '<string>',
'site' => [
'domain' => '<string>',
'mobile' => true,
'name' => '<string>',
'page' => '<string>',
'ref' => '<string>',
'search' => '<string>'
],
'user' => [
'gender' => 'M',
'id' => 'account-187acvbvz',
'yob' => 1988
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://your_a2_service/app/v0/recommendation/{tagid}"
payload := strings.NewReader("{\n \"app\": {\n \"bundle\": \"<string>\",\n \"domain\": \"<string>\",\n \"name\": \"<string>\",\n \"storeurl\": \"<string>\",\n \"ver\": \"<string>\"\n },\n \"device\": null,\n \"filter\": \"<unknown>\",\n \"seed_item_id\": \"<string>\",\n \"site\": {\n \"domain\": \"<string>\",\n \"mobile\": true,\n \"name\": \"<string>\",\n \"page\": \"<string>\",\n \"ref\": \"<string>\",\n \"search\": \"<string>\"\n },\n \"user\": {\n \"gender\": \"M\",\n \"id\": \"account-187acvbvz\",\n \"yob\": 1988\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://your_a2_service/app/v0/recommendation/{tagid}")
.header("Content-Type", "application/json")
.body("{\n \"app\": {\n \"bundle\": \"<string>\",\n \"domain\": \"<string>\",\n \"name\": \"<string>\",\n \"storeurl\": \"<string>\",\n \"ver\": \"<string>\"\n },\n \"device\": null,\n \"filter\": \"<unknown>\",\n \"seed_item_id\": \"<string>\",\n \"site\": {\n \"domain\": \"<string>\",\n \"mobile\": true,\n \"name\": \"<string>\",\n \"page\": \"<string>\",\n \"ref\": \"<string>\",\n \"search\": \"<string>\"\n },\n \"user\": {\n \"gender\": \"M\",\n \"id\": \"account-187acvbvz\",\n \"yob\": 1988\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://your_a2_service/app/v0/recommendation/{tagid}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"app\": {\n \"bundle\": \"<string>\",\n \"domain\": \"<string>\",\n \"name\": \"<string>\",\n \"storeurl\": \"<string>\",\n \"ver\": \"<string>\"\n },\n \"device\": null,\n \"filter\": \"<unknown>\",\n \"seed_item_id\": \"<string>\",\n \"site\": {\n \"domain\": \"<string>\",\n \"mobile\": true,\n \"name\": \"<string>\",\n \"page\": \"<string>\",\n \"ref\": \"<string>\",\n \"search\": \"<string>\"\n },\n \"user\": {\n \"gender\": \"M\",\n \"id\": \"account-187acvbvz\",\n \"yob\": 1988\n }\n}"
response = http.request(request)
puts response.read_body{
"items": [
{
"catalog_id": "catalog-123",
"position": 0
},
{
"catalog_id": "catalog-234",
"position": 1
}
],
"tracking_token": "dXNlci0xMjN8ZjQ3YWMxMGJ8OWMzZTc3YTE",
"version": "0.1.0"
}{
"items": [
{
"catalog_id": "<string>",
"position": 123,
"score": 123
}
],
"version": "<string>",
"errorcode": "<string>",
"ext": "<unknown>",
"tracking_token": "<string>",
"user": {
"buyeruid": "<string>",
"ext": "<unknown>",
"gender": "M",
"geo": {
"accuracy": 123,
"city": "<string>",
"country": "<string>",
"ext": "<unknown>",
"ipservice": 1,
"lastfix": 1,
"lat": 123,
"lon": 123,
"metro": "<string>",
"region": "<string>",
"regionfips104": "<string>",
"type": 1,
"utcoffset": 123,
"zip": "<string>"
},
"id": "<string>",
"keywords": "<string>",
"yob": 32767
}
}{
"items": [
{
"catalog_id": "<string>",
"position": 123,
"score": 123
}
],
"version": "<string>",
"errorcode": "<string>",
"ext": "<unknown>",
"tracking_token": "<string>",
"user": {
"buyeruid": "<string>",
"ext": "<unknown>",
"gender": "M",
"geo": {
"accuracy": 123,
"city": "<string>",
"country": "<string>",
"ext": "<unknown>",
"ipservice": 1,
"lastfix": 1,
"lat": 123,
"lon": 123,
"metro": "<string>",
"region": "<string>",
"regionfips104": "<string>",
"type": 1,
"utcoffset": 123,
"zip": "<string>"
},
"id": "<string>",
"keywords": "<string>",
"yob": 32767
}
}"<string>"{
"items": [
{
"catalog_id": "<string>",
"position": 123,
"score": 123
}
],
"version": "<string>",
"errorcode": "<string>",
"ext": "<unknown>",
"tracking_token": "<string>",
"user": {
"buyeruid": "<string>",
"ext": "<unknown>",
"gender": "M",
"geo": {
"accuracy": 123,
"city": "<string>",
"country": "<string>",
"ext": "<unknown>",
"ipservice": 1,
"lastfix": 1,
"lat": 123,
"lon": 123,
"metro": "<string>",
"region": "<string>",
"regionfips104": "<string>",
"type": 1,
"utcoffset": 123,
"zip": "<string>"
},
"id": "<string>",
"keywords": "<string>",
"yob": 32767
}
}