overlay: 1.0.0
info:
title: API Evangelist enhancements for the TikTok Marketing API
version: 1.0.0
extends: openapi/tiktok-ads-marketing-api-openapi.yml
x-generated: '2026-08-13'
x-method: generated
x-source: >-
Captures the enhancements API Evangelist applied when assembling the merged OpenAPI from the 202
per-operation fragments TikTok publishes in github.com/tiktok/tiktok-business-api-sdk/yml_files, plus the
runtime semantics the fragments omit. The harvested document is never mutated in place; this overlay is
the record of what we added and why.
actions:
- target: $.info
description: Record provenance and the rating context on the document itself.
update:
x-apievangelist-source: https://github.com/tiktok/tiktok-business-api-sdk/tree/main/yml_files
x-apievangelist-assembly: mechanical union of 202 per-operation OpenAPI 3.0.1 documents; 0 path collisions, 0 duplicate operationIds
x-apievangelist-coverage-note: >-
202 operations of the ~400 TikTok exposes. The MCP tool table names 377 endpoints, of which 191
resolve to an operation here; the remaining 186 exist only in the HTML API reference.
- target: $.servers
description: >-
The per-operation fragments carry no servers block at all. Added the production and sandbox base URLs
TikTok documents at portal/docs?id=1738855331457026.
update:
- url: https://business-api.tiktok.com/open_api/v1.3
description: Production
- url: https://sandbox-ads.tiktok.com/open_api/v1.3
description: Sandbox
- target: $.components.securitySchemes
description: >-
The fragments declare the credential as a per-operation QUERY parameter named Access-Token. The docs,
every published curl example, and the live 40104 error body all say it is a HEADER. Added a header
apiKey scheme as the authoritative declaration.
update:
AccessToken:
type: apiKey
in: header
name: Access-Token
- target: $.info
description: Runtime semantics an agent needs that the harvested contract does not express.
update:
x-apievangelist-error-model:
rfc9457: false
http_status_on_error: 200
success_field: code
success_values: [0, 20001]
note: HTTP status is not the error channel; `code` is. All 202 operations declare only a 200 response.
x-apievangelist-idempotency:
supported: false
note: no idempotency key; no write is safe to blind-retry
x-apievangelist-rate-limit:
headers: []
error_code: 40100
note: no RateLimit-*/Retry-After headers; throttling is visible only in the body
x-apievangelist-path-convention:
trailing_slash: required
note: omitting the trailing slash returns "404 page not found"
x-apievangelist-id-convention:
type: string
note: v1.3 moved ids from number to string; several exceed the JS safe integer range
- target: $.paths[*][*]
description: >-
Flag every operation as belonging to a contract whose only declared response is 200, so tooling does
not infer that non-2xx cases are impossible.
update:
x-apievangelist-responses-declared: ['200']
x-apievangelist-error-channel: body.code
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
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.