We recommend using the Google API client libraries with the Bid Manager API, so you
don't have to manually process HTTP requests and responses. The Google API
client libraries can provide better language integration, improved security, and
support for making calls that require user authorization.

The Bid Manager API is built on HTTP and JSON. If you prefer to process requests
and responses manually, you can use any standard HTTP client.

## Install a client library

We offer client libraries that support the Bid Manager API in a variety of
programming languages. For a full list of client libraries, see the [Samples and
libraries tab](https://developers.google.com/bid-manager/libraries).

The Bid Manager API developer guides provide code snippets for the following three
languages:

- [Java](https://github.com/googleads/googleads-bidmanager-examples/blob/main/java/v2/README.md)
- [Python](https://github.com/googleads/googleads-bidmanager-examples/blob/main/python/v2/README.md)
- [PHP](https://github.com/googleads/googleads-bidmanager-examples/blob/main/php/v2/README.md)

For full integration examples in these languages, see our [Bid Manager API examples
GitHub repository](https://github.com/googleads/googleads-bidmanager-examples).

## Configure your client

With [OAuth 2.0 credentials](https://developers.google.com/bid-manager/guides/get-started/generate-credentials#generate_credentials) and an [installed client
library](https://developers.google.com/bid-manager/guides/get-started/install-configure#install_a_client_library), you're ready to use the Bid Manager API. Here's how to
authorize and configure your client:

### Java

1. **Import the necessary libraries.**

   ```java
   import static java.nio.charset.StandardCharsets.UTF_8;
   import com.google.api.client.auth.oauth2.Credential;
   import com.google.api.client.extensions.java6.auth.oauth2.AuthorizationCodeInstalledApp;
   import com.google.api.client.extensions.jetty.auth.oauth2.LocalServerReceiver;
   import com.google.api.client.googleapis.auth.oauth2.GoogleAuthorizationCodeFlow;
   import com.google.api.client.googleapis.auth.oauth2.GoogleClientSecrets;
   import com.google.api.client.googleapis.util.Utils;
   import com.google.api.services.doubleclickbidmanager.DoubleClickBidManager;
   import java.io.Reader;
   import java.nio.file.Files;
   import java.nio.file.Paths;
   ```
2. **Load the client secrets file and generate authorization credentials.**


   The first time you perform this step, you are asked to accept an authorization
   prompt in your browser. Before accepting, make sure you're signed in with a
   Google Account that has access to Display \& Video 360. Your app will be authorized
   to access data on behalf of whichever account is currently signed in.

   ```java
   // Read client secrets file.
   GoogleClientSecrets clientSecrets;
   try (Reader reader = Files.newBufferedReader(Paths.get(path-to-client-secrets-file), UTF_8)) {
     clientSecrets = GoogleClientSecrets.load(Utils.getDefaultJsonFactory(), reader);
   }

   // Generate authorization credentials.
   // Set up the authorization code flow.
   GoogleAuthorizationCodeFlow flow =
       new GoogleAuthorizationCodeFlow.Builder(
           Utils.getDefaultTransport(),
           Utils.getDefaultJsonFactory(),
           clientSecrets,
           oauth-scopes)
       .build();

   Credential credential =
       new AuthorizationCodeInstalledApp(flow, new LocalServerReceiver()).authorize("user");
   ```
3. **Create an authorized API client.**

   ```java
   // Create authorized API client.
   DoubleClickBidManager service =
       new DoubleClickBidManager.Builder(credential.getTransport(), credential.getJsonFactory(), credential)
           .setApplicationName("bidmanager-java-installed-app-sample")
           .build();
   ```

### Python

1. **Import the necessary libraries.**

   ```python
   from google_auth_oauthlib.flow import InstalledAppFlow
   from googleapiclient import discovery
   ```
2. **Load the client secrets file and generate authorization credentials.**


   The first time you perform this step, you are asked to accept an authorization
   prompt in your browser. Before accepting, make sure you're signed in with a
   Google Account that has access to Display \& Video 360. Your app will be authorized
   to access data on behalf of whichever account is currently signed in.

   ```python
   # Set up a flow object to create the credentials using the
   # client secrets file and OAuth scopes.
   credentials = InstalledAppFlow.from_client_secrets_file(
       path-to-client-secrets-file, oauth-scopes).run_local_server()
   ```
3. **Create an authorized API client.**

   ```python
   # Build the discovery document URL.
   discovery_url = f'https://doubleclickbidmanager.googleapis.com/$discovery/rest?version=v2'

   # Build the API service.
   service = discovery.build(
       'doubleclickbidmanager',
       'v2',
       discoveryServiceUrl=discovery_url,
       credentials=credentials)
   ```

### PHP


This sample assumes that you are running the PHP with a built-in web server and
have configured your credentials to redirect to the relevant web page. For
example, this code, in an `index.php` file, can be run using the following
command and credentials configured to redirect to `http://localhost:8000` after
authentication:

```php
php -S localhost:8000 -t ./
```

<br />

1. **Download and install the Google API PHP Client.**

   The preferred method is via [Composer](https://getcomposer.org/):

   ```php
   composer require google/apiclient:^2.12.1
   ```

   <br />

   Once installed, be sure to include the autoloader

   ```php
   require_once '/path/to/your-project/vendor/autoload.php';
   ```

   <br />

2. **Create a Google_Client object.**

   ```php
   $client = new Google_Client();
   ```
3. **Set up the client, redirect to authentication URL if needed, and retrieve an access token.**


   The first time you perform this step, you are asked to accept an authorization
   prompt in your browser. Before accepting, make sure you're signed in with a
   Google Account that has access to Display \& Video 360. Your app will be authorized
   to access data on behalf of whichever account is currently signed in.

   ```php
   // Set up the client.
   $client->setApplicationName('DBM API PHP Samples');
   $client->addScope(oauth-scope);
   $client->setAccessType('offline');
   $client->setAuthConfigFile(path-to-client-secrets-file);

   // If the code is passed, authenticate. If not, redirect to authentication page.
   if (isset($_GET['code'])) {
     $client->authenticate($_GET['code']);
   } else {
     $authUrl = $client->createAuthUrl();
     header('Location: ' . $authUrl);
   }

   // Exchange authorization code for an access token.
   $accessToken = $client->getAccessToken();
   $client->setAccessToken($accessToken);
   ```
4. **Construct a client for the Display \& Video 360 API service.**

   ```php
   $service = new Google_Service_DoubleClickBidManager($client);
   ```