Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/groniz/groniz-cli/llms.txt

Use this file to discover all available pages before exploring further.

The groniz posts commands are the primary way to create and manage content across your connected social channels. This page covers creating immediate and scheduled posts, building thread chains, working with drafts, and resolving missing release IDs that block analytics.

Creating a post

Post immediately

Omit the -s flag to publish a post right away. Pass your content with -c and target one or more integrations with -i.
groniz posts create -c "Your content here" -i "integration-id"

Schedule a post

Add the -s flag with an ISO 8601 datetime to schedule the post for a future time.
groniz posts create \
  -c "Scheduled content" \
  -i "integration-id" \
  -s "2025-01-15T10:00:00Z"

Post to multiple channels

Repeat the -i flag for each channel, or pass a comma-separated list of integration IDs in a single flag.
# Repeated flag
groniz posts create -c "Cross-post content" \
  -i "x-integration-id" \
  -i "linkedin-integration-id" \
  -i "instagram-integration-id"

# Comma-separated
groniz posts create -c "Cross-post content" \
  -i "x-integration-id,linkedin-integration-id,instagram-integration-id"

JSON mode

Pass --json to supply a full JSON payload for the post, which is required when attaching media or setting platform-specific fields beyond the basic flags.
groniz posts create \
  -c "Post with an image" \
  -i "integration-id" \
  --json '{"images": [{"id": "img_7a2b3c4d", "path": "https://cdn.groniz.com/uploads/img_7a2b3c4d/image.jpg"}]}'

JSON output

All groniz posts commands return JSON. A successful posts create response looks like this:
{
  "id": "post_abc123",
  "content": "Your content here",
  "integrations": ["integration-id"],
  "scheduledAt": "2025-01-15T10:00:00Z",
  "status": "scheduled",
  "createdAt": "2025-01-14T08:22:00Z"
}
Pipe any command’s output to jq for readable, filterable JSON: groniz posts create ... | jq '.'

Schedule a post — step by step

1

Find your integration ID

Run groniz integrations list and note the id of the channel you want to post to. See Integrations for details.
2

Check the channel's settings

Run groniz integrations settings <id> to confirm required fields and character limits for that platform before composing your content.
3

Create the scheduled post

Pass your content, integration ID, and an ISO 8601 datetime to the -s flag:
groniz posts create \
  -c "Your scheduled content" \
  -i "integration-id" \
  -s "2025-01-15T10:00:00Z"
4

Confirm the post

Check the status field in the JSON response. A value of "scheduled" confirms the post is queued.

Thread posts

To create a thread, repeat the -c flag for each post in the chain. Groniz publishes them in order as a connected thread on platforms that support it (e.g. X, Threads).
groniz posts create \
  -c "This is the first post in the thread." \
  -c "This is the reply to the first post." \
  -c "And this continues the thread further." \
  -i "x-integration-id"
Each -c value becomes one node in the thread chain in the order you supply them.

Draft posts

Add --draft to save a post without publishing or validating it. Drafts are useful when you want to stage content and review it before committing.
groniz posts create \
  -c "Work-in-progress content" \
  -i "integration-id" \
  --draft
--draft skips all server-side validation. Required platform fields (such as a Reddit subreddit or a title) will not be checked until you attempt to publish. Errors that would have been caught at creation time will surface later, potentially blocking the post from going out.

Listing posts

groniz posts list returns a JSON array of your posts. Use it to audit scheduled content or find post IDs for downstream commands.
groniz posts list
Example output:
[
  {
    "id": "post_abc123",
    "content": "Your scheduled content",
    "status": "scheduled",
    "scheduledAt": "2025-01-15T10:00:00Z"
  },
  {
    "id": "post_def456",
    "content": "A draft post",
    "status": "draft",
    "scheduledAt": null
  }
]
Filter by date range with the --from and --to flags, each accepting an ISO 8601 date:
groniz posts list --from "2025-01-01" --to "2025-01-31"

Deleting a post

Delete a post by its ID. This action cannot be undone.
groniz posts delete <post-id>

Release IDs and analytics

Every published post should receive a release ID — the identifier that links your Groniz post record to the content as it exists on the platform. When a release ID is missing, analytics for that post are unavailable.

Find available published content

If a post has no release ID, use posts missing to list content that the platform has available and that could be connected to it:
groniz posts missing <post-id>

Connect a post to its release ID

Once you’ve identified the correct release ID from the output above, use posts connect with --post-id and --release-id to link the post:
groniz posts connect --post-id "post_abc123" --release-id "release-id-from-platform"
After connecting, analytics commands will return data for that post.
See Analytics for details on which platforms support analytics and what metrics are available.

Build docs developers (and LLMs) love