Get VMAP
Request a VMAP ad-break schedule spanning one or more ad breaks in a single call.
curl -X GET "https://avails.5centscdn.com/v1/vmap?publisher_id=8f2a1c3e-4b5d-4a6e-9f1a-2b3c4d5e6f7a&content_id=1024&placement=preroll&tags=sports%2Clive&category=3&device=3&device_ua=example_string&language=en&user_key=example_string&device_ip=203.0.113.10&continent_geoname_id=6255149&country_geoname_id=6252001&subdivision_1_geoname_id=5332921&subdivision_2_geoname_id=5391959&city_geoname_id=5391811&country=US®ion=NY&city=New%20York&transaction_id=8f2a1c3e-4b5d-4a6e-9f1a-2b3c4d5e6f7a&resolution=lazy&break=30%25%7Cmidroll%7C30%7Cbreak-1%7C4%7C5%7C30%7C35&content_duration_s=1800&skipoffset=5&skip_policy=example_string" \
-H "Content-Type: application/json"
import requests
import json
url = "https://avails.5centscdn.com/v1/vmap?publisher_id=8f2a1c3e-4b5d-4a6e-9f1a-2b3c4d5e6f7a&content_id=1024&placement=preroll&tags=sports%2Clive&category=3&device=3&device_ua=example_string&language=en&user_key=example_string&device_ip=203.0.113.10&continent_geoname_id=6255149&country_geoname_id=6252001&subdivision_1_geoname_id=5332921&subdivision_2_geoname_id=5391959&city_geoname_id=5391811&country=US®ion=NY&city=New%20York&transaction_id=8f2a1c3e-4b5d-4a6e-9f1a-2b3c4d5e6f7a&resolution=lazy&break=30%25%7Cmidroll%7C30%7Cbreak-1%7C4%7C5%7C30%7C35&content_duration_s=1800&skipoffset=5&skip_policy=example_string"
headers = {
"Content-Type": "application/json"
}
response = requests.get(url, headers=headers)
print(response.json())
const response = await fetch("https://avails.5centscdn.com/v1/vmap?publisher_id=8f2a1c3e-4b5d-4a6e-9f1a-2b3c4d5e6f7a&content_id=1024&placement=preroll&tags=sports%2Clive&category=3&device=3&device_ua=example_string&language=en&user_key=example_string&device_ip=203.0.113.10&continent_geoname_id=6255149&country_geoname_id=6252001&subdivision_1_geoname_id=5332921&subdivision_2_geoname_id=5391959&city_geoname_id=5391811&country=US®ion=NY&city=New%20York&transaction_id=8f2a1c3e-4b5d-4a6e-9f1a-2b3c4d5e6f7a&resolution=lazy&break=30%25%7Cmidroll%7C30%7Cbreak-1%7C4%7C5%7C30%7C35&content_duration_s=1800&skipoffset=5&skip_policy=example_string", {
method: "GET",
headers: {
"Content-Type": "application/json"
}
});
const data = await response.json();
console.log(data);
package main
import (
"fmt"
"net/http"
)
func main() {
req, err := http.NewRequest("GET", "https://avails.5centscdn.com/v1/vmap?publisher_id=8f2a1c3e-4b5d-4a6e-9f1a-2b3c4d5e6f7a&content_id=1024&placement=preroll&tags=sports%2Clive&category=3&device=3&device_ua=example_string&language=en&user_key=example_string&device_ip=203.0.113.10&continent_geoname_id=6255149&country_geoname_id=6252001&subdivision_1_geoname_id=5332921&subdivision_2_geoname_id=5391959&city_geoname_id=5391811&country=US®ion=NY&city=New%20York&transaction_id=8f2a1c3e-4b5d-4a6e-9f1a-2b3c4d5e6f7a&resolution=lazy&break=30%25%7Cmidroll%7C30%7Cbreak-1%7C4%7C5%7C30%7C35&content_duration_s=1800&skipoffset=5&skip_policy=example_string", nil)
if err != nil {
panic(err)
}
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
fmt.Println("Response Status:", resp.Status)
}
require 'net/http'
require 'json'
uri = URI('https://avails.5centscdn.com/v1/vmap?publisher_id=8f2a1c3e-4b5d-4a6e-9f1a-2b3c4d5e6f7a&content_id=1024&placement=preroll&tags=sports%2Clive&category=3&device=3&device_ua=example_string&language=en&user_key=example_string&device_ip=203.0.113.10&continent_geoname_id=6255149&country_geoname_id=6252001&subdivision_1_geoname_id=5332921&subdivision_2_geoname_id=5391959&city_geoname_id=5391811&country=US®ion=NY&city=New%20York&transaction_id=8f2a1c3e-4b5d-4a6e-9f1a-2b3c4d5e6f7a&resolution=lazy&break=30%25%7Cmidroll%7C30%7Cbreak-1%7C4%7C5%7C30%7C35&content_duration_s=1800&skipoffset=5&skip_policy=example_string')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Get.new(uri)
request['Content-Type'] = 'application/json'
response = http.request(request)
puts response.body
{}
{
"error": "Bad Request",
"message": "The request contains invalid parameters or malformed data",
"code": 400,
"details": [
{
"field": "email",
"message": "Invalid email format"
}
]
}
/v1/vmap
Target server for requests. Edit to use your own host.
Ad Manager project UUID. Scopes the request to a project. Missing or invalid value returns 400.
Content the break is attached to, matched against campaign content targeting allowlists.
Ad placement identifier.
IAB content-category ID, matched against campaign category targeting. Invalid value is ignored with a warning.
IAB device-type ID (1-8), matched against campaign device targeting. Out-of-range value is ignored with a warning.
User-Agent override, for SSAI proxies masking the player's real UA. Falls back to the request's User-Agent header.
Content/ad language targeting.
Frequency-capping / user correlation key.
Client IP override, used for GeoIP resolution and outbound forwarding. Falls back to X-Forwarded-For, then the connection's remote address.
Explicit geo-targeting override.
Explicit geo-targeting override.
Explicit geo-targeting override.
Explicit geo-targeting override.
Explicit geo-targeting override.
Text geo-targeting fallback, used when the geoname-id overrides are not supplied.
Text geo-targeting fallback.
Text geo-targeting fallback.
Correlator spanning the whole VMAP/pod chain. Auto-generated if absent and reused across every ad-break callback.
lazy returns a callback URL per break (resolved later against GET /v1/vast); eager inlines the ad data for every break in this response. Any other value returns 400.
One ad break, pipe-delimited: offset|type|max_duration_s|break_id|max_ads|min_ad_length|max_ad_length|fill_ceiling_seconds.
Only offset, type, and max_duration_s are required; trailing optional fields may be omitted.
1. offset - start / end / HH:MM:SS[.mmm] / SS[.mmm] / n% (required)
2. type - preroll / midroll / postroll (required)
3. max_duration_s - break fill target, seconds (required)
4. break_id - correlation id (optional; defaults to break-1, break-2, ... in order)
5. max_ads - per-break pod-size cap (optional; blank/0 = unspecified)
6. min_ad_length - per-ad minimum duration (optional; blank/0 = unspecified)
7. max_ad_length - per-ad maximum duration (optional; blank/0 = unspecified)
8. fill_ceiling_seconds - per-break overshoot ceiling (optional; blank/0 = unspecified)
Repeat this parameter once per break. At least one is required, else 400.
VoD asset duration, seconds. Used to resolve percentage-based offset values and to drop out-of-range breaks. Must be non-negative, else 400.
Same uniform ad-skip override as GET /v1/vast, resolved once for the whole call.
Same rule-based ad-skip override as GET /v1/vast, resolved once for the whole call.
Request Preview
Response
Response will appear here after sending the request
Query Parameters
Ad Manager project UUID. Scopes the request to a project. Missing or invalid value returns 400.
8f2a1c3e-4b5d-4a6e-9f1a-2b3c4d5e6f7aContent the break is attached to, matched against campaign content targeting allowlists.
1024IAB content-category ID, matched against campaign category targeting. Invalid value is ignored with a warning.
3IAB device-type ID (1-8), matched against campaign device targeting. Out-of-range value is ignored with a warning.
3User-Agent override, for SSAI proxies masking the player's real UA. Falls back to the request's User-Agent header.
Frequency-capping / user correlation key.
Client IP override, used for GeoIP resolution and outbound forwarding. Falls back to X-Forwarded-For, then the connection's remote address.
203.0.113.10Text geo-targeting fallback, used when the geoname-id overrides are not supplied.
USCorrelator spanning the whole VMAP/pod chain. Auto-generated if absent and reused across every ad-break callback.
8f2a1c3e-4b5d-4a6e-9f1a-2b3c4d5e6f7alazy returns a callback URL per break (resolved later against GET /v1/vast); eager inlines the ad data for every break in this response. Any other value returns 400.
lazyeagerOne ad break, pipe-delimited: offset|type|max_duration_s|break_id|max_ads|min_ad_length|max_ad_length|fill_ceiling_seconds.
Only offset, type, and max_duration_s are required; trailing optional fields may be omitted.
offset-start/end/HH:MM:SS[.mmm]/SS[.mmm]/n%(required)type-preroll/midroll/postroll(required)max_duration_s- break fill target, seconds (required)break_id- correlation id (optional; defaults tobreak-1,break-2, ... in order)max_ads- per-break pod-size cap (optional; blank/0 = unspecified)min_ad_length- per-ad minimum duration (optional; blank/0 = unspecified)max_ad_length- per-ad maximum duration (optional; blank/0 = unspecified)fill_ceiling_seconds- per-break overshoot ceiling (optional; blank/0 = unspecified)
Repeat this parameter once per break. At least one is required, else 400.
30%|midroll|30|break-1|4|5|30|35VoD asset duration, seconds. Used to resolve percentage-based offset values and to drop out-of-range breaks. Must be non-negative, else 400.
1800Same uniform ad-skip override as GET /v1/vast, resolved once for the whole call.
5Same rule-based ad-skip override as GET /v1/vast, resolved once for the whole call.
Responses
VMAP XML ad-break schedule.