Video campaigns


πŸ“

Video campaigns (aka brand video) require a special Taboola account.

Overview

Video campaigns allow you to run video advertising campaigns on the Taboola platform. This documentation focuses on managed campaigns.

Managed video campaigns

Managed campaigns are fully optimized by Taboola algorithms, with budget-based pacing and scheduling controls.

Business models:

  • CPM - Cost per mille (per 1,000 impressions)
  • CPCV - Cost per completed view
  • VCPM - Viewable cost per mille

Authentication

All video campaign management endpoints require authentication using OAuth 2.0. You must obtain an access token and include it in the Authorization header of each request:

Authorization: Bearer {access_token}

For detailed authentication instructions, see: Client Credentials Flow

Managing campaigns

Fetch operations

List video campaigns

Retrieve a list of video campaigns for your account.

GET /backstage/api/1.0/{account_id}/video-campaigns

Params:

ParamTypeRequiredDescription
account_idstringYesYour account ID, as an alphabetic string. See: Get Account Details
{
  "results": [
    {
      "id": 12345678,
      "content_provider": 987654,
      "campaign_name": "Summer Video Campaign 2024",
      "business_model": "CPM",
      "deal_id": null,
      "status": "ACTIVE",
      "start_date": "2024-06-01",
      "end_date": "2024-08-31",
      "restrictions": [...],
      "total_spent": 2500.00,
      "auction_type": null,
      "cpm_floor": null,
      "daily_impressions_limit": null,
      "impressions_limit": null,
      "total_budget": 10000.0,
      "charge_rate": 5.50,
      "completed_views": 1500,
      "active": true
    }
  ],
  "totalCount": 1
}
🚧

The network account

  1. The video-campaigns endpoint returns a list of video campaigns owned (created) by that account.
  2. Because your network account is not used to create campaigns, it cannot be used with the network-campaigns endpoint.
  3. However, you can fetch basic details for all campaigns across the network, using the video-campaigns/base endpoint.

Get a video campaign

Retrieve details for a specific video campaign.

GET /backstage/api/1.0/{account_id}/video-campaigns/{campaign_id}
{
  "id": 12345678,
  "content_provider": 987654,
  "campaign_name": "Summer Video Campaign 2024",
  "business_model": "CPM",
  "deal_id": null,
  "status": "ACTIVE",
  "start_date": "2024-06-01",
  "end_date": "2024-08-31",
  "restrictions": [
    {
      "type": "INCLUDE",
      "value": ["US", "CA"],
      "restriction_name": "COUNTRY"
    },
    {
      "type": "INCLUDE",
      "value": ["1", "2"],
      "restriction_name": "PLATFORM"
    }
  ],
  "total_spent": 2500.00,
  "auction_type": null,
  "cpm_floor": null,
  "daily_impressions_limit": null,
  "impressions_limit": null,
  "total_budget": 10000.0,
  "charge_rate": 5.50,
  "completed_views": 1500,
  "active": true
}

Params:

ParamTypeRequiredDescription
account_idstringYesYour account ID, as an alphabetic string
campaign_idstringYesThe campaign ID

Create operations

Create a managed video campaign

Create a new managed video campaign.

πŸ“˜

POST

To create a video campaign, use the POST operation.

POST /backstage/api/1.0/{account_id}/video-campaigns/managed
{
  "campaign_name": "Product Launch Video Campaign",
  "business_model": "CPM",
  "start_date": "2024-07-01",
  "end_date": "2024-09-30",
  "total_budget": 15000.0,
  "charge_rate": 6.00,
  "pacing": "BALANCED",
  "restrictions": [
    {
      "type": "INCLUDE",
      "value": ["US"],
      "restriction_name": "COUNTRY"
    },
    {
      "type": "INCLUDE",
      "value": ["1"],
      "restriction_name": "PLATFORM"
    }
  ]
}
{
  "id": 87654321,
  "content_provider": 987654,
  "campaign_name": "Product Launch Video Campaign",
  "business_model": "CPM",
  "deal_id": null,
  "status": "PENDING_APPROVAL",
  "start_date": "2024-07-01",
  "end_date": "2024-09-30",
  "restrictions": [
    {
      "type": "INCLUDE",
      "value": ["US"],
      "restriction_name": "COUNTRY"
    },
    {
      "type": "INCLUDE",
      "value": ["1"],
      "restriction_name": "PLATFORM"
    }
  ],
  "total_spent": null,
  "auction_type": null,
  "cpm_floor": null,
  "daily_impressions_limit": null,
  "impressions_limit": null,
  "total_budget": 15000.0,
  "charge_rate": 6.00,
  "pacing": "BALANCED",
  "completed_views": 0,
  "active": true
}

Create a managed campaign (minimal fields)

