Using dimensions

Dimensions split the filtered mentions into buckets. They are used by Mention Analyze only (POST /projects/{project_id}/mentions/_analyze).

For a visual introduction, see the Analytics introduction. The Dimensions reference lists every supported type.

What a dimension does#

A dimension groups mentions that share a value: one bucket per country, per week, per sentiment, and so on.

dimensions is a list. The first object is the outer split. Each extra dimension subdivides those buckets into sub-buckets.

The following request first splits by month, then splits each month by sentiment, and counts mentions in every bucket:

Date then sentiment
{
    "filters": {},
    "dimensions": [
        {
            "type": "date",
            "interval": "month"
        },
        {
            "type": "sentiment"
        }
    ],
    "metrics": [
        {
            "type": "volume"
        }
    ]
}

The request gives the following (truncated) response:

Response (date then sentiment)
{
    "result": {
        "values": {
            "volume": 105323
        },
        "buckets": [
            {
                "id": "2026-01-01T00:00:00Z",
                "type": "date",
                "values": {
                    "volume": 19531
                },
                "buckets": [
                    {
                        "id": "positive",
                        "type": "sentiment",
                        "values": {
                            "volume": 8278
                        }
                    }
                    // other sentiment buckets...
                ]
            },
            {
                "id": "2026-02-01T00:00:00Z",
                "type": "date",
                "values": {
                    "volume": 17955
                },
                "buckets": [
                    {
                        "id": "positive",
                        "type": "sentiment",
                        "values": {
                            "volume": 7772
                        }
                    }
                    // other sentiment buckets...
                ]
            }
            // other month buckets...
        ]
    }
}

The first dimension groups mentions by month, which can be seen by looking at the first level of the response's buckets array. This can be interpreted as a table with one row per month:

Dimension 1: month Metric 1: volume
(all mentions) 105323
January 19531
February 17955
… …

The second dimension (second level of buckets) splits each month by sentiment. In the table, this is akin to splitting each month row into sentiment sub-rows:

Dimension 1: month Dimension 2: sentiment Metric 1: volume
(all mentions) 105323
January (any sentiment) 19531
positive 8278
neutral 4875
unassigned 4355
negative 2023
February (any sentiment) 17955
positive 7772
… …

Order of dimensions#

The order in the list is the nesting order. Swap the two objects and each sentiment is split by month:

Sentiment then date
{
    "dimensions": [
        {
            "type": "sentiment"
        },
        {
            "type": "date",
            "interval": "month"
        }
    ],
    "metrics": [
        {
            "type": "volume"
        }
    ]
}
Response (sentiment then date)
{
    "result": {
        "values": {
            "volume": 105323
        },
        "buckets": [
            {
                "id": "positive",
                "type": "sentiment",
                "values": {
                    "volume": 48200
                },
                "buckets": [
                    {
                        "id": "2026-01-01T00:00:00Z",
                        "type": "date",
                        "values": {
                            "volume": 8278
                        }
                    },
                    {
                        "id": "2026-02-01T00:00:00Z",
                        "type": "date",
                        "values": {
                            "volume": 7772
                        }
                    }
                    // other month buckets...
                ]
            }
            // other sentiment buckets...
        ]
    }
}
Dimension 1: sentiment Dimension 2: month Metric 1: volume
(all mentions) 105323
positive (any month) 48200
January 8278
February 7772
neutral (any month) 26000
January 4875
… …

More dimensions#

Adding an extra dimension is similar to adding another level of buckets, or in our table analogy, adding one more level of sub-rows.

There is no limit to the number of dimensions, however there is a limit to the total number of buckets that can be returned in an analytics request. Since each level multiplies the number of buckets, adding more dimensions can exponentially increase the total number of buckets returned. If you hit an error, try reducing the number of dimensions or the size of each dimension.

Dimensions array format#

dimensions is a JSON array: each item names the dimension in a type field.

Field Required Default Description
type yes Which dimension to run. See the catalog.
name no Optional label in the response. Date, Terms, and Semantics only. Defaults to type.

