Send an API request

After you complete the prerequisites, generate the OAuth 2.0 credentials, and configure your client, you can use the following code samples to create and retrieve a Bid Manager API reporting query.

For a full list of Bid Manager API methods, see the reference documentation.

Create a query

Here's an example of how to create a Display & Video 360 reporting query:

Java

// Display name of the query to create.
String displayName = display-name;

// Advertiser ID and campaign ID by which to filter report data.
String advertiserId = advertiser-id;
String campaignId = campaign-id;

// Create the query structure.
Query query = new Query();

// Build and set the metadata object.
QueryMetadata metadata = new QueryMetadata();
metadata.setTitle(displayName);
metadata.setDataRange(new DataRange().setRange("LAST_7_DAYS"));
metadata.setFormat("CSV");
query.setMetadata(metadata);

// Build the parameters object.
Parameters parameters = new Parameters();
parameters.setType("STANDARD");

// Build and assign list of standard reporting dimensions to parameters object.
ArrayList<String> dimensions = new ArrayList<String>();
dimensions.add("FILTER_ADVERTISER_NAME");
dimensions.add("FILTER_ADVERTISER");
dimensions.add("FILTER_ADVERTISER_CURRENCY");
dimensions.add("FILTER_INSERTION_ORDER_NAME");
dimensions.add("FILTER_INSERTION_ORDER");
dimensions.add("FILTER_LINE_ITEM_NAME");
dimensions.add("FILTER_LINE_ITEM");
parameters.setGroupBys(dimensions);

// Build a list of filters.
ArrayList<FilterPair> filters = new ArrayList<FilterPair>();
filters.add(new FilterPair().setType("FILTER_ADVERTISER").setValue(advertiserId));
filters.add(new FilterPair().setType("FILTER_MEDIA_PLAN").setValue(campaignId));

// Set filters in parameters object.
parameters.setFilters(filters);

// Build and assign list of standard reporting metrics to parameters object.
ArrayList<String> metrics = new ArrayList<String>();
metrics.add("METRIC_IMPRESSIONS");
metrics.add("METRIC_BILLABLE_IMPRESSIONS");
metrics.add("METRIC_CLICKS");
metrics.add("METRIC_CTR");
metrics.add("METRIC_TOTAL_CONVERSIONS");
metrics.add("METRIC_LAST_CLICKS");
metrics.add("METRIC_LAST_IMPRESSIONS");
metrics.add("METRIC_REVENUE_ADVERTISER");
metrics.add("METRIC_MEDIA_COST_ADVERTISER");
parameters.setMetrics(metrics);

// Set parameters object in query.
query.setParams(parameters);

// Build and set the schedule object.
QuerySchedule schedule = new QuerySchedule();
schedule.setFrequency("ONE_TIME");
query.setSchedule(schedule);

// Create the query.
Query queryResponse = service.queries().create(query).execute();

// Log query creation.
System.out.printf("Query %s was created.%n", queryResponse.getQueryId());

Python

# Display name of the query to create.
display_name = display-name

# Advertiser ID and campaign ID by which to filter report data.
advertiser_id = advertiser-id
campaign_id = campaign-id

# Build query object with basic dimension and metrics values.
query_obj = {
    "metadata": {
        "title": display_name,
        "dataRange": {"range": "LAST_7_DAYS"},
        "format": "CSV",
    },
    "params": {
        "type": "STANDARD",
        "groupBys": [
            "FILTER_ADVERTISER_NAME",
            "FILTER_ADVERTISER",
            "FILTER_ADVERTISER_CURRENCY",
            "FILTER_INSERTION_ORDER_NAME",
            "FILTER_INSERTION_ORDER",
            "FILTER_LINE_ITEM_NAME",
            "FILTER_LINE_ITEM",
        ],
        "filters": [
            {"type": "FILTER_ADVERTISER", "value": advertiser_id},
            {"type": "FILTER_MEDIA_PLAN", "value": campaign_id}
        ],
        "metrics": [
            "METRIC_IMPRESSIONS",
            "METRIC_BILLABLE_IMPRESSIONS",
            "METRIC_CLICKS",
            "METRIC_CTR",
            "METRIC_TOTAL_CONVERSIONS",
            "METRIC_LAST_CLICKS",
            "METRIC_LAST_IMPRESSIONS",
            "METRIC_REVENUE_ADVERTISER",
            "METRIC_MEDIA_COST_ADVERTISER",
        ],
    },
    "schedule": {"frequency": "ONE_TIME"}
}

