Skip to main content

Documentation Index

Fetch the complete documentation index at: https://lava.so/docs/llms.txt

Use this file to discover all available pages before exploring further.

TikTok’s official Marketing API for managing the full lifecycle of TikTok ad campaigns on behalf of authorized advertisers — advertiser discovery, campaigns, ad groups, ads, audiences, custom audiences, creatives, pixels, conversion events, and reporting. Best for agents that need to launch, optimize, or report on TikTok ads through TikTok For Business accounts. Unlike aggregator marketing platforms, this is a first-party surface that exposes TikTok-specific targeting (interests, behaviors, hashtags) and granular reporting breakdowns (placement, creative, audience). 14 example endpoints available through Lava’s AI Gateway. See the TikTok Ads API docs for full documentation.
This provider requires your own credentials — connect your API key or OAuth account before use.
This is a catch-all provider — any valid URL under https://business-api.tiktok.com is supported. TikTok Marketing API. Base URL: https://business-api.tiktok.com/open_api/v1.3. Auth header is Access-Token: <token> (NOT Authorization: Bearer). Discover advertiser_ids via GET /oauth2/advertiser/get/. Most resources are scoped to an advertiser_id query param, e.g. /campaign/get/?advertiser_id=…&campaign_ids=[…]. Responses are wrapped in an envelope: { code, message, request_id, data } — non-zero code indicates an error. Pagination uses page/page_size query params and returns data.page_info { page, page_size, total_number, total_page }. Reports endpoint (GET /report/integrated/get/) accepts breakdowns, dimensions, metrics, and date ranges as query params. See https://business-api.tiktok.com/portal/docs for full reference. The endpoints below are curated examples.

Endpoints

List advertisers that have granted this app permission to manage their accounts. Start here after OAuth to discover the advertiser_ids the user authorized; every other endpoint takes one of these as a query param. Requires app_id and secret as query params alongside the user’s Access-Token.

GET https://business-api.tiktok.com/open_api/v1.3/oauth2/advertiser/get/?app_id={app_id}&secret={secret} — Free
const data = await lava.gateway('https://business-api.tiktok.com/open_api/v1.3/oauth2/advertiser/get/?app_id={app_id}&secret={secret}', { method: 'GET' });

Fetch details for one or more advertisers — currency, time zone, status, balance, contact info. Useful for confirming an authorized advertiser_id is active before further calls.

GET https://business-api.tiktok.com/open_api/v1.3/advertiser/info/?advertiser_ids=["{advertiser_id}"] — Free
const data = await lava.gateway('https://business-api.tiktok.com/open_api/v1.3/advertiser/info/?advertiser_ids=["{advertiser_id}"]', { method: 'GET' });

List campaigns under an advertiser. Paginated via page/page_size; response envelope includes data.page_info . Filterable by status, objective_type, budget_mode.

GET https://business-api.tiktok.com/open_api/v1.3/campaign/get/?advertiser_id={advertiser_id}&page=1&page_size=20 — Free
const data = await lava.gateway('https://business-api.tiktok.com/open_api/v1.3/campaign/get/?advertiser_id={advertiser_id}&page=1&page_size=20', { method: 'GET' });

Create a new campaign under an advertiser. Required: advertiser_id, campaign_name, objective_type (TRAFFIC, CONVERSIONS, REACH, VIDEO_VIEWS, LEAD_GENERATION, etc.), budget_mode, budget. New campaigns default to DISABLE; activate via campaign/update/.

POST https://business-api.tiktok.com/open_api/v1.3/campaign/create/ — Free
const data = await lava.gateway('https://business-api.tiktok.com/open_api/v1.3/campaign/create/', {
  body: {
"advertiser_id": "{advertiser_id}",
"campaign_name": "Q2 Awareness Campaign",
"objective_type": "TRAFFIC",
"budget_mode": "BUDGET_MODE_DAY",
"budget": 50
},
});

Update campaign settings. Common: campaign_name, budget, operation_status (ENABLE / DISABLE / DELETE). Only fields included are modified.

POST https://business-api.tiktok.com/open_api/v1.3/campaign/update/ — Free
const data = await lava.gateway('https://business-api.tiktok.com/open_api/v1.3/campaign/update/', {
  body: {
"advertiser_id": "{advertiser_id}",
"campaign_id": "{campaign_id}",
"operation_status": "ENABLE"
},
});

List ad groups under an advertiser (optionally filtered by campaign_ids). Ad groups carry targeting, placement, bidding, schedule, and conversion event settings.

GET https://business-api.tiktok.com/open_api/v1.3/adgroup/get/?advertiser_id={advertiser_id}&page=1&page_size=20 — Free
const data = await lava.gateway('https://business-api.tiktok.com/open_api/v1.3/adgroup/get/?advertiser_id={advertiser_id}&page=1&page_size=20', { method: 'GET' });

Create an ad group under a campaign. Key fields: campaign_id, adgroup_name, placement_type, placements, billing_event (CPC, CPM, OCPM), bid_type, bid_price, schedule_type, schedule_start_time, location_ids, audience_ids, interests, pixel_id (for conversion ad groups).

POST https://business-api.tiktok.com/open_api/v1.3/adgroup/create/ — Free
const data = await lava.gateway('https://business-api.tiktok.com/open_api/v1.3/adgroup/create/', {
  body: {
"advertiser_id": "{advertiser_id}",
"campaign_id": "{campaign_id}",
"adgroup_name": "US — programmers",
"placement_type": "PLACEMENT_TYPE_NORMAL",
"placements": [
  "PLACEMENT_TIKTOK"
],
"location_ids": [
  "6252001"
],
"billing_event": "CPC",
"bid_type": "BID_TYPE_CUSTOM",
"bid_price": 0.5,
"budget_mode": "BUDGET_MODE_DAY",
"budget": 20,
"schedule_type": "SCHEDULE_FROM_NOW",
"operation_status": "DISABLE"
},
});

List ads under an advertiser (filterable by campaign_ids or adgroup_ids). Each ad references a creative (video_id or image_ids) and an ad group, inheriting targeting from the ad group.

GET https://business-api.tiktok.com/open_api/v1.3/ad/get/?advertiser_id={advertiser_id}&page=1&page_size=20 — Free
const data = await lava.gateway('https://business-api.tiktok.com/open_api/v1.3/ad/get/?advertiser_id={advertiser_id}&page=1&page_size=20', { method: 'GET' });

Create one or more ads under an ad group. Each ad in creatives[] needs ad_name, ad_format, video_id (or image_ids), ad_text, call_to_action, and landing_page_url.

POST https://business-api.tiktok.com/open_api/v1.3/ad/create/ — Free
const data = await lava.gateway('https://business-api.tiktok.com/open_api/v1.3/ad/create/', {
  body: {
"advertiser_id": "{advertiser_id}",
"adgroup_id": "{adgroup_id}",
"creatives": [
  {
    "ad_name": "Programmers — Q2 traffic ad",
    "ad_format": "SINGLE_VIDEO",
    "video_id": "{video_id}",
    "ad_text": "Build faster with our AI tools.",
    "call_to_action": "LEARN_MORE",
    "landing_page_url": "https://example.com/lp"
  }
]
},
});

List custom audiences (CUSTOMER_FILE, ENGAGEMENT, WEB, APP, LOOKALIKE, etc.) under an advertiser. Use these as targeting building blocks for ad groups.

GET https://business-api.tiktok.com/open_api/v1.3/dmp/custom_audience/list/?advertiser_id={advertiser_id}&page=1&page_size=20 — Free
const data = await lava.gateway('https://business-api.tiktok.com/open_api/v1.3/dmp/custom_audience/list/?advertiser_id={advertiser_id}&page=1&page_size=20', { method: 'GET' });

Create a customer-file custom audience. Identifiers must be SHA-256 hashed before upload (TikTok will not hash for you). After creation, use /dmp/custom_audience/file/upload/ to add hashed identifiers in batches.

POST https://business-api.tiktok.com/open_api/v1.3/dmp/custom_audience/create/ — Free
const data = await lava.gateway('https://business-api.tiktok.com/open_api/v1.3/dmp/custom_audience/create/', {
  body: {
"advertiser_id": "{advertiser_id}",
"custom_audience_name": "Newsletter subscribers — May",
"audience_sub_type": "NORMAL"
},
});

List TikTok Pixels for an advertiser. Required to find a pixel_id for conversion-based ad groups and for sending server-side events via the Events API.

GET https://business-api.tiktok.com/open_api/v1.3/pixel/list/?advertiser_id={advertiser_id} — Free
const data = await lava.gateway('https://business-api.tiktok.com/open_api/v1.3/pixel/list/?advertiser_id={advertiser_id}', { method: 'GET' });

TikTok Events API — post a single server-side pixel event. Body fields: pixel_code, event (e.g. CompletePayment), event_id (for deduplication with browser pixel), timestamp (Unix seconds), and context.user identifiers (email, phone_number, external_id — all pre-hashed SHA-256). Optional properties for value/currency/content_id. Used for offline / CRM / CAPI conversion tracking.

POST https://business-api.tiktok.com/open_api/v1.3/pixel/track/ — Free
const data = await lava.gateway('https://business-api.tiktok.com/open_api/v1.3/pixel/track/', {
  body: {
"pixel_code": "{pixel_code}",
"event": "CompletePayment",
"event_id": "order_12345",
"timestamp": 1747008000,
"context": {
  "user": {
    "email": "{sha256_hashed_email}",
    "phone_number": "{sha256_hashed_phone}"
  }
},
"properties": {
  "value": 49.99,
  "currency": "USD"
}
},
});

Integrated reporting — pull synchronous performance metrics for an advertiser. Specify report_type (BASIC, AUDIENCE, PLAYABLE_MATERIAL), data_level (AUCTION_CAMPAIGN, AUCTION_ADGROUP, AUCTION_AD, AUCTION_ADVERTISER), dimensions (campaign_id, adgroup_id, stat_time_day, country_code, etc.), metrics (impressions, clicks, spend, cpc, ctr, conversions, conversion_rate), and date_range (start_date / end_date YYYY-MM-DD). Returns paginated rows.

GET https://business-api.tiktok.com/open_api/v1.3/report/integrated/get/?advertiser_id={advertiser_id}&report_type=BASIC&data_level=AUCTION_CAMPAIGN&dimensions=["campaign_id","stat_time_day"]&metrics=["impressions","clicks","spend","cpc","ctr","conversion"]&start_date=2026-05-01&end_date=2026-05-11&page=1&page_size=100 — Free
const data = await lava.gateway('https://business-api.tiktok.com/open_api/v1.3/report/integrated/get/?advertiser_id={advertiser_id}&report_type=BASIC&data_level=AUCTION_CAMPAIGN&dimensions=["campaign_id","stat_time_day"]&metrics=["impressions","clicks","spend","cpc","ctr","conversion"]&start_date=2026-05-01&end_date=2026-05-11&page=1&page_size=100', { method: 'GET' });

Next Steps

All Providers

Browse all supported AI providers

Forward Proxy

Learn how to construct proxy URLs and authenticate requests