POST /graph/silos

Personalized and Customizable Carousels of Data.



Imagine you want to present your Users with carousels of content, each highlighting different facets of personalized and recommended content.

Object Types

As illustrated, the User is shown 3 rows of suggestions. Each row is one Silo:

  • The first displays Movie and ShowSeries recommendations based on the User's Likes.
  • The second makes personalized Movie suggestions that are currently available to watch on a few Sources.
  • The third displays Movies from a Graph Lens -- a highly specific grouping of movies with a descriptive title like "B-Movie Comedies Set in Space".


Silos empower you to make an endless stream of carousels that engage your Users with highly specific and targeted content. The response looks like a two dimensional array of objects, where each of the inner arrays represents one cohesive set of Content (i.e., Horror Comedies on Netflix Instant).

Silos have a learning curve. Before you dive into how to create Silos, you must be comfortable working with Factors, Filters, and Components from our Hound Query Language. Silos build heavily on HQL and internally utilize the underlying services of Relate, Explore and Lookup.

The silo endpoint allows you to specify the types of silos that you would like to see on a page. Below we will break down the specific configurations that are available.

Types of Silos

Recommended For YouClassic Recommendations based off all Seed Data
ExploreBased on Popularity - does not use Seed Data
Based On ItemRecommendations based heavily on 1 item
Graph LensCurated sets of 3 traits that go well together recommended for the user.
Explore Graph LensCurated sets of 3 traits that go well together sorted by popularity
ContentRecommendations based on a curated set of titles
CollectionInject an editorial collection of content hand-generated by your editorial team

Silos are constructed as JSON and passed into the silos endpoint as the POST body. The Silos Language inherits some things from Factors, Filters, and Components, so go read-up if you're unfamiliar.

HQL JSON Parameters

idsList of content MHIDs that the user had a positive affinity for
filtersRequired object. See Filters. Blueprint level filters override the global filters.
componentsOptional Array. See Components.
pageSizeOptional Integer. Number of silos to be returned. See the Paging Info Object.
siloPageSizeNumber of titles per silo. See the Paging Info Object.
blueprintsList of Blueprints of the types of silos you would like returned.


Blueprints describe how to generate each of the silos in the returned result. You can mix and match blueprints and specify how they should be positioned in the response body and how they should repeat.

typeThe type of silo that you want to generate. One of: RecommendedForYou, Explore, BasedOnItem, GraphLens, ExploreGraphLens, Content, Collection.
positionsStatic indexes that the silo should appear in. Array of integers. Can NOT be used with probability.
probabilityHow likely it should be for this silo to appear in one of the remaining slots. Can NOT be used with positions.
filtersBlueprint specific filters. See Filters.
paramsType-specific blueprint parameters.

Blueprint Params

Each Blueprint type has a different set of params that control it.

nameTitle for the SiloStringMovies for You


nameTitle for the SiloStringTrending Movies

Based On Item

nameGeneratorTitle for the Silo that injects seed data in place of “$1”StringBecause You Watched $1

Explore Graph Lens

nameGeneratorTitle for the Silo that injects seed data in place of “$1”StringBecause You Watched $1

Graph Lens

No params.

Example One

"ids": [
"components": [
"name": "metadata"
"name": "primaryImage"
"name": "secondaryImage"
"blueprints": [
"type": "RecommendedForYou",
"params": {
"name": "Movies For You"
"filters": {
"returnType": {
"$eq": "Movie"
"type": "BasedOnItem",
"params": {
"nameGenerator": "Because you liked $1"