Create a managed video campaign with only the required fields.

πŸ“˜

Required fields

The restrictions array is required and must include at least one restriction with restriction_name of "COUNTRY".

POST /backstage/api/1.0/{account_id}/video-campaigns/managed
{
  "campaign_name": "Minimal Managed Campaign",
  "business_model": "CPM",
  "start_date": "2024-07-01",
  "charge_rate": 5.00,
  "total_budget": 5000.0,
  "pacing": "BALANCED",
  "restrictions": [
    {
      "type": "INCLUDE",
      "value": ["US"],
      "restriction_name": "COUNTRY"
    }
  ]
}
{
  "id": 87654321,
  "content_provider": 987654,
  "campaign_name": "Minimal Managed Campaign",
  "business_model": "CPM",
  "deal_id": null,
  "status": "PENDING_APPROVAL",
  "start_date": "2024-07-01",
  "end_date": null,
  "restrictions": [
    {
      "type": "INCLUDE",
      "value": ["US"],
      "restriction_name": "COUNTRY"
    }
  ],
  "total_spent": null,
  "auction_type": null,
  "cpm_floor": null,
  "daily_impressions_limit": null,
  "impressions_limit": null,
  "total_budget": 5000.0,
  "charge_rate": 5.00,
  "pacing": "BALANCED",
  "completed_views": 0,
  "active": true
}

Duplicate a video campaign

Duplicate an existing video campaign to create a copy.

Duplicate a managed campaign

POST /backstage/api/1.0/{account_id}/video-campaigns/managed/{campaign_id}/duplicate
{
  "campaign_name": "Copy of Summer Video Campaign 2024"
}
{
  "id": 87654321,
  "content_provider": 987654,
  "campaign_name": "Copy of Summer Video Campaign 2024",
  "business_model": "CPM",
  "deal_id": null,
  "status": "PENDING_APPROVAL",
  "start_date": "2024-06-01",
  "end_date": "2024-08-31",
  "restrictions": [
    {
      "type": "INCLUDE",
      "value": ["US", "CA"],
      "restriction_name": "COUNTRY"
    }
  ],
  "total_spent": null,
  "auction_type": null,
  "cpm_floor": null,
  "daily_impressions_limit": null,
  "impressions_limit": null,
  "total_budget": 10000.0,
  "charge_rate": 5.50,
  "pacing": "BALANCED",
  "completed_views": 0,
  "active": true
}

Params:

ParamTypeRequiredDescription
account_idstringYesYour account ID, as an alphabetic string
campaign_idstringYesThe campaign ID to duplicate
destination_accountstringNoDestination account ID (optional)

Update operations

Update a managed video campaign

Update an existing managed video campaign. You can submit only the fields that need updating.

πŸ“˜

POST

To update a managed video campaign, use the POST operation.

POST /backstage/api/1.0/{account_id}/video-campaigns/managed/{campaign_id}
{
  "campaign_name": "Updated Managed Campaign",
  "charge_rate": 7.00,
  "total_budget": 20000.0,
  "restrictions": [
    {
      "type": "INCLUDE",
      "value": ["US", "CA", "UK"],
      "restriction_name": "COUNTRY"
    }
  ]
}
πŸ‘

Partial updates supported

You only need to include the fields you want to change. All other fields will remain unchanged.

{
  "id": 12345678,
  "content_provider": 987654,
  "campaign_name": "Updated Managed Campaign",
  "business_model": "CPM",
  "deal_id": null,
  "status": "ACTIVE",
  "start_date": "2024-06-01",
  "end_date": "2024-08-31",
  "restrictions": [
    {
      "type": "INCLUDE",
      "value": ["US", "CA", "UK"],
      "restriction_name": "COUNTRY"
    }
  ],
  "total_spent": 3500.00,
  "auction_type": null,
  "cpm_floor": null,
  "daily_impressions_limit": null,
  "impressions_limit": null,
  "total_budget": 20000.0,
  "charge_rate": 7.00,
  "pacing": "BALANCED",
  "completed_views": 1500,
  "active": true
}

Params:

ParamTypeRequiredDescription
account_idstringYesYour account ID, as an alphabetic string
campaign_idstringYesThe campaign ID

Pause a video campaign

Pause a video campaign by updating its status.

πŸ“˜

Managed campaigns only

This example uses the managed campaign endpoint.

