Recommendations (Advanced)

The Advanced Recommendations API returns recommendation sets for a specified user. It differs from the basic GET route in that it offers support for multiple sections per call and additional filtering requirements.

🚧

Please note:

When you're ready to deploy this endpoint, remove 'test=true' from the URL. Otherwise, user metrics will not be recorded.

Request
{
    "sections": [
                 { 
                    "name": "entertainment_section",
                   "filters": [ // Articles or videos with "entertainment" keyword
                        {
                            "name": "resource-type",
                            "values": ["article", "video"]
                        },
                        {
                            "name": "keyword",
                            "values": ["entertainment"]
                        }
                    ],
                    "count": 5
                  },
                  {
                    "name": "news_articles",
                    "filters": [ // Articles with either "news" or "breaking news" keyword
                        {
                            "name": "resource-type",
                            "values": ["article"]
                        },
                        {
                            "name": "keyword",
                            "values": ["news", "breaking news"]
                        }
                    ],
                    "count": 5
                  }
                 ],
    "exclude": [ "article|1234", "video|5432" ],
    "seeds": [ "article|9987", "video|7765" ],
    "caller": "My Application",
    "campaign": "Weekly Newsletter",
  	"batch": "2016-02-29",
    "medium": "email",
    "segment": "2"
}
Results
{
	"data": {
    "rec-set-id": "820875ed-66e5-4a23-a9a7-fd611e2013f0",
		"sections": {
			"entertainment_section": {
				"recs": [
					{
						"click-url": "https://redirect.api.boomtrain.com/click/application/abc?r=article:1234&c=None&b=None&rd=http://example.com",
						"id": "1234",
						"props": {
							"author": "Dave Williams",
							"modDate": '2016-03-12T14:20:32+00:00',
							"pubDate": '2016-02-29T14:14:25+00:00',
							"keyword": "entertainment",
							"title": "All Day Holiday Movie Marathon Slated for Feb. 29"
						},
						"rec-id": "ab539ac5-da75-11e5-ae12-0a69b99457cf",
						"resource-type": "article",
						"thumbnail": "http://images.boomtrain.com/nPxlsbnUidapRiOPVDYew7h3gk1qo7m95OPmYdPe67Y.png"
					},
					// ...
				],
				"type": "personalized"
			},
			"news_article": {
				"recs": [
					{
						"click-url": "https://redirect.api.boomtrain.com/click/application/abc?r=article:0229&c=None&b=None&rd=http://example.com/2",
						"id": "0229",
						"props": {
							"author": "John Smith",
							"modDate": '2016-03-12T14:20:32+00:00',
							"pubDate": '2016-02-29T14:14:25+00:00',
							"keyword": "news",
							"title": "Rumblings in the Marianas Trench"
						},
						"rec-id": "ab539ac5-da75-11e5-ae12-0a69b99457cf",
						"resource-type": "article",
						"thumbnail": "http://images.boomtrain.com/EvA0Q1EjAgyK78AwUhzNqdq0WIt0oSXx6smKGv4hgc0.gif"
					},
					// ...
				],
				"type": "personalized"
			}
		},
		"view-pixel": "https://redirect.api.boomtrain.com/vp/site/MPYIlJ5wVbiAk/WKDz+eTt7tPvJn8diIBkjyf0PO9vEUSI155pgjju+XgdHpH0S8sVcrTntNZ2A1954wgyZ80A==?c=None&b=None&p=True&rt=None&rid=None&r=None&rsid=ae3ace96-e701-11e5-9ddd-12d5480515d7"
	}
}
{
  "errors": [
    {
      "message": "The requested URL was not found on the server.  If you entered the URL manually please check your spelling and try again.",
      "request_url": "http://recommendations.api.boomtrain.com/v1/feedbuzz/emailz/[email protected]",
      "status": 404
    }
  ]
}
{
  "errors": [
    {
      "message": "We had a reactor leak here now. Give us a few minutes to lock it down. Large leak, very dangerous.",
      "status": 500
    }
  ]
}

Section Specification

Each section in your request will contain the following fields:

name - The section name. (Note that both sections and filters have names).
count - The number of resources to return for the section.
filters - An array of zero or more filters to be applied to the section.

Filter Specification

For example, adding filters {"name":"resource-type","values":["articles"]} and {"name":"keywords","values":["dogs"]} would filter the section to articles with the "dogs" keyword.

