> For the complete documentation index, see [llms.txt](https://docs.adsecure.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.adsecure.com/features/vast.md).

# VAST

AdSecure now supports the processing of VAST XML files to ensure compliance with resource guidelines. VAST (Video Ad Serving Template) is an XML-based format used to load advertisements into video players. These ads can take the form of images, videos, or other media types. AdSecure analyzes the content within the VAST XML to verify that all resources adhere to the specified guidelines, including checking for unauthorized cookie drops or other compliance issues.

## What We Check For

The primary goal of processing VAST XML files is to detect if cookies are being set before user consent is obtained. We specifically search for the presence of the Set-Cookie header within the HTTP responses of all resources referenced in the VAST XML. By analyzing these headers, AdSecure ensures that no cookies are being dropped in violation of consent guidelines. A detailed list of all the elements we examine is provided in the following section.

## VAST Schema elements

In the process of analyzing VAST XML files, AdSecure examines various elements within the schema to ensure compliance. Each element in the VAST XML may reference resources that need to be checked for unauthorized cookie drops or other violations. Below is a detailed list of the elements that are scrutinized during the analysis, ensuring that every resource adheres to the required guidelines. AdSecure supports the processing of VAST versions 3 and 4, ensuring compliance across these widely-used formats.

* VAST.Ad.Wrapper.Error
* VAST.Ad.Wrapper.Impression
* VAST.Ad.Wrapper.VASTAdTagURI
* VAST.Ad.Wrapper.AdVerifications.Verification.JavaScriptResource
* VAST.Ad.Wrapper.AdVerifications.Verification.ViewableImpression
* VAST.Ad.Wrapper.ViewableImpression.Viewable
* VAST.Ad.Wrapper.ViewableImpression.NotViewable
* VAST.Ad.Wrapper.ViewableImpression.ViewUndetermined
* VAST.Ad.Wrapper.Creatives.Creative.Error
* VAST.Ad.Wrapper.Creatives.Creative.Linear.TrackingEvents.Tracking
* VAST.Ad.Wrapper.Creatives.Creative.Linear.Icons.Icon.IconClicks.IconClickThrough
* VAST.Ad.Wrapper.Creatives.Creative.Linear.Icons.Icon.IconClicks.IconClickTracking
* VAST.Ad.Wrapper.Creatives.Creative.Linear.Icons.Icon.IconViewTracking
* VAST.Ad.Wrapper.Creatives.Creative.NonLinearAd.NonLinear.StaticResource
* VAST.Ad.Wrapper.Creatives.Creative.NonLinearAd.NonLinear.IFrameResource
* VAST.Ad.Wrapper.Creatives.Creative.NonLinearAd.NonLinear.TrackingEvents.Tracking
* VAST.Ad.Wrapper.Creatives.Creative.NonLinearAd.NonLinear.Error
* VAST.Ad.Wrapper.Creatives.Creative.CompanionAds.Companion.StaticResource
* VAST.Ad.Wrapper.Creatives.Creative.CompanionAds.Companion.IFrameResource
* VAST.Ad.Wrapper.Creatives.Creative.CompanionAds.Companion.TrackingEvents.Tracking
* VAST.Ad.Wrapper.Creatives.Creative.CompanionAds.Companion.Error
* VAST.Ad.InLine.AdVerifications.Verification.JavaScriptResource
* VAST.Ad.InLine.AdVerifications.Verification.ViewableImpression
* VAST.Ad.InLine.Error
* VAST.Ad.InLine.Impression
* VAST.Ad.InLine.Survey
* VAST.Ad.InLine.Creatives.Creative.Error
* VAST.Ad.InLine.Creatives.Creative.Linear.TrackingEvents.Tracking
* VAST.Ad.InLine.Creatives.Creative.Linear.Icons.Icon.IconClicks.IconClickThrough
* VAST.Ad.InLine.Creatives.Creative.Linear.Icons.Icon.IconClicks.IconClickTracking
* VAST.Ad.InLine.Creatives.Creative.Linear.Icons.Icon.IconViewTracking
* VAST.Ad.InLine.Creatives.Creative.NonLinearAd.NonLinear.StaticResource
* VAST.Ad.InLine.Creatives.Creative.NonLinearAd.NonLinear.IFrameResource
* VAST.Ad.InLine.Creatives.Creative.NonLinearAd.NonLinear.TrackingEvents.Tracking
* VAST.Ad.InLine.Creatives.Creative.NonLinearAd.NonLinear.Error
* VAST.Ad.InLine.Creatives.Creative.CompanionAds.Companion.StaticResource
* VAST.Ad.InLine.Creatives.Creative.CompanionAds.Companion.IFrameResource
* VAST.Ad.InLine.Creatives.Creative.CompanionAds.Companion.TrackingEvents.Tracking
* VAST.Ad.InLine.Creatives.Creative.CompanionAds.Companion.Error
* VAST.Ad.InLine.ViewableImpression.Viewable
* VAST.Ad.InLine.ViewableImpression.NotViewable
* VAST.Ad.InLine.ViewableImpression.ViewUndetermined

## Restrictions

When processing VAST XML files, AdSecure enforces certain restrictions to ensure efficient and reliable analysis:

#### 1. Resource Depth Limit

VAST XML files can reference other VAST XML files, creating a chain of resources. AdSecure follows these chains but will stop processing after reaching 10 levels of depth. This prevents excessive resource consumption and potential overloading of the system.

#### 2. Redirect Limit

For each resource found within the VAST XML, AdSecure allows up to 10 redirects. If a resource redirects more than 10 times, the processing will stop, ensuring the analysis remains manageable and within scope.

#### 3. Only static content can be processed

AdSecure’s VAST XML processing tool is designed to analyze and validate static content such as XML and HTML. However, it does not support the execution of JavaScript. This means that any content or behavior on a page that is dynamically generated or modified through JavaScript cannot be detected or evaluated by the system.

## How to start a VAST check

There are several ways to start analysing VAST XML files.

### Alerts

To receive notifications when cookies are detected during the processing of VAST tags, you can configure an alert rule. This allows you to stay informed of any compliance issues in real-time. To set this up, go to the Alert Rules page and locate the `VAST Cookie Detection` option under the `User Advisory` section. Once enabled, you’ll automatically receive alerts whenever cookies are found in your VAST content, helping you address potential issues quickly and efficiently.

### Via our App

You can run VAST analyses in the app in two ways:

* **Quick Analysis**: For a fast, on-demand check of individual VAST tags, you can enable `VAST Cookie Detection` directly from the Analysis tab in your user interface. This option is perfect for generating immediate reports on a specific tag without needing to create a full project.
* **Project-Based Monitoring**: For more comprehensive, continuous monitoring, you can enable `VAST Cookie Detection` when setting up a project in the Projects section of the app. This is ideal for frequent checks on multiple VAST tags, ensuring that all your ad content is regularly evaluated for compliance over time.

### Via our API

You can also run VAST Cookie Detection through our API, providing more flexibility and integration with your own systems. The process is similar to initiating an analysis for a standard website, with the key difference being that you must set the `preset` parameter to `VAST_COOKIE_DETECTION`. This ensures the API triggers the correct analysis for detecting cookies in VAST tags. For detailed instructions on how to implement this, please refer to our API documentation, where you’ll find all the necessary information to seamlessly integrate this feature into your workflow.

```graphql
mutation createAnalyses($input: CreateAnalysesMutationInput!) {
    createAnalyses(input: $input) {
        analyses {
            id
            __typename
        }
    }
}
```

```json
{
  "input": {
    "name": "VAST", // Name of the Analysis
    "content": "https://example.com/vast.xml", // URL of the VAST XML to scan
    "devices": ["windows10_chrome"], // Name of the device to use
    "locations": [
      { "country": "USA", "type": "STANDARD", "provider": "OTHER" }
    ], // Location of from where to scan
    "preset": "VAST_COOKIE_DETECTION" // Needs to be VAST_COOKIE_DETECTION
  }
}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.adsecure.com/features/vast.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