# Create query object.
query_response = service.queries().create(body=query_obj).execute()

# Print new query ID.
print(f'Query {query_response["queryId"]} was created.')

PHP

// Display name of the query to create.
$displayName = display-name;

// Advertiser ID and campaign ID by which to filter data.
$advertiserId = advertiser-id;
$campaignId = campaign-id;

// Create the query structure.
$query = new Google_Service_DoubleClickBidManager_Query();

// Build and set the metadata object.
$metadata = new Google_Service_DoubleClickBidManager_QueryMetadata();
$metadata->setTitle($displayName);
$metadata->setFormat("CSV");

$dataRange = new Google_Service_DoubleClickBidManager_DataRange();
$dataRange->setRange("LAST_7_DAYS");
$metadata->setDataRange($dataRange);

$query->setMetadata($metadata);

// Build the parameters object.
$parameters = new Google_Service_DoubleClickBidManager_Parameters();
$parameters->setType("STANDARD");

// Build and assign list of standard reporting dimensions.
$parameters->setGroupBys(
    array(
        "FILTER_ADVERTISER_NAME",
        "FILTER_ADVERTISER",
        "FILTER_ADVERTISER_CURRENCY",
        "FILTER_INSERTION_ORDER_NAME",
        "FILTER_INSERTION_ORDER",
        "FILTER_LINE_ITEM_NAME",
        "FILTER_LINE_ITEM"
    )
);

// Build and assign a list of filters.
$filters = array();
$advertiserFilterPair = new Google_Service_DoubleClickBidManager_FilterPair();
$advertiserFilterPair->setType("FILTER_ADVERTISER");
$advertiserFilterPair->setValue($advertiserId);
array_push($filters, $advertiserFilterPair);

$campaignFilterPair = new Google_Service_DoubleClickBidManager_FilterPair();
$campaignFilterPair->setType("FILTER_MEDIA_PLAN");
$campaignFilterPair->setValue($campaignId);
array_push($filters, $campaignFilterPair);

$parameters->setFilters($filters);

// Build and assign list of standard reporting metrics.
$parameters->setMetrics(
    array(
        "METRIC_IMPRESSIONS",
        "METRIC_BILLABLE_IMPRESSIONS",
        "METRIC_CLICKS",
        "METRIC_CTR",
        "METRIC_TOTAL_CONVERSIONS",
        "METRIC_LAST_CLICKS",
        "METRIC_LAST_IMPRESSIONS",
        "METRIC_REVENUE_ADVERTISER",
        "METRIC_MEDIA_COST_ADVERTISER"
    )
);

// Set parameters object in query.
$query->setParams($parameters);

// Build and set the schedule object.
$schedule = new Google_Service_DoubleClickBidManager_QuerySchedule();
$schedule->setFrequency("ONE_TIME");
$query->setSchedule($schedule);

// Call the API, creating the query.
$queryResult = $this->service->queries->create($query);

printf('Query %s was created.
', $queryResult['queryId']);

Retrieve a query

Here's an example of how to retrieve a Display & Video 360 reporting query:

Java

// ID of query to retrieve.
Long queryId = query-id;

// Retrieve Display & Video 360 query.
Query queryResponse = service.queries().get(queryId).execute();

// Print display name of query.
System.out.printf(
    "Query ID %s was retrieved with display name %s.%n",
    queryResponse.getQueryId(),
    queryResponse.getMetadata().getTitle()
);

Python

# ID of query to retrieve.
query_id = query-id

# Retrieve Display & Video 360 query
query = service.queries().get(queryId=query_id).execute()

# Print display name of query.
print(
    f'Query ID {query_id} retrieved with display name'
    f' {query["metadata"]["title"]}.'
)

PHP

// ID of a query to retrieve.
$queryId = query-id;

// Retrieve Display & Video 360 query.
$queryResponse = $this->service->queries->get($queryId);

printf(
    'Query ID %s was retrieved with display name %s.
', $queryId, $queryResponse->getMetadata()->getTitle() );