Commands

tracee posts

Draft, schedule, publish, duplicate and take down posts.

posts list

List posts.

tracee posts list [--status draft,scheduled] [--from <date>] [--to <date>] [--limit <n>] [--all]

Calls listPosts.

posts get

Show one post.

tracee posts get <post_id>

Calls getPost.

posts create

Create a post, and publish or schedule it.

tracee posts create --body <text>|--body-file <file|-> [--channel linkedin|<id>]… [--title <text>] [--link <url>] [--media <id>]… [--thread <text>]… [--planned-for <time>] [--publish now|<time>] [--note <text>]

Calls createPost.

posts publish

Publish now, or at a time.

tracee posts publish <post_id> [--at <time>] [--note <text>]

Calls publishPost.

posts delete

Delete a post that never went out (a person approves it).

tracee posts delete <post_id> [--note <text>]

Calls deletePost.

submit

Send a post for approval. Files an approval request in a person's inbox, optionally for a time.

tracee posts submit <post_id> [--scheduled-for <scheduled_for>] [--note <note>]
  • <post_id>argumentrequired

    The post, from GET /api/v1/posts (or the id POST /api/v1/posts returns)

    uuid

  • --scheduled-forstring

    ISO 8601 with offset

    date-time

  • --notestring

    Context for the approver

    up to 500 characters

--data <json|@file|-> sends the whole body instead of flags.

Example
tracee posts submit $POST_ID \
  --note "Launch day post, please check the numbers"
Calls POST /api/v1/posts/{post_id}/submit-for-approval

reschedule

Move a scheduled post. Keeps its approval.

tracee posts reschedule <post_id> --scheduled-for <scheduled_for>
  • <post_id>argumentrequired

    The post, from GET /api/v1/posts (or the id POST /api/v1/posts returns)

    uuid

  • --scheduled-forstringrequired

    ISO 8601 with offset

    date-time

--data <json|@file|-> sends the whole body instead of flags.

Example
tracee posts reschedule $POST_ID --scheduled-for 2026-11-20T09:00:00Z
Calls POST /api/v1/posts/{post_id}/reschedule

unschedule

Cancel a scheduled post. It stays approved, ready to schedule again.

tracee posts unschedule <post_id>
  • <post_id>argumentrequired

    The post, from GET /api/v1/posts (or the id POST /api/v1/posts returns)

    uuid

Example
tracee posts unschedule $POST_ID
Calls POST /api/v1/posts/{post_id}/unschedule

unpublish

Take a live post down. From every platform, or only variant_ids. Always asks a person: the answer is the approval request.

tracee posts unpublish <post_id> [--variant-ids <variant_ids>] [--note <note>]
  • <post_id>argumentrequired

    The post, from GET /api/v1/posts (or the id POST /api/v1/posts returns)

    uuid

  • --variant-idsstring[]

    Unpublish only these variants. From GET /api/v1/posts/{post_id} post_id=<post_id> (variants[].id). Repeat the flag or separate values with commas.

    each uuid

  • --notestring

    Context for the approver

    up to 500 characters

--data <json|@file|-> sends the whole body instead of flags.

Example
tracee posts unpublish $POST_ID --note "Wrong link in the first comment"
Calls POST /api/v1/posts/{post_id}/unpublish

duplicate

Duplicate a post. Copies any post, even a published one, as a new draft.

tracee posts duplicate <post_id>
  • <post_id>argumentrequired

    The post, from GET /api/v1/posts (or the id POST /api/v1/posts returns)

    uuid

Example
tracee posts duplicate $POST_ID
Calls POST /api/v1/posts/{post_id}/duplicate

next-slot

Next free posting time. The next time free on all those channels, from their posting times (else 9:00, 12:00 and 17:00).

tracee posts next-slot --channel-ids <channel_ids>
  • --channel-idsstring[]required

    The channels to find a time for. From GET /api/v1/connections Repeat the flag or separate values with commas.

    each uuid

Example
tracee posts next-slot --channel-ids $CHANNEL_ID
Calls GET /api/v1/schedule/next-slot

saved

