curl --request POST \
--url https://api.creatok.ai/v1/publishing/tasks \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--data '
{
"kind": "tiktok_shop_video",
"connection_uid": "conn_ts_0000000000000000000000",
"timezone": "EST",
"media": {
"prepared_video_id": "pm_11111111-1111-4111-8111-111111111111"
},
"provider_options": {
"product_id": "YOUR_PRODUCT_ID",
"product_title": "Everyday bag",
"title": "A closer look",
"is_ai_generated": true,
"precheck_enabled": true
}
}
'{
"task_id": "<string>",
"publish_job_id": "<string>",
"kind": "tiktok_shop_video",
"connection_uid": "<string>",
"client_source": "<string>",
"status": "queued",
"created_at": 123,
"cost": {
"amount_usd": "<string>",
"refunded_usd": "<string>"
},
"raw_status": "<string>",
"schedule_time": 123,
"completed_at": 123,
"result": {
"content_ids": [
"<string>"
],
"content_urls": [
"<string>"
]
},
"error": {}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"request_id": "<string>",
"param": "<string>"
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"request_id": "<string>",
"param": "<string>"
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"request_id": "<string>",
"param": "<string>"
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"request_id": "<string>",
"param": "<string>"
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"request_id": "<string>",
"param": "<string>"
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"request_id": "<string>",
"param": "<string>"
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"request_id": "<string>",
"param": "<string>"
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"request_id": "<string>",
"param": "<string>"
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"request_id": "<string>",
"param": "<string>"
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"request_id": "<string>",
"param": "<string>"
}
}Submit one Shop video or photo set
Submit a TikTok Shop video or photo set. For video, provide media.prepared_video_id and optionally prepared_cover_id; provider_options requires product_id and product_title. For photos, provide media.file_ids and provider_options.post_type with the matching product_links or shop_link. Use snake_case throughout. timezone is required; omit schedule for immediate publishing or set schedule.at to Unix milliseconds, at least 60 seconds and no more than 30 days ahead. Save kind and task_id from the 202 response and poll GET /publishing/tasks//; acceptance is not publication. Reuse the same Idempotency-Key and body after a timeout. A changed body with the same key returns 409. See Publishing request options for video and photo option fields.
TikTok Shop only. The key creator must remain a workspace member with current account access. Read requests: 120/minute/workspace; writes: 30/minute/workspace (configurable). Media preparation and new submissions require Pro or higher. Video submission uses your API wallet; photos, reads, media preparation and cancellation are free. See https://www.creatok.ai/app/api-platform/pricing for current prices. Accepted tasks continue after plan downgrade. Unknown results are not automatically resent or refunded.
curl --request POST \
--url https://api.creatok.ai/v1/publishing/tasks \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--data '
{
"kind": "tiktok_shop_video",
"connection_uid": "conn_ts_0000000000000000000000",
"timezone": "EST",
"media": {
"prepared_video_id": "pm_11111111-1111-4111-8111-111111111111"
},
"provider_options": {
"product_id": "YOUR_PRODUCT_ID",
"product_title": "Everyday bag",
"title": "A closer look",
"is_ai_generated": true,
"precheck_enabled": true
}
}
'{
"task_id": "<string>",
"publish_job_id": "<string>",
"kind": "tiktok_shop_video",
"connection_uid": "<string>",
"client_source": "<string>",
"status": "queued",
"created_at": 123,
"cost": {
"amount_usd": "<string>",
"refunded_usd": "<string>"
},
"raw_status": "<string>",
"schedule_time": 123,
"completed_at": 123,
"result": {
"content_ids": [
"<string>"
],
"content_urls": [
"<string>"
]
},
"error": {}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"request_id": "<string>",
"param": "<string>"
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"request_id": "<string>",
"param": "<string>"
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"request_id": "<string>",
"param": "<string>"
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"request_id": "<string>",
"param": "<string>"
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"request_id": "<string>",
"param": "<string>"
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"request_id": "<string>",
"param": "<string>"
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"request_id": "<string>",
"param": "<string>"
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"request_id": "<string>",
"param": "<string>"
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"request_id": "<string>",
"param": "<string>"
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"request_id": "<string>",
"param": "<string>"
}
}Authorizations
Body
Response
Accepted attempt or current original attempt on replay, including failed attempts. Debited and refunded amounts reflect booked transactions.

