diff --git a/public-api/openapi.json b/public-api/openapi.json index fe355dc6..18dc76ba 100644 --- a/public-api/openapi.json +++ b/public-api/openapi.json @@ -2830,6 +2830,10 @@ }, "path": { "type": "string" + }, + "thumbnailTimestamp": { + "type": "number", + "description": "Milliseconds into the video to use as the cover/thumbnail frame. Supported by Instagram, Instagram Standalone, TikTok Business, and TikTok (Direct Post only, not the UPLOAD/inbox flow); other providers ignore it. For TikTok, in our testing the cover was applied only to public posts (privacy_level PUBLIC_TO_EVERYONE)." } } }, diff --git a/public-api/posts/create.mdx b/public-api/posts/create.mdx index 2cabf1e4..ae7e825f 100644 --- a/public-api/posts/create.mdx +++ b/public-api/posts/create.mdx @@ -29,6 +29,20 @@ Before re-submitting, strip the server-managed fields from the fetched object, r Then set a fresh `type` (`now`, `schedule`, or `draft`) and `date`, and `POST` the cleaned object. +## Video cover frame (`thumbnailTimestamp`) + +Each media object in a post's `image` array accepts an optional `thumbnailTimestamp` field: the number of milliseconds into the video to use as the cover/thumbnail frame. + +```json +{ + "image": [{ "id": "vid-123", "path": "https://uploads.postiz.com/video.mp4", "thumbnailTimestamp": 3000 }] +} +``` + +Supported providers: Instagram, Instagram Standalone, TikTok Business, and TikTok (Direct Post only: the `UPLOAD`/inbox flow does not support cover selection). Other providers ignore the field. + +For TikTok, in our testing the cover was applied only to public posts (`privacy_level: "PUBLIC_TO_EVERYONE"`); posts published with a restricted privacy level kept the first frame as the cover. + ## Provider-Specific Settings When creating posts, each social media platform requires different settings. The `settings` object must include a `__type` field that identifies the platform.