POST /backstage/api/1.0/{account_id}/video-campaigns/managed/{campaign_id}
{
  "status": "PAUSED"
}
{
  "id": 12345678,
  "content_provider": 987654,
  "campaign_name": "Summer Video Campaign 2024",
  "business_model": "CPM",
  "deal_id": null,
  "status": "PAUSED",
  "start_date": "2024-06-01",
  "end_date": "2024-08-31",
  "restrictions": [
    {
      "type": "INCLUDE",
      "value": ["US"],
      "restriction_name": "COUNTRY"
    }
  ],
  "total_spent": 2500.00,
  "auction_type": null,
  "cpm_floor": null,
  "daily_impressions_limit": null,
  "impressions_limit": null,
  "total_budget": 10000.0,
  "charge_rate": 5.50,
  "pacing": "BALANCED",
  "completed_views": 1500,
  "active": true
}

Params:

ParamTypeRequiredDescription
account_idstringYesYour account ID, as an alphabetic string
campaign_idstringYesThe campaign ID

Resume a video campaign

Resume a paused video campaign by updating its status.

πŸ“˜

Managed campaigns only

This example uses the managed campaign endpoint.

POST /backstage/api/1.0/{account_id}/video-campaigns/managed/{campaign_id}
{
  "status": "ACTIVE"
}
{
  "id": 12345678,
  "content_provider": 987654,
  "campaign_name": "Summer Video Campaign 2024",
  "business_model": "CPM",
  "deal_id": null,
  "status": "ACTIVE",
  "start_date": "2024-06-01",
  "end_date": "2024-08-31",
  "restrictions": [
    {
      "type": "INCLUDE",
      "value": ["US"],
      "restriction_name": "COUNTRY"
    }
  ],
  "total_spent": 2500.00,
  "auction_type": null,
  "cpm_floor": null,
  "daily_impressions_limit": null,
  "impressions_limit": null,
  "total_budget": 10000.0,
  "charge_rate": 5.50,
  "pacing": "BALANCED",
  "completed_views": 1500,
  "active": true
}

Campaign status values

StatusDescription
PENDING_APPROVALCampaign awaiting approval
ACTIVECampaign is running
PAUSEDCampaign is paused
COMPLETEDCampaign has finished
REJECTEDCampaign was rejected
DELETEDCampaign was deleted

Delete operations

Delete a video campaign

Delete a video campaign.

DELETE /backstage/api/1.0/{account_id}/video-campaigns/{campaign_id}
{
  "id": 12345678,
  "status": "DELETED"
}

Params:

ParamTypeRequiredDescription
account_idstringYesYour account ID, as an alphabetic string
campaign_idstringYesThe campaign ID

Campaign fields

Common fields

All video campaigns include these base fields:

FieldTypeRequiredDescription
idlongNoCampaign ID (auto-generated)
content_providerlongNoContent provider ID
campaign_namestringYesCampaign name
business_modelstringYesCampaign business model
deal_idstringNoExternal deal identifier
statusstringNoCampaign status
start_datestringYesCampaign start date (YYYY-MM-DD)
end_datestringNoCampaign end date (YYYY-MM-DD)
restrictionsarrayYesTargeting restrictions array
total_spentnumberNoTotal amount spent
auction_typestringNoAuction type
cpm_floornumberNoCPM floor value
daily_impressions_limitnumberNoDaily impression limit
impressions_limitnumberNoTotal impression limit
activebooleanNoWhether campaign is active

Managed campaign fields

Managed campaigns include these additional fields:

FieldTypeRequiredDescription
total_budgetdoubleYesTotal campaign budget
charge_ratedoubleYesCampaign rate (CPM/CPCV)
pacingstringYesCampaign pacing (BALANCED/ACCELERATED)
daily_capdoubleNoDaily budget cap (optional)
activity_scheduleobjectNoCampaign scheduling rules
completed_viewsintegerNoNumber of completed video views

Error responses

Validation errors

{
  "error": "VALIDATION_ERROR",
  "message": "Campaign name is required",
  "details": {
    "field": "campaign_name",
    "code": "REQUIRED_FIELD"
  }
}

```json 400 Bad Request
{
  "http_status": 400,
  "message": "campaign.video.server.error.missing.field.pacing",
  "offending_field": "pacing",
  "message_code": "campaign.video.server.error.missing.field.pacing",
  "template_parameters": []
}

Not found errors

{
  "error": "NOT_FOUND",
  "message": "Campaign not found",
  "details": {
    "campaignId": "12345"
  }
}

Rate limit errors

{
  "error": "RATE_LIMIT_EXCEEDED",
  "message": "Too many requests",
  "details": {
    "retryAfter": 60
  }
}

What's next?

Now that you understand video campaign management, explore these related topics:

  • Targeting - Configure targeting options for your video campaigns
  • Video campaign creatives - Manage video campaign creatives
  • Reports - Access performance analytics and reporting data
  • Conversion rules - Set up conversion tracking for your campaigns

    These are the same as sponsored content campaigns

  • Custom audiences - Create and manage custom audience segments

    These are the same as sponsored content campaigns