Daily player report
Views, plays, retention, clicks and sales of a player, day by day, in one request
POST /sessions/stats_by_day returns one row per day with everything a performance report needs: views, plays, how far people watched, how many reached the pitch, clicks and sales. This guide builds a weekly report for one player.
You need the player's ID. If you don't have it, find it first.
Request the days
curl -X POST 'https://analytics.vturb.com/sessions/stats_by_day' \
-H "X-Api-Token: $VTURB_API_TOKEN" \
-H 'X-Api-Version: v1' \
-H 'User-Agent: my-integration/1.0' \
-H 'Content-Type: application/json' \
-d '{
"player_id": "64a5c8072e6fd10009828db2",
"start_date": "2026-09-01 00:00:00",
"end_date": "2026-09-07 23:59:59",
"timezone": "America/Sao_Paulo"
}'start_dateandend_dateare required, writtenYYYY-MM-DD HH:MM:SSand read intimezone. Withouttimezonethey are read in UTC, and the days are cut at UTC midnight.video_durationandpitch_time, in seconds, are optional. Without them, or with0, the API uses the length of the player's video and the pitch time set on the player. Send them to measure against something else, such as a pitch you are about to move.- When the player has no pitch time and you send none, the pitch is second 0: every session reaches it, and
over_pitch_rateis 100.
Read the response
Rows come in date order and start no earlier than the day before the player was created. From there, a day without activity still gets its row, with zeros.
[
{
"date_key": "2026-09-01",
"total_viewed": 1530,
"total_viewed_session_uniq": 1310,
"total_viewed_device_uniq": 1201,
"total_started": 702,
"total_started_session_uniq": 600,
"total_started_device_uniq": 540,
"total_finished": 98,
"total_finished_session_uniq": 90,
"total_finished_device_uniq": 85,
"total_clicked": 61,
"total_clicked_session_uniq": 52,
"total_clicked_device_uniq": 49,
"engagement_rate": "38.47",
"total_over_pitch": 160,
"total_under_pitch": 380,
"over_pitch_rate": "29.62",
"play_rate": "44.96",
"total_conversions": 27,
"overall_conversion_rate": 5,
"total_amount_usd": 0,
"total_amount_brl": 537300,
"total_amount_eur": 0
}
]Each count comes three ways: every event (total_viewed), unique sessions (_session_uniq) and unique devices (_device_uniq).
| Field | What it measures |
|---|---|
total_viewed* | Views: the player was loaded on the page |
total_started* | Plays: the viewer pressed play |
total_finished* | The video was watched to the end |
total_clicked* | Clicks on the player's calls to action that take the viewer out of the page |
play_rate | The share of unique views that pressed play: total_started_device_uniq ÷ total_viewed_device_uniq × 100 |
engagement_rate | How far people watched, on average, as a share of video_duration |
total_over_pitch, total_under_pitch | Sessions that reached pitch_time, and those that left before it |
over_pitch_rate | Pitch retention: the share of sessions that reached the pitch |
total_conversions | Sessions with an initial sale credited to the player |
overall_conversion_rate | Sales per unique play: total_conversions ÷ total_started_device_uniq × 100 |
total_amount_usd, _brl, _eur | The amount sold in each currency, as an integer in cents (537300 is 5,373.00). It adds up every purchase credited to the player, order bumps included, not only the initial sales of total_conversions |
Rates are percentages truncated, not rounded, to two decimals. engagement_rate, over_pitch_rate and play_rate come as strings, such as "29.62"; overall_conversion_rate comes as a number. Sales and their amounts fall on the day of the click that led to them.
Add the period total
For the summary line of the report, POST /sessions/stats takes the same body and returns one object with the same fields, without date_key, for the whole range. Use it instead of adding the days up: rates and unique counts cannot be summed across days.
Keep it within your quota
Each request counts against your plan's query quota. A daily report per player is one request; for many players, spread the requests out and check GET /quota/usage when you are near the limit.
Next: see where viewers leave and what happens at the pitch, or compare the traffic sources behind these numbers.