Posts the team saved from other networks. Saved with the Tracee browser extension from LinkedIn, X, TikTok and others: text, author, counts and link. Ideas to write from.

tracee posts saved [--platform <platform>] [--limit <limit>]
  • --platformstring

    One network, e.g. linkedin, x, tiktok

    up to 40 characters

  • --limitinteger

    The limit

    1–100

Example
tracee posts saved --platform linkedin --limit 10
Calls GET /api/v1/saved-posts

replies

Suggest comments for someone else's post. Three comments in the brand's voice: an insight, a question, another angle.

tracee posts replies --post-text <post_text> [--post-author <post_author>] [--platform <platform>] [--angle <angle>]
  • --post-textstringrequired

    The text of the post to reply to

    1–20,000 characters

  • --post-authorstring

    Who wrote it

    up to 200 characters

  • --platformstring

    The post's network

    up to 40 characters

  • --anglestring

    What the person wants to say, in a few words

    up to 600 characters

--data <json|@file|-> sends the whole body instead of flags.

Example
tracee posts replies \
  --post-text "What is the one metric you would never stop tracking?" \
  --platform linkedin
Calls POST /api/v1/reply-suggestions

send-to-tasks

Send a post to a task app. Makes a task, card, issue, item or record in a connected task app (Asana, Trello, ClickUp, monday.com, Jira, Linear, Todoist, Google Tasks, Airtable, Notion) with the copy, the channels, the post's time as the due date and a link back. Asks a person first: the answer is the approval request.

tracee posts send-to-tasks <post_id> [--task-app <task_app>] [--place-ids <place_ids>] [--note <note>]
  • <post_id>argumentrequired

    The post, from GET /api/v1/posts (or the id POST /api/v1/posts returns)

    uuid

  • --task-appstring

    The task app, e.g. asana; the last one used if left out

    up to 40 characters

  • --place-idsstring[]

    One id per level of where the task goes, outermost first; the app's saved place if left out. From GET /api/v1/task-places task_app=<task_app> Repeat the flag or separate values with commas.

    up to 4 itemseach 1–300 characters

  • --notestring

    Context for the approver

    up to 500 characters

--data <json|@file|-> sends the whole body instead of flags.

Example
tracee posts send-to-tasks $POST_ID --task-app "…"
Calls POST /api/v1/posts/{post_id}/send-to-tasks

task-places

Where a task can go. The choices for the next level (workspace, project, board, list, table…) in a connected task app; add an id to place_ids and ask again until every level is chosen.

tracee posts task-places [--task-app <task_app>] [--place-ids <place_ids>]
  • --task-appstring

    The task app, e.g. asana; the last one used if left out

    up to 40 characters

  • --place-idsstring[]

    One id per level of where the task goes, outermost first; the app's saved place if left out. From GET /api/v1/task-places task_app=<task_app> Repeat the flag or separate values with commas.

    up to 4 itemseach 1–300 characters

Calls GET /api/v1/task-places

search

Find posts by date, status, platform or words. Posts newest first, like the calendar: from/to pick by when a post goes out or went out; status, platforms, channel_ids, customer_id and query narrow them.

tracee posts search [--from <from>] [--to <to>] [--status <status>] [--platforms <platforms>] [--channel-ids <channel_ids>] [--customer-id <customer_id>] [--query <query>] [--limit <limit>]
  • --fromstring

    From this date or time

    up to 40 characters

  • --tostring

    Up to this date (inclusive) or time

    up to 40 characters

  • --statusstring[]

    Only these statuses Repeat the flag or separate values with commas.

    up to 9 items

    Available options:draftpending_approvalapprovedrejectedscheduledpublishedpartially_publishedfailedremoved

  • --platformsstring[]

    Only posts with a variant on these networks, e.g. ["linkedin", "x"] Repeat the flag or separate values with commas.

    up to 40 itemseach up to 30 characters

  • --channel-idsstring[]

    Repeat the flag or separate values with commas.

    each uuid

  • --customer-idstring

    Only posts on this client's channels. From GET /api/v1/customers

    uuid

  • --querystring

    Words in the title or copy

    up to 200 characters

  • --limitinteger

    The limit

    1–100