Filters are specified as follows:

name - A string that indicates which field of your resource the filter will be applied to, e.g. "resource-type", "pubDate", "keywords".
operator - The operator for the filter. Filter operators allow you to specify relations between the filter values. Supported filters include:

OperatorValues AcceptedInterpretationExample
AFTERA single ISO-8601 Duration string.Can only be applied to timestamp fields such as pubDate and modDate or count/score/currency fields. Returns resources with a timestamp after the end of the provided duration, or values greater than or equal to the provided integer or floating point value for non-timestamp fields.{"name":"pubDate", "operator":"AFTER", "values":["-P7D"]} // pubDate after seven days ago.
{"name":"age", "operator":"AFTER", "values":[25]} // age greater than or equal to 25.
BEFOREA single ISO-8601 Duration string.Can only be applied to timestamp fields such as pubDate and modDate or count/score/currency fields. Returns resources with a timestamp before the beginning of the provided duration, or values less than the provided integer or floating point value for non-timestamp fields.{"name":"expDate", "operator":"BEFORE", "values":["P1D"], } // expDate before 1 days from now.
{"name":"age", "operator":"BEFORE", "values":[25], } //age less than 25.
BETWEENTwo ISO-8601 Duration strings.Can only be applied to timestamp fields such as pubDate and modDate. Returns resources with a timestamp after the first provided value and before the second provided value.{"name":"pubDate","operator":"BETWEEN", "values":["-P2D", "-P1D"]} // pubDate between 2 days ago and 1 day ago.
NOTAny number of strings.Returns results where the field does not match any of the provided values.{"name":"keywords", "operator":"NOT", "values":["dogs", "cats"]} // keywords contains neither dogs nor cats.
If no operator is specified, we check the fields for equality. For example:
  • The filter {"name":"keywords", "values":["dogs", "cats"]} will filter to resources that contain either "dogs" or "cats" as a keyword.
  • The filter {"name":"color", "values":["red"]} will filter to resources with the color field set to "red".

values - An array of strings, integers, or floating point numbers representing the fields of the resource to filter the recommendation to.

View Pixel Tracking

In order to provide metrics and data to improve Boomtrain's recommendation systems, the `view-pixel` returned in the result of this call should be impressed whenever these results are viewed by a user. This can be done by adding an invisible image pixel into the HTML body where the request is being shown. For example, <img src="view-pixel returned by this route" />.

Results

Note that the view-pixel should be rendered on each impression of a recommendation set in order to track views of recommendations.

As well, the click-url should be triggered upon click of any recommendation in order to track clicks for the purpose of evaluating performance.

Path Params
string
required

Unique identifier for your site.

string
required

URL path parameter. Indicates the type of identifier used to identify the person. Currently-supported identifier types are email, user_id, and bsin. A user's bsin can be obtained through the route documented at Get a Boomtrain Identifier for a Person

string
required

URL path parameter. Indicates the identifier for the person receiving recommendations.

boolean
required
Defaults to false

URL path parameter. If true, then just return resource id and resource type. Accepts any of t, true, y, yes, or 1 as true, all other values are treated as false.

boolean
required
Defaults to false

URL path parameter. If true then don't record recommendations. Accepts any of t, true, y, yes, or 1 as true, all other values are treated as false. Note that this value should NOT be set unless you are testing recommendations pre-deployment.

Body Params
string
Defaults to other

The medium making the request. Currently supported values include android, display, email, ios, mobile, web, other. If no value or a different value is specified, other will be used.

sections
array
required

Added to the body of the request. Each section object corresponds to a group of recommendations with a name, a count, and a specific set of filters. See "Section Specification" below for details on how to specify filters.

sections*
exclude
array of strings

Added to the body of the request. A list of resource_type|resource_id strings, representing resources to exclude from recommendations.

exclude
seeds
array of strings

Added to the body of the request. A list of resource_type|resource_id strings, representing a set of resources to base the recommendations on.

seeds
string

Added to the body of the request. Identifies the caller for the request.

string

Added to the body of the request. Identifies the campaign for which the recommendations are being requested, e.g. "Daily Newsletter" or "Product Page Sidebar"

string

Added to the body of the request. Allows for segmenting within campaigns. Can be used for A/B testing or grouping users.

string

Added to the body of the request. Identifies individual sends of one particular campaign.

Responses

Language
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json