Skip to main content
GET
List posts

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-11-03) 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,
2026-10-30,
2026-10-31,
2026-11-03
Example:

"2026-11-03"

Path Parameters

business_id
string
required

The workspace ID (a UUID from list_workspaces). Named business_id for backward compatibility; workspaces were called businesses.

Query Parameters

status
enum<string>[] | null

Filter by post status. Repeat it to get several at once (status=NEW&status=DRAFT returns both). NEW = draft awaiting your team's review (incl. freshly generated posts), 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.

Available options:
NEW,
SCHEDULED,
PUBLISHED,
DRAFT,
REJECTED
post_ids
string<uuid>[] | null

Return only these posts (up to 100; repeat the param). With the default view=full each item is exactly what get_post returns, so this is the way to read several posts in one call. Ids from another workspace are left out, not an error. Combines with status; cannot be combined with q.

Maximum array length: 100
limit
integer
default:20

Max results per page (1-100)

Required range: 1 <= x <= 100
cursor
string | null

The next value from the previous page's response, passed back verbatim. Leave it out for the first page. When next is null you have every result.

q
string | null

Keyword search. Returns only posts whose caption, title, or attached media's description/transcript contains this text (case-insensitive). Searching the media description is what finds 'the post about my dog' when the dog is in the image and the caption never says 'dog'. Trashed (REJECTED) posts are left out — pass status=REJECTED to search them. Combines with status, and pages with cursor just like an unfiltered listing.

view
enum<string>
default:full

Response detail. full (default) returns each post's whole caption plus publish_results, platform_overrides, and queue placement. summary returns a lean row — caption PREVIEW, media count + fingerprint, status, schedule, and metadata — with none of the heavy fields, for cheaply scanning or de-duping a large history without blowing your token budget.

Available options:
full,
summary

Response

Successful Response

items
PostResponse · object[]
required

This page of results.

next
string | null

Opaque cursor for the next page; null when there are no more. Pass it back verbatim as ?cursor=. Do not construct or decode it.