Skip to main content
GET
Get post

Authorizations

Authorization
string
header
required

Bearer an mk_live_ API key. A key is ORG-SCOPED: it grants full access to every resource in that organization, with no per-endpoint scoping (see the uid pseudo-permission on each operation). Manage keys at https://app.mymarky.ai.

Headers

Marky-Version
enum<string>

Opt into a dated API version. Omit to stay on the floor (2026-04-08) forever — unpinned clients never break. Pin to a newer date (e.g. 2026-08-06) to receive the newest response shapes. Unknown values fall back to the floor. See https://docs.mymarky.ai for the versioning model.

Available options:
2026-04-08,
2026-07-17,
2026-08-02,
2026-08-04,
2026-08-06
Example:

"2026-08-06"

Path Parameters

business_id
string
required

A UUID identifier.

post_id
string
required

A UUID identifier.

Response

Successful Response

id
string
required

Post ID

business_id
string
required

Business this post belongs to

created_at
string
required

When the post was created

url
string
required
read-only

Link to view this post in the Marky app (openable/shareable — show it to the user). This is where the post lives in Marky; link is the outbound URL published with the post.

scheduled_posts_url
string | null
required

Link to the workspace's scheduled-posts list in the Marky app — where the user sees this post waiting in the lineup. Present once the post is SCHEDULED; null otherwise.

caption
string | null

Post caption text

status
string | null

Post status. One of: NEW (draft awaiting your team's review, incl. freshly generated), DRAFT (approved by a reviewer on your team), REJECTED (declined by a reviewer), SCHEDULED (queued for a future time), PUBLISHED (already posted). DRAFT/REJECTED are your team's review verdicts — Marky does not gate publishing on them. Same values the list_posts status filter accepts.

media_urls
string[] | null

Attached media URLs

media_details
PostMedia · object[] | null

The same attached media as media_urls, in the same order, but with each item's description and transcript. Use this when analysing what content performs: the creative is usually the reason a post did well, and a URL alone tells you nothing about what was in it.

design_id
string | null

The design attached to this post, if any. Media is derived from this design; edit it with revise_post_design or create_design + a new link.

cover_media_id
string | null

Media id of the cover image shown before this post's video plays. Marky generates one from the first frame when you don't send one.

video_cover_timestamp_ms
integer | null

The frame (milliseconds from the start) TikTok uses as its cover. Null when nobody has chosen a cover for this post.

Clickable destination URL for platforms that support link posts: the Facebook link attachment, the Google Business CTA button, and the Pinterest pin destination. Other platforms ignore it — put links in the caption there. Must be http(s).

restrict_publish_to
string[] | null

Platforms this post is restricted to. Null means ALL connected platforms.

restrict_publish_to_integration_ids
string[] | null

Exact connected accounts (integration ids) this post is restricted to. Null means targeting is platform-level (see restrict_publish_to).

scheduled_publish_time
string | null

The exact time this post is scheduled to publish (set via schedule). Null for drafts, queued posts, and already-published posts.

published_at
string | null

When the post was actually published (past timestamp). Null until it publishes.

metadata
Metadata · object | null

Caller-defined string key/value pairs set at create/update time — your own analytics dimensions (e.g. media_type, format, style, hook, topic). Marky returns them verbatim and never interprets them.

platform_overrides
PlatformOverrideModel · object[] | null

Per-platform content overrides on this post, if any. Each platform publishes its override fields where set, the post's own fields otherwise.

publish_results
PublishResultResponse · object[]

Per-platform publish outcomes — one entry per platform this post was sent to. Poll this until every entry has a terminal status (success or failed) to know publishing is complete.

queue
QueueInfo · object | null

Daily-queue placement. Present only when the post is in a recurring daily queue (status SCHEDULED with no adhoc_publish_time). Null for drafts, adhoc-scheduled, and published posts.

repeating_cron
string | null

If set, this post repeats: a standard 5-field cron string (e.g. '0 9 * * 1' = every Monday 9am UTC). When it publishes, Marky auto-creates the next occurrence at the next cron time. Null = a one-off post.

updated_at
string | null

Last update time