# Upload a TikTok ad video

Import a video from a public HTTPS media URL or base64 file (up to 5 MiB). Works on your own TikTok Ads account, connected through Get MCP Ads. The preview is free; the change costs $0.05 when you confirm it. Needs advertiser id and file name.

Import a video from a public HTTPS media URL or base64 file (up to 5 MiB). A single returned media ID is exposed at media.id, with the native receipt preserved in result. TikTok may process it asynchronously; acceptance is not proof the media is ready. Local preview by default. No automatic retry; advertiser ownership is checked before applying. Agentik price: free to preview; $0.05 when the change is applied (confirm: true without validateOnly).

- Tool ID: `tiktok-ads/upload-ad-video`
- Name in the catalog: TikTok: Upload ad video
- Provider: [TikTok Ads](/providers/tiktok-ads.md)
- Capability: [TikTok Ads creatives](/tools/tiktok-ads/creatives.md)
- Price: free preview, $0.05 per applied change
- Workspace access is automatic. Connect a platform using the link and notice returned to your AI assistant; an owner or admin completes platform consent and returns to the conversation; see the [guide](/docs/getmcpads.md).
- Authentication: an authorised Agentik workspace is required for execution, including zero-price tools.

## Pricing contract

The provider’s price, with no markup. Billed for measured usage.


```json
{
  "model": "per_call",
  "amountUsd": 0,
  "multipliers": [
    {
      "all": [
        {
          "field": "confirm",
          "equals": true
        },
        {
          "field": "validateOnly",
          "truthy": false
        }
      ],
      "setUsd": 0.05
    }
  ]
}
```

## Complete input schema


```json
{
  "type": "object",
  "properties": {
    "advertiserId": {
      "type": "string",
      "pattern": "^\\d+$",
      "description": "Exact TikTok numeric ID as a string, never a rounded JavaScript number."
    },
    "fileUrl": {
      "type": "string",
      "format": "uri",
      "pattern": "^https\\:\\/\\/",
      "description": "Public URL of the actual media file, not a landing page. Mutually exclusive with bytesBase64."
    },
    "bytesBase64": {
      "type": "string",
      "minLength": 4,
      "maxLength": 7000000,
      "pattern": "^[A-Za-z0-9+/]+={0,2}$",
      "description": "Base64 media bytes without a data-URL prefix. Maximum decoded 5 MiB. The required file checksum is calculated automatically; bytes never appear in previews."
    },
    "fileName": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Advertiser-unique uploaded filename including extension, separate from the business ad name. Prefer a stable upload UUID suffix; preserve it on retries. If the material already exists, resolve and reuse its owned native ID instead of uploading the same filename again."
    },
    "confirm": {
      "type": "boolean",
      "description": "Apply only when true. Default is a local preview without any TikTok call. Never retry an uncertain POST automatically."
    },
    "workspace_id": {
      "type": "string",
      "description": "Authorized workspace ID from list_accounts/list_workspaces. Use the user's chosen workspace; never guess between clients. Optional when a unique account identifies it."
    },
    "reason": {
      "type": "string",
      "maxLength": 500,
      "description": "Why, in the person's words or from the evidence (e.g. CPA twice the target for 7 days). Saved with the change in the shared client journal."
    }
  },
  "required": [
    "advertiserId",
    "fileName"
  ]
}
```

## Published example

No example input is published for this tool. Ask for the inputs required by its schema.

## Execute and retrieve

Inspect again before execution, explain the price and obtain the required authority. Use MCP run_tool or POST /v1/run with this tool ID, valid input and an idempotency key. Save the returned run ID and follow the actual state. If Agentik answers that the tool is temporarily unavailable, do not retry it blindly; use discovery to propose an alternative.

A partial or uncertain result can still have consumed provider resources. Consult [billing](/docs/billing.md), [idempotency](/docs/idempotency.md) and [asynchronous results](/docs/async.md).

[REST inspection](https://api.agentik.cc/v1/tools/tiktok-ads/upload-ad-video) · [OpenAPI](/openapi.json) · [Connection guide](/connect.md)

---

[HTML page](/providers/tiktok-ads/upload-ad-video) · [Agent index](/llms.txt)
