Available forecast

Availability Forecast

Use an available forecast to estimate future inventory that is available or already booked. Available forecasts support two request shapes:

Forecast uses Kevel's priority ordering for each placement to compare existing booked ads with the requested priority. Opportunities count as available when the requested priority would beat the booked ad, or when no existing ad is booked for that opportunity. Opportunities count as booked when an existing ad would beat or tie the requested priority.

Bid prices affect available forecasts only when the request uses NewAds. A request with Priority or PriorityId does not include an ad or bid, so bid prices do not change the available and booked split. A request with NewAds evaluates the supplied ads with their flight priority and price. For auction priorities, the supplied ad's bid or price is part of the comparison against competing existing ads. If the supplied ad would outrank the competing ad, the opportunity can count as available. If the competing ad would still win, it counts as booked.

The following example uses Priority and Targeting:

{
  "Type": "available",
  "StartDate": "2023-04-10",
  "EndDate": "2023-04-15",
  "TimeZone": "UTC",
  "Targeting": {
    "FreqCapType": 1,
    "FreqCapDuration": 0,
    "FreqCap": 0,
    "Keywords": "dodge\ntruck",
    "ActiveKeywords": [
      "tacocat",
      "potato cat"
    ],
    "GeoTargeting": [
      {
        "CountryCode": "US",
        "Region": "NY",
        "MetroCode": "10001",
        "IsExclude": true
      }
    ],
    "DistanceTargeting": [
      {
        "Distance": 20,
        "Latitude": 41.40338,
        "Longitude": 2.17403,
        "StreetAddress": "1 Kevel Boulevard, Keveltown NY 27701"
      }
    ],
    "SiteZoneTargeting": [
      {
        "SiteId": 1234567,
        "ZoneId": 987654,
        "IsExclude": true
      }
    ],
    "CustomTargeting": [
      "string"
    ],
    "DayParting": [
      {
        "StartTime": "string",
        "EndDate": "string",
        "WeekDays": [
          "TH",
          "FR"
        ]
      }
    ],
    "TemplateValues": "{\"ctString\":\"A string goes here\",\"ctExternalFile\":\"http://cdn.com/ad.gif\"}"
  },
  "Priority": 0,
  "Params": {
    "Sampling": 1,
    "Responsiveness": 1,
    "GroupBy": [
      "$location.city"
    ]
  }
}

An example of the result would be:

{
    "resultStatus": "success",
    "result": {
        "total": {
            "available": {
                "impressions": 200792,
                "uniqueUsers": 75464
            },
            "booked": {
                "impressions": 0,
                "uniqueUsers": 0
            }
        },
        "grouped": [
            {
                "key": {
                    "$location.city": "New York"
                },
                "values": {
                    "available": {
                        "impressions": 200792,
                        "uniqueUsers": 75464
                    },
                    "booked": {
                        "impressions": 0,
                        "uniqueUsers": 0
                    }
                }
            }
        ]
    },
    "id": "27db30f3-3ff8-4a75-b91b-6e20e0553cb2",
    "status": "finished",
    "progress": 100.0,
    "desc": "Forecast is finished"
}

The total amount of impressions are the sum of the available and the booked (the ones reserved for other campaigns).

Interpreting available forecast numbers

An available forecast can use either targeting criteria or NewAds. The request input determines what the result inner fields mean.

Forecast Explorer builds available forecast requests with PriorityId and Targeting, so its results follow the targeting criteria interpretation below.

Yield Forecast's all-inventory and ad-product trigger endpoints, as well as the Forecast availability widget, build available forecast requests with NewAds, so their results follow the NewAds interpretation below.

Using targeting criteria

A request using targeting criteria asks: "At this targeting and priority level, how many matching future opportunities are not already held by ads that would beat or tie this priority?"

The request does not include an ad. Matching opportunities count toward available when they are unfilled or held by existing ads that the requested priority would beat. Existing ads that would beat or tie the requested priority count toward booked.

Important consequences:

These numbers are useful when you want a broad view of matching opportunities at a priority level.

Using NewAds

A request using NewAds asks: "If these ads existed, how many opportunities are projected to be available for them to win?"

The forecast considers the supplied NewAds along with the ads already running in the network.

Important consequences:

The response for this variant also includes an inventory object that contains: