# google_ads_upload_video

> Upload MP4/WebM/QuickTime bytes (max 16 MiB) to the Google-managed YouTube channel for the selected ad account.

[Documentation](https://www.getmcpads.com/docs) / [Sources](https://www.getmcpads.com/docs/sources) / [Google Ads](https://www.getmcpads.com/docs/sources/google-ads)

Upload MP4/WebM/QuickTime bytes (max 16 MiB) to the Google-managed YouTube channel for the selected ad account. Visibility is UNLISTED: viewable by anyone with the link, not private. Default preview omits bytes and returns planHash; confirm requires expectedPlanHash. This API has no validateOnly. After upload, query you_tube_video_upload.state and video_id with google_ads_run_gaql; only use the video ID after PROCESSED, via google_ads_apply_plan assetOperation.youtubeVideoAsset. No automatic retry after an uncertain upload.

> **Warning** This tool changes the account. It is absent from the tool list on the Free plan, and it previews by default: without `confirm: true` it describes the change and applies nothing.

|  |  |
| --- | --- |
| Source | [Google Ads](https://www.getmcpads.com/docs/sources/google-ads) |
| Kind | Write |
| Discovery | Reachable through `search_tools` and `run_tool` |
| Account parameter | `customerId` |
| Endpoint | https://mcp.getmcpads.com/google-ads/mcp |

## Parameters

| Name | Type | Required | Notes |
| --- | --- | --- | --- |
| `customerId` | string | Required | Selected Google Ads customer ID, not the manager account. |
| `currency` | string | Required | Actual account currency as a three-letter ISO code; verified natively before writes. |
| `loginCustomerId` | string | Optional | Optional MCC ID; defaults to the selected account's inferred manager. |
| `testAccountOnly` | boolean | Optional | Require customer.test_account=true before writing. Always use true for sandbox acceptance. |
| `confirm` | boolean | Optional | Apply only when true and expectedPlanHash matches the exact preview. |
| `expectedPlanHash` | string | Optional | SHA-256 planHash from the preview of this exact payload, required for application. |
| `bytesBase64` | string | Required | Raw base64 video bytes, no data URL. Prefer an existing YouTube asset for large videos. |
| `mimeType` | string | Required | Actual MIME type of the supplied video bytes. One of: `video/mp4`, `video/webm`, `video/quicktime`. |
| `title` | string | Required | Nonempty title for this new video upload. |
| `description` | string | Required | Nonempty video description; Google rejects an empty value during upload. |
| `visibility` | string | Required | Explicit acknowledgment of the visibility of this YouTube upload. |

## Calling it

Through run_tool, since it is not announced

```json
{
  "name": "run_tool",
  "arguments": {
    "name": "google_ads_upload_video",
    "args": {
      "customerId": "<string>",
      "currency": "<string>",
      "bytesBase64": "<string>",
      "mimeType": "video/mp4",
      "title": "<string>",
      "description": "<string>",
      "visibility": "<string>"
    }
  }
}
```

- [Google Ads metrics](https://www.getmcpads.com/docs/sources/google-ads/metrics): What you can ask for.
- [Google Ads dimensions](https://www.getmcpads.com/docs/sources/google-ads/dimensions): How you can break it down.

---

This page as HTML: https://www.getmcpads.com/docs/sources/google-ads/tools/google_ads_upload_video
Every page under /docs is available as Markdown: append `.md`, or send `Accept: text/markdown`.