These two objects are equivalent. The response bucket type is country in both cases:

name omitted
{
    "type": "country"
}
name set to type
{
    "type": "country",
    "name": "country"
}

Set name to relabel the dimension in the response. The request type stays date (monthly buckets). Each response bucket copies that label into its type field:

Custom name
{
    "type": "date",
    "interval": "month",
    "name": "month"
}
Response bucket
{
    "id": "2026-01-01T00:00:00Z",
    "type": "month",
    "values": {
        "volume": 19531
    }
}

This request groups mentions by country and keeps the 10 most frequent countries:

A typical dimension
{
    "type": "country",
    "size": 10
}

Always send type on every dimension object. Filters and dimensions reuse the same identifiers (country, sentiment, …), but the JSON shape differs: a filter puts the identifier in the key, a dimension puts it in type.

country as a filter and as a dimension:

Filter (a key)
{
    "filters": {
        "country": {"values": ["USA"]}
    }
}
Dimension (a type)
{
    "dimensions": [
        {"type": "country"}
    ]
}

Dimension types#

Date

The date dimension buckets mentions by publication date.

Field Required Default Description
interval no week Calendar interval: day, week, month, year.

Monthly buckets on the publication date:

Monthly buckets
{
    "type": "date",
    "interval": "month"
}

If you omit interval, buckets are weeks, not days or months.

Bucket ids are ISO-8601 timestamps at the start of each interval, for example 2026-01-01T00:00:00Z for a month.

Terms

Terms dimensions group mentions by each distinct value of a field and keep those that match the most mentions (the top 10 by default, see size).

These fields apply to every type marked Terms in the Dimensions reference (country, hashtag, sentiment, language, …). They do not apply to date (Date), to named_entity and part_of_speech (Semantics), or to the Filters types below.

Field Required Default Description
size no 10 Maximum number of buckets (the most frequent values).
include no Keep only these bucket ids.
exclude no Drop these bucket ids.
min_doc_count no 1 Hide buckets with fewer mentions than this.
missing no If set, mentions with no value go into a bucket with this id. Otherwise they are omitted.

Keep only the United States and France, even if other countries would rank higher:

Only these countries
{
    "type": "country",
    "include": ["USA", "FRA"]
}

Semantics

named_entity and part_of_speech behave like Terms, with one extra field.

Projects hide named entities and parts of speech that would clutter a chart: noisy or low-value values, the project's own brand when it dominates the ranking, and similar. That list lives in Synthesio project settings.

By default (ignore_excluded_terms omitted or false), those values do not appear as buckets, so the ranking matches the Synthesio UI. Set it to true when you want the raw top values, including what the project hid (request exclude still applies).

If the project hides Ipsos and that entity matches many mentions:

  • false: no Ipsos bucket
  • true: an Ipsos bucket can appear
Field Required Default Description
ignore_excluded_terms no false false: hide values from the project list. true: ignore that list and only apply request exclude.

They also accept size, include, exclude, min_doc_count, and missing.

Named entities, including values the project would normally hide:

Named entities, ignoring project exclusions
{
    "type": "named_entity",
    "size": 20,
    "ignore_excluded_terms": true
}

Filters-type dimensions

A few types (age_range, named_entity_category, noise_reducer, part_of_speech_meta_category, publisher_category, publisher_meta_category, social_vs_mainstream) use a fixed set of buckets rather than the most frequent values of a field.

Field Required Default Description
size no 10 Maximum number of buckets.
include no Keep only these bucket ids.
exclude no Drop these bucket ids.

They do not accept name, min_doc_count, or missing.

social_vs_mainstream splits mentions into social platforms (Facebook, X, Instagram, …) versus mainstream media (news, press). Typical bucket ids are social and mainstream.

Social vs mainstream
{
    "type": "social_vs_mainstream"
}

See also#

See Complete example for a full _analyze request with filters and metrics, and the Dimensions reference for every type.