Calls GET /api/v1/calendar

get-many

Get several posts. Up to 50 posts by id; each answers on its own (ok or error).

tracee posts get-many --post-ids <post_ids>
  • --post-idsstring[]required

    Several posts at once, from GET /api/v1/posts Repeat the flag or separate values with commas.

    1–50 itemseach uuid

Example
tracee posts get-many --post-ids $POST_ID
Calls GET /api/v1/batch/posts

delete-many

Delete several posts. Posts that never went out; each becomes an approval request when the workspace asks for one, and answers on its own.

tracee posts delete-many --post-ids <post_ids> [--note <note>]
  • --post-idsstring[]required

    Several posts at once, from GET /api/v1/posts Repeat the flag or separate values with commas.

    1–50 itemseach uuid

  • --notestring

    Context for the approver

    up to 500 characters

--data <json|@file|-> sends the whole body instead of flags.

Example
tracee posts delete-many --post-ids $POST_ID
Calls POST /api/v1/batch/posts/delete

settings

Change one channel's settings on a post. Platform settings of one channel's version of a post that hasn't gone out; copy, media and time stay.

tracee posts settings <post_id> <channel_id> --settings <settings> [--replace-settings]
  • <post_id>argumentrequired

    The post, from GET /api/v1/posts (or the id POST /api/v1/posts returns)

    uuid

  • <channel_id>argumentrequired

    The channel whose version to change. From GET /api/v1/connections

    uuid

  • --settingsobjectrequired

    Platform settings to set, e.g. {"visibility": "CONNECTIONS"} JSON text or @file.json.

    any keys

  • --replace-settings / --no-replace-settingsboolean

    Replace all settings instead of merging

--data <json|@file|-> sends the whole body instead of flags.

Example
tracee posts settings $POST_ID $CHANNEL_ID --settings '{}'
Calls PATCH /api/v1/posts/{post_id}/channels/{channel_id}/settings

comments

List a post's comments.

tracee posts comments <post_id>
  • <post_id>argumentrequired

    The post, from GET /api/v1/posts (or the id POST /api/v1/posts returns)

    uuid

Example
tracee posts comments $POST_ID
Calls GET /api/v1/posts/{post_id}/comments

comment

Comment on a post. A note for the team on the post. Agents can't approve; nothing is published.

tracee posts comment <post_id> --comment <comment>
  • <post_id>argumentrequired

    The post, from GET /api/v1/posts (or the id POST /api/v1/posts returns)

    uuid

  • --commentstringrequired

    The text

    1–5,000 characters

--data <json|@file|-> sends the whole body instead of flags.

Example
tracee posts comment $POST_ID --comment "…"
Calls POST /api/v1/posts/{post_id}/comments

export

Send a post to a newsletter or website as a draft. Copies the post into Mailchimp, Kit, beehiiv, MailerLite, Brevo or Klaviyo as a newsletter draft, or into Webflow, Contentful or WordPress.com as a draft. Never sends or publishes. Without app or target_id the answer lists the choices; the same post sent to the same place again updates that draft.

tracee posts export <post_id> [--app <app>] [--target-id <target_id>] [--subject <subject>] [--field-map <field_map>]
  • <post_id>argumentrequired

    The post, from GET /api/v1/posts (or the id POST /api/v1/posts returns)

    uuid

  • --appstring

    Where the draft goes: mailchimp, kit, beehiiv, mailerlite, brevo, klaviyo, webflow, contentful, wordpress_com

    up to 40 characters

  • --target-idstring

    The list, publication or collection (POST /api/v1/posts/{post_id}/export without it lists them)

    up to 500 characters

  • --subjectstring

    The email subject or page title (default: the post's first line)

    up to 250 characters

  • --field-mapobject

    Websites: which field gets each part, e.g. {"body": "post-body", "image": ""} JSON text or @file.json.

    any keys

--data <json|@file|-> sends the whole body instead of flags.

Example
tracee posts export $POST_ID --app hubspot
Calls POST /api/v1/posts/{post_id}/export