TikTok Marketing API Measurement API
The Measurement API from TikTok Marketing API — 11 operation(s) for measurement.
The Measurement API from TikTok Marketing API — 11 operation(s) for measurement.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/tiktok-ads-measurement-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: TikTok API for Business — Marketing Measurement API
description: TikTok API for Business (Marketing API) v1.3. This document is a mechanical union of the 202 per-operation OpenAPI 3.0.1 documents TikTok publishes in yml_files/ of its own SDK repository (https://github.com/tiktok/tiktok-business-api-sdk), which are the swagger-codegen inputs for TikTok's first-party Java/Python/JavaScript SDKs. Operation content (paths, parameters, responses, tags and the x-open-* extensions) is preserved verbatim; only info, servers and components.securitySchemes were written by API Evangelist, because the per-operation fragments carry placeholder info blocks and no servers block. The servers values are the production and sandbox base URLs TikTok documents at https://business-api.tiktok.com/portal/docs?id=1738855331457026 .
version: v1.3
contact:
name: TikTok API for Business support
url: https://business-api.tiktok.com/portal/docs?id=1795190020378625
termsOfService: https://business-api.tiktok.com/portal/docs?id=1737191804348417
x-source: https://github.com/tiktok/tiktok-business-api-sdk/tree/main/yml_files
x-harvested-by: API Evangelist enrichment pipeline
x-harvested: '2026-08-13'
servers:
- url: https://business-api.tiktok.com/open_api/v1.3
description: Production
- url: https://sandbox-ads.tiktok.com/open_api/v1.3
description: Sandbox
security:
- AccessToken: []
tags:
- name: Measurement
paths:
/offline/create/:
post:
operationId: Offline Create
parameters:
- description: Authorized access token. For details, see [Authentication](https://ads.tiktok.com/marketing_api/docs?id=1738373164380162).
in: query
name: Access-Token
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
properties:
advertiser_id:
description: ''
type: string
x-open-allow-strlist: false
x-open-allow-strnum: false
x-open-convert:
- int64(%s)
x-open-field-id: 1
x-open-source: $.http.body.AdvertiserID
auto_tracking:
default: false
description: ''
type: boolean
x-open-allow-strlist: false
x-open-allow-strnum: false
x-open-field-id: 4
x-open-source: $.http.body.AutoTracking
description:
description: ''
type: string
x-open-allow-strlist: false
x-open-allow-strnum: false
x-open-field-id: 3
x-open-source: $.http.body.Description
name:
description: ''
type: string
x-open-allow-strlist: false
x-open-allow-strnum: false
x-open-field-id: 2
x-open-source: $.http.body.Name
required:
- advertiser_id
- name
- description
type: object
x-open-allow-strlist: false
x-open-allow-strnum: false
responses:
'200':
content:
application/json:
schema:
properties:
code:
description: Response code. For the complete list of response codes and descriptions, see [Appendix - Return Codes](https://ads.tiktok.com/marketing_api/docs?id=1737172488964097). Will be shown only if it is an error request.
format: int64
type:
- integer
- 'null'
x-open-allow-strlist: false
x-open-field-id: 4
data:
description: Returned data. The response for the SDK can be checked in the document for the API given in the description.
properties: {}
type:
- object
- 'null'
x-open-allow-strlist: false
x-open-field-id: 1
x-open-source: $.rpc.output.data
message:
description: Response message. For details, see [Appendix - Return Codes](https://ads.tiktok.com/marketing_api/docs?id=1737172488964097).
type:
- string
- 'null'
x-open-allow-strlist: false
x-open-field-id: 3
request_id:
description: The log ID of a request, which uniquely identifies the request.
type:
- string
- 'null'
x-open-allow-strlist: false
x-open-field-id: 2
type: object
x-open-allow-strlist: false
description: OK
summary: Create a new Offline Event set. [Offline Create](https://business-api.tiktok.com/portal/docs?id=1758427576470529)
tags:
- Measurement
x-open-allowlist: {}
x-open-denylist: {}
x-open-rules:
base_rule: null
extra_rule:
base_source: []
http_query_source: []
http_source:
- name: AdvertiserID
required: true
source: $.http.body.advertiser_id
type: number
- name: CoreUserID
required: true
source: $.context.core_user_id
type: number
- name: Name
required: true
source: $.http.body.name
type: string
- name: Description
required: true
source: $.http.body.description
type: string
- name: AutoTracking
required: true
source: $.http.body.auto_tracking
type: boolean
plugins:
after_response: []
before_request: []
request_query_rule: null
request_rule:
AdvertiserID: $.http.body.advertiser_id
AutoTracking: $.http.body.auto_tracking
CoreUserID: $.context.core_user_id
Description: $.http.body.description
Name: $.http.body.name
response_cookie: []
response_header: []
response_rule:
event_set_id: $.rpc.output.OfflineEventSet.ID
x-open-scene-labels: []
x-open-settings:
pop_resp_nullvalue: false
/offline/delete/:
post:
operationId: Offline Delete
parameters:
- description: Authorized access token. For details, see [Authentication](https://ads.tiktok.com/marketing_api/docs?id=1738373164380162).
in: query
name: Access-Token
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
properties:
advertiser_id:
description: ''
type: string
x-open-allow-strlist: false
x-open-allow-strnum: false
x-open-convert:
- int64(%s)
x-open-field-id: 1
x-open-source: $.http.body.AdvertiserID
event_set_id:
description: ''
type: string
x-open-allow-strlist: false
x-open-allow-strnum: false
x-open-convert:
- int64(%s)
x-open-field-id: 2
x-open-source: $.http.body.EventSetID
required:
- advertiser_id
- event_set_id
type: object
x-open-allow-strlist: false
x-open-allow-strnum: false
responses:
'200':
content:
application/json:
schema:
properties:
code:
description: Response code. For the complete list of response codes and descriptions, see [Appendix - Return Codes](https://ads.tiktok.com/marketing_api/docs?id=1737172488964097). Will be shown only if it is an error request.
format: int64
type:
- integer
- 'null'
x-open-allow-strlist: false
x-open-field-id: 4
data:
description: Returned data. The response for the SDK can be checked in the document for the API given in the description.
properties: {}
type:
- object
- 'null'
x-open-allow-strlist: false
x-open-field-id: 1
x-open-source: $.rpc.output.data
message:
description: Response message. For details, see [Appendix - Return Codes](https://ads.tiktok.com/marketing_api/docs?id=1737172488964097).
type:
- string
- 'null'
x-open-allow-strlist: false
x-open-field-id: 3
request_id:
description: The log ID of a request, which uniquely identifies the request.
type:
- string
- 'null'
x-open-allow-strlist: false
x-open-field-id: 2
type: object
x-open-allow-strlist: false
description: OK
summary: Delete an Offline Event set. [Offline Delete](https://business-api.tiktok.com/portal/docs?id=1765596790860802)
tags:
- Measurement
x-open-allowlist: {}
x-open-denylist: {}
x-open-rules:
base_rule: null
extra_rule:
base_source: []
http_query_source: []
http_source:
- name: AdvertiserID
required: true
source: $.http.body.advertiser_id
type: number
- name: CoreUserID
required: true
source: $.context.core_user_id
type: number
- name: EventSetID
required: true
source: $.http.body.event_set_id
type: number
plugins:
after_response: []
before_request: []
request_query_rule: null
request_rule:
AdvertiserID: $.http.body.advertiser_id
CoreUserID: $.context.core_user_id
EventSetID: $.http.body.event_set_id
response_cookie: []
response_header: []
response_rule:
test: $.resp
x-open-scene-labels: []
x-open-settings:
pop_resp_nullvalue: false
/offline/get/:
get:
operationId: Offline Get
parameters:
- description: ''
in: query
name: advertiser_id
required: false
schema:
type: string
x-open-allow-strlist: false
x-open-allow-strnum: false
x-open-convert:
- int64(%s)
x-open-source: $.http.query.AdvertiserID
x-open-field-id: 1
- content:
application/json:
schema:
items:
type: string
x-open-allow-strlist: false
x-open-allow-strnum: false
x-open-convert:
- int64(%s)
type: array
x-open-allow-strlist: false
x-open-allow-strnum: false
x-open-source: $.http.query.EventSetIDs
description: ''
in: query
name: event_set_ids
required: false
x-open-field-id: 2
- description: ''
in: query
name: name
required: false
schema:
type: string
x-open-allow-strlist: false
x-open-allow-strnum: false
x-open-source: $.http.query.Name
x-open-field-id: 3
- description: Authorized access token. For details, see [Authentication](https://ads.tiktok.com/marketing_api/docs?id=1738373164380162).
in: query
name: Access-Token
required: true
schema:
type: string
responses:
'200':
content:
application/json:
schema:
properties:
code:
description: Response code. For the complete list of response codes and descriptions, see [Appendix - Return Codes](https://ads.tiktok.com/marketing_api/docs?id=1737172488964097). Will be shown only if it is an error request.
format: int64
type:
- integer
- 'null'
x-open-allow-strlist: false
x-open-field-id: 4
data:
description: Returned data. The response for the SDK can be checked in the document for the API given in the description.
properties: {}
type:
- object
- 'null'
x-open-allow-strlist: false
x-open-field-id: 1
x-open-source: $.rpc.output.data
message:
description: Response message. For details, see [Appendix - Return Codes](https://ads.tiktok.com/marketing_api/docs?id=1737172488964097).
type:
- string
- 'null'
x-open-allow-strlist: false
x-open-field-id: 3
request_id:
description: The log ID of a request, which uniquely identifies the request.
type:
- string
- 'null'
x-open-allow-strlist: false
x-open-field-id: 2
type: object
x-open-allow-strlist: false
description: OK
summary: Get Offline Event sets. [Offline Get](https://business-api.tiktok.com/portal/docs?id=1765596808589313)
tags:
- Measurement
x-open-allowlist: {}
x-open-denylist: {}
x-open-rules:
base_rule: null
extra_rule:
base_source: []
http_query_source: []
http_source:
- name: AdvertiserID
required: false
source: $.http.query.advertiser_id
type: number
- children:
- type: number
is_expand: true
name: EventSetIDs
required: false
source: $.http.query.event_set_ids[]
sub_type: number
type: array
- name: Name
required: false
source: $.http.query.name
type: string
plugins:
after_response: []
before_request: []
request_query_rule: null
request_rule:
AdvertiserID: $.http.query.advertiser_id
EventSetIDs: $.http.query.event_set_ids[]
Name: $.http.query.name
response_cookie: []
response_header: []
response_rule:
event_set_list[][]:
- advertiser_id: $.rpc.output.OfflineEventSets[].AdvertiserID
auto_tracking: $.rpc.output.OfflineEventSets[].AutoTracking
create_time: $.rpc.output.OfflineEventSets[].CreatedAt
description: $.rpc.output.OfflineEventSets[].Description
event_set_id: $.rpc.output.OfflineEventSets[].ID
name: $.rpc.output.OfflineEventSets[].Name
update_time: $.rpc.output.OfflineEventSets[].UpdatedAt
x-open-scene-labels: []
x-open-settings:
pop_resp_nullvalue: false
/offline/update/:
post:
operationId: Offline Update
parameters:
- description: Authorized access token. For details, see [Authentication](https://ads.tiktok.com/marketing_api/docs?id=1738373164380162).
in: query
name: Access-Token
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
properties:
advertiser_id:
description: ''
type: string
x-open-allow-strlist: false
x-open-allow-strnum: false
x-open-convert:
- int64(%s)
x-open-field-id: 1
x-open-source: $.http.body.AdvertiserID
auto_tracking:
description: ''
type: boolean
x-open-allow-strlist: false
x-open-allow-strnum: false
x-open-field-id: 4
x-open-source: $.http.body.AutoTracking
event_set_id:
description: ''
type: string
x-open-allow-strlist: false
x-open-allow-strnum: false
x-open-convert:
- int64(%s)
x-open-field-id: 2
x-open-source: $.http.body.EventSetID
name:
description: ''
type: string
x-open-allow-strlist: false
x-open-allow-strnum: false
x-open-field-id: 3
x-open-source: $.http.body.EventSetName
required:
- advertiser_id
- event_set_id
type: object
x-open-allow-strlist: false
x-open-allow-strnum: false
responses:
'200':
content:
application/json:
schema:
properties:
code:
description: Response code. For the complete list of response codes and descriptions, see [Appendix - Return Codes](https://ads.tiktok.com/marketing_api/docs?id=1737172488964097). Will be shown only if it is an error request.
format: int64
type:
- integer
- 'null'
x-open-allow-strlist: false
x-open-field-id: 4
data:
description: Returned data. The response for the SDK can be checked in the document for the API given in the description.
properties: {}
type:
- object
- 'null'
x-open-allow-strlist: false
x-open-field-id: 1
x-open-source: $.rpc.output.data
message:
description: Response message. For details, see [Appendix - Return Codes](https://ads.tiktok.com/marketing_api/docs?id=1737172488964097).
type:
- string
- 'null'
x-open-allow-strlist: false
x-open-field-id: 3
request_id:
description: The log ID of a request, which uniquely identifies the request.
type:
- string
- 'null'
x-open-allow-strlist: false
x-open-field-id: 2
type: object
x-open-allow-strlist: false
description: OK
summary: Update an Offline Event set. [Offline Update](https://business-api.tiktok.com/portal/docs?id=1765596741157889)
tags:
- Measurement
x-open-allowlist: {}
x-open-denylist: {}
x-open-rules:
base_rule: null
extra_rule:
base_source: []
http_query_source: []
http_source:
- name: AdvertiserID
required: true
source: $.http.body.advertiser_id
type: number
- name: CoreUserID
required: true
source: $.context.core_user_id
type: number
- name: EventSetID
required: true
source: $.http.body.event_set_id
type: number
- name: EventSetName
required: false
source: $.http.body.name
type: string
- name: AutoTracking
required: false
source: $.http.body.auto_tracking
type: boolean
plugins:
after_response: []
before_request: []
request_query_rule: null
request_rule:
AdvertiserID: $.http.body.advertiser_id
AutoTracking: $.http.body.auto_tracking
CoreUserID: $.context.core_user_id
EventSetID: $.http.body.event_set_id
EventSetName: $.http.body.name
response_cookie: []
response_header: []
response_rule:
advertiser_id: $.rpc.output.OfflineEventSet.AdvertiserID
auto_tracking: $.rpc.output.OfflineEventSet.AutoTracking
create_time: $.rpc.output.OfflineEventSet.CreatedAt
description: $.rpc.output.OfflineEventSet.Description
event_set_id: $.rpc.output.OfflineEventSet.ID
name: $.rpc.output.OfflineEventSet.Name
update_time: $.rpc.output.OfflineEventSet.UpdatedAt
x-open-scene-labels: []
x-open-settings:
pop_resp_nullvalue: false
/pixel/create/:
post:
operationId: Pixel Create
parameters:
- description: Authorized access token. For details, see [Authentication](https://ads.tiktok.com/marketing_api/docs?id=1738373164380162).
in: query
name: Access-Token
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
properties:
advertiser_id:
description: ''
type: string
x-open-allow-strlist: false
x-open-allow-strnum: false
x-open-convert:
- int64(%s)
x-open-field-id: 1
x-open-source: $.http.body.advertiser_id
partner_name:
description: ''
type: string
x-open-allow-strlist: false
x-open-allow-strnum: false
x-open-field-id: 4
x-open-source: $.http.body.partner_name
pixel_category:
description: ''
type: string
x-open-allow-strlist: false
x-open-allow-strnum: false
x-open-enum:
enum_package_expired: false
enum_package_id: 1802417609811970
enum_package_name: PixelCategory
enums:
- description: ''
is_valid: true
key: CONTACTS
value: '3'
- description: ''
is_valid: true
key: CUSTOMIZE_EVENTS
value: '5'
- description: ''
is_valid: true
key: FILLING_FORM
value: '2'
- description: ''
is_valid: true
key: LANDING_PAGE
value: '4'
- description: ''
is_valid: true
key: ONLINE_STORE
value: '1'
key_format: string
strict: true
use_part: false
validate_only: false
value_format: int32
x-open-field-id: 3
x-open-source: $.http.body.pixel_category
pixel_name:
description: ''
type: string
x-open-allow-strlist: false
x-open-allow-strnum: false
x-open-field-id: 2
x-open-source: $.http.body.pixel_name
x-open-validate:
- error_msg: pixel_name cannot be empty.
expr: len(%s) > 0
required:
- advertiser_id
- pixel_name
type: object
x-open-allow-strlist: false
x-open-allow-strnum: false
responses:
'200':
content:
application/json:
schema:
properties:
code:
description: Response code. For the complete list of response codes and descriptions, see [Appendix - Return Codes](https://ads.tiktok.com/marketing_api/docs?id=1737172488964097). Will be shown only if it is an error request.
format: int64
type:
- integer
- 'null'
x-open-allow-strlist: false
x-open-field-id: 4
data:
description: Returned data. The response for the SDK can be checked in the document for the API given in the description.
properties: {}
type:
- object
- 'null'
x-open-allow-strlist: false
x-open-field-id: 1
x-open-source: $.rpc.output.data
message:
description: Response message. For details, see [Appendix - Return Codes](https://ads.tiktok.com/marketing_api/docs?id=1737172488964097).
type:
- string
- 'null'
x-open-allow-strlist: false
x-open-field-id: 3
request_id:
description: The log ID of a request, which uniquely identifies the request.
type:
- string
- 'null'
x-open-allow-strlist: false
x-open-field-id: 2
type: object
x-open-allow-strlist: false
description: OK
summary: Create a Pixel. [Pixel Create](https://business-api.tiktok.com/portal/docs?id=1740858779758593)
tags:
- Measurement
x-open-allowlist: {}
x-open-denylist: {}
x-open-rules:
base_rule: null
extra_rule:
base_source: []
http_query_source: []
http_source:
- name: advertiser_id
required: true
source: $.http.body.advertiser_id
type: number
- name: pixel_name
required: true
source: $.http.body.pixel_name
type: string
- name: pixel_category
required: false
source: $.http.body.pixel_category
type: number
- name: partner_name
required: false
source: $.http.body.partner_name
type: string
plugins:
after_response: []
before_request: []
request_query_rule: null
request_rule:
advertiser_id: $.http.body.advertiser_id
partner_name: $.http.body.partner_name
pixel_category: $.http.body.pixel_category
pixel_name: $.http.body.pixel_name
response_cookie: []
response_header: []
response_rule:
advanced_matching_fields: $.rpc.output.advanced_matching_fields
partner_name: $.rpc.output.partner_name
pixel_category: $.rpc.output.pixel_category
pixel_code: $.rpc.output.pixel_code
pixel_id: $.rpc.output.pixel_id
pixel_name: $.rpc.output.pixel_name
x-open-scene-labels: []
x-open-settings:
pop_resp_nullvalue: false
/pixel/event/create/:
post:
operationId: Pixel Event Create
parameters:
- description: Authorized access token. For details, see [Authentication](https://ads.tiktok.com/marketing_api/docs?id=1738373164380162).
in: query
name: Access-Token
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
properties:
advertiser_id:
description: ''
type: string
x-open-allow-strlist: false
x-open-allow-strnum: false
x-open-convert:
- int64(%s)
x-open-field-id: 1
x-open-source: $.http.body.AdvID
pixel_events:
description: ''
items:
properties:
currency:
description: ''
type: string
x-open-allow-strlist: false
x-open-allow-strnum: false
x-open-enum:
enum_package_expired: false
enum_package_id: null
enum_package_name: null
enums:
- description: ''
is_valid: true
key: USD
value: '0'
- description: ''
is_valid: true
key: JPY
value: '1'
- description: ''
is_valid: true
key: INR
value: '2'
key_format: string
strict: true
use_part: false
validate_only: false
value_format: int32
x-open-field-id: 6
x-open-source: $.http.body.Events[].Currency
currency_value:
description: ''
type: string
x-open-allow-strlist: false
x-open-allow-strnum: false
x-open-field-id: 7
x-open-source: $.http.body.Events[].CurrencyValue
event_code:
description: ''
type: string
x-open-allow-strlist: false
x-open-allow-strnum: false
x-open-field-id: 2
x-open-source: $.http.body.Events[].PixelEventCode
event_id:
description: ''
type: string
x-open-allow-strlist: false
x-open-allow-strnum: false
x-open-convert:
- int64(%s)
x-open-field-id: 1
x-open-source: $.http.body.Events[].PixelEventID
event_name:
description: ''
type: string
x-open-allow-strlist: false
x-open-allow-strnum: false
x-open-field-id: 8
x-open-source: $.http.body.Events[].EventName
event_type:
description: ''
type: string
x-open-allow-strlist: false
x-open-allow-strnum: false
x-open-enum:
enum_package_expired: false
enum_package_id: 1803595545929730
enum_package_name: PixelEventType
enums:
- description: ''
is_valid: true
key: ADD_BILLING
value: '266'
- description: ''
is_valid: true
key: BUTTON
value: '5'
- description: ''
is_valid: true
key: CONSULT
value: '97'
- description: '[DEPRECATED] use button instead'
# --- truncated at 32 KB (78 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/tiktok-ads/refs/heads/main/openapi/tiktok-ads-measurement-api-openapi.yml