curl --request GET \
--url https://api.hakumedia.ai/v2/reports/forecast/vast/channel \
--header 'Authorization: <api-key>'const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://api.hakumedia.ai/v2/reports/forecast/vast/channel', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.hakumedia.ai/v2/reports/forecast/vast/channel"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.hakumedia.ai/v2/reports/forecast/vast/channel",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}{
"object": "vast_channel_forecast",
"url": "/v2/reports/forecast/vast/channel",
"data": {
"confidence": "moderate",
"confidence_reasons": [
{
"reason": "The placement forecast estimate may not be accurate because of poorly defined platform targets."
}
],
"impressions_projected": {
"total": 11400,
"daily_breakdown": [
{
"date": "2026-04-15",
"impressions": 380
}
]
},
"competing_ads": {
"campaigns": [
{
"id": 10509,
"placement_id": 88321,
"name": "Spring Video Campaign",
"type": "campaign",
"vast_zone_id": 5001,
"vast_channel_id": null,
"start_at": "2025-01-01T00:00:00+00:00",
"end_at": "2025-03-31T23:59:59+00:00",
"projected_impressions": 4500,
"priority": "standard",
"delivery_pacing": "default",
"serve_method": "weight",
"weight": 1,
"cpm": 0,
"quota_lifetime": 0,
"quota_daily": 0,
"platform_target_id": null,
"geo_target_id": null
}
],
"ad_items": [
{
"id": 520518081,
"placement_id": 88322,
"name": "Pre-roll 30s",
"type": "ad_item",
"vast_zone_id": 5001,
"vast_channel_id": null,
"start_at": "2025-01-01T00:00:00+00:00",
"end_at": "2025-03-31T23:59:59+00:00",
"projected_impressions": 2800,
"priority": "standard",
"delivery_pacing": "default",
"serve_method": "weight",
"weight": 1,
"cpm": 0,
"quota_lifetime": 0,
"quota_daily": 0,
"platform_target_id": null,
"geo_target_id": null
}
]
}
}
}Retrieve VAST Channel Forecast Stats
Retrieve a forecast of daily projected impressions for a proposed placement across all zones in a VAST channel over a future date range. The forecast aggregates results from each zone in the channel and accounts for existing competing placements, targeting, and delivery settings. Requires the VAST and Channels features to be enabled.
curl --request GET \
--url https://api.hakumedia.ai/v2/reports/forecast/vast/channel \
--header 'Authorization: <api-key>'const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://api.hakumedia.ai/v2/reports/forecast/vast/channel', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.hakumedia.ai/v2/reports/forecast/vast/channel"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.hakumedia.ai/v2/reports/forecast/vast/channel",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}{
"object": "vast_channel_forecast",
"url": "/v2/reports/forecast/vast/channel",
"data": {
"confidence": "moderate",
"confidence_reasons": [
{
"reason": "The placement forecast estimate may not be accurate because of poorly defined platform targets."
}
],
"impressions_projected": {
"total": 11400,
"daily_breakdown": [
{
"date": "2026-04-15",
"impressions": 380
}
]
},
"competing_ads": {
"campaigns": [
{
"id": 10509,
"placement_id": 88321,
"name": "Spring Video Campaign",
"type": "campaign",
"vast_zone_id": 5001,
"vast_channel_id": null,
"start_at": "2025-01-01T00:00:00+00:00",
"end_at": "2025-03-31T23:59:59+00:00",
"projected_impressions": 4500,
"priority": "standard",
"delivery_pacing": "default",
"serve_method": "weight",
"weight": 1,
"cpm": 0,
"quota_lifetime": 0,
"quota_daily": 0,
"platform_target_id": null,
"geo_target_id": null
}
],
"ad_items": [
{
"id": 520518081,
"placement_id": 88322,
"name": "Pre-roll 30s",
"type": "ad_item",
"vast_zone_id": 5001,
"vast_channel_id": null,
"start_at": "2025-01-01T00:00:00+00:00",
"end_at": "2025-03-31T23:59:59+00:00",
"projected_impressions": 2800,
"priority": "standard",
"delivery_pacing": "default",
"serve_method": "weight",
"weight": 1,
"cpm": 0,
"quota_lifetime": 0,
"quota_daily": 0,
"platform_target_id": null,
"geo_target_id": null
}
]
}
}
}Authorizations
API key en el header Authorization: Basic TU_API_KEY. La key va tal cual, sin codificar en base64. Las credenciales se entregan al comenzar la integración.
Query Parameters
The ID of the VAST channel for which the forecast is to be calculated.
The priority of the proposed placement. Controls which placements are served over others. Must be one of house, bulk, network, standard, or sponsorship.
The delivery pacing of the proposed placement. Must be default or smooth. Default delivery serves impressions as quickly as possible. Smooth delivery will evenly serve ads based on the placement's lifetime dates and quotas. NOTE: Smooth delivery requires the Smooth Delivery feature to be enabled.
Whether the proposed placement is served using a weight-based (weight) or auction-based (auction) system. Must be one of weight or auction. Required when delivery_pacing is default. NOTE: Auction-based serving requires the Serve Method Option feature to be enabled.
A positive integer used to compute the probability of serving the proposed placement relative to others. Only applicable when serve_method is weight. Defaults to 1.
Cost per 1,000 impressions. Required when serve_method is auction.
The start date of the forecast window, in YYYY-MM-DD format (e.g. 2026-04-15). Must be a future date.
The end date of the forecast window, in YYYY-MM-DD format (e.g. 2026-04-30). Must be after start_date.
The maximum number of impressions to serve over the lifetime of the proposed placement. Required when delivery_pacing is smooth.
The maximum number of impressions to serve per day for the proposed placement.
The ID of a geographic target to apply to the proposed placement. Defaults to null (no geographic targeting). Requires the Geo Targeting feature to be enabled.
The ID of a platform target to apply to the proposed placement. Defaults to null (no platform targeting). Requires the Platform Targeting feature to be enabled.
A JSON-encoded string representing the data key targeting configuration for the proposed placement. Defaults to null (no data key targeting). Requires the Data Key Targeting feature to be enabled.