Data model
Campaigns contain creatives. Every creative has a latestScanStatus.id, a scan ID. Call /scans/{scanId} on any scan ID to get its test results.
Display creatives are always flat: one creative, one scan. Video creatives can have additional layers (media files and variations). The structures below show how they are organized and which endpoints reveal each level.
Creative structures
Section titled “Creative structures”Display creative
Section titled “Display creative”All display types (hosted images, HTML5, tags) follow the same flat structure. One creative, one scan.
Display sourceType values include image, html5, tag-html5, tag-beacon, among others. The test set varies by type but the structure is always the same.
Hosted video
Section titled “Hosted video”Same flat structure as display. One file, one scan.
VAST without variations
Section titled “VAST without variations”The creative holds the VAST XML scan. Its media files each have their own video scan.
VAST with variations
Section titled “VAST with variations”Detected by nbVariations being present on the creative. The variations endpoint returns both the variation XML scan AND its child video scans, so there is no need to call /media-files.
Navigating the hierarchy
Section titled “Navigating the hierarchy”Starting from /campaigns/{campaignId}/creatives:
Key rules
Section titled “Key rules”/scans/{scanId}is the only endpoint that returns test results. Everything else is about discovering scan IDs.nbVariationson the creative determines the path. Only VAST creatives can have variations.- The variations detail endpoint includes media files. When using
/creatives/{id}/variations/{variationCreativeId}, the response contains both thevast-variationitem and allvast-child-videoitems. No need to call/media-filesseparately. - Every node has
latestScanStatus.id. Whether it’s a creative, a variation, or a media file: if it haslatestScanStatus.id, you can call/scans/{id}on it. - Display creatives are always flat. No variations, no media files. One scan covers everything.
Scan types
Section titled “Scan types”Tests are prefixed Test_Display_* or Test_Video_* depending on the campaign type.
Display tests
Section titled “Display tests”| Context | Example tests |
|---|---|
| Hosted image | AdDimensions, AnimationLength, Border, Filesize |
| Hosted HTML5 | AdDimensions, Audio, VisualStart, AnimationLength, Border, MouseClick, Filesize, TagLoadInitial, TagLoadSubload, Cpu, ExternalRequests, Connections, Cookies, Ssl, LocalStorage, CodeRules, FlashLso, AdVerificationTags, HeavyAdInterventions |
| HTML5 tag | AdDimensions, Audio, VisualStart, AnimationLength, MouseClick, LandingPage, ClickRedirects, TagLoadInitial, TagLoadSubload, Cpu, ExternalRequests, Connections, Cookies, Ssl, LocalStorage, GdprConsent, CodeRules, FlashLso, AdVerificationTags, HeavyAdInterventions |
| Tracking tag | AdDimensions, Audio, TagLoadInitial, TagLoadSubload, Cpu, ExternalRequests, Connections, Cookies, Ssl, LocalStorage, GdprConsent, FlashLso, AdVerificationTags, HeavyAdInterventions |
Video tests
Section titled “Video tests”| Context | Example tests |
|---|---|
| Hosted video | Resolution, Duration, TotalBitrate, FPS, Filesize, ContainerFormat, Codec, ScanType, AudioCodec, AudioAverage, AudioPeak, AudioSampleRate, ChromaSubsampling, Boxing |
| VAST creative | VastDurationDiscrepancy, VastRequiredMediaFiles, VastVersion, VastValidateXml, VastApiProperties, VastSkipDetection, VastCreativeCount, VastVariations, VastConnectionRules, VastNonHttps, AdVerificationTags |
| VAST variation | Same as VAST creative (per-variation) |
| VAST child video | Duration, FPS, Filesize, Codec, ScanType, AudioCodec, AudioAverage, AudioPeak, AudioSampleRate, VastPropertyDiscrepancy, ChromaSubsampling, Boxing |