Creating Posts
Use posts:create to schedule or draft posts to one or more platforms.
Simple Post
postiz posts:create \
-c "Hello world!" \
-s "2025-01-15T10:00:00Z" \
-i "your-integration-id"
Options
| Flag | Description |
|---|
-c, --content | Post content. Use multiple times for threads/comments. |
-s, --date | Schedule date in ISO 8601 format (required) |
-t, --type | schedule (default) or draft |
-m, --media | Comma-separated media URLs (use after uploading) |
-i, --integrations | Comma-separated integration IDs (required) |
-d, --delay | Delay between comments in milliseconds (default: 5000) |
--settings | Platform-specific settings as JSON |
-j, --json | Path to a JSON file for complex posts |
Draft Post
postiz posts:create \
-c "Review this before publishing" \
-s "2025-01-15T10:00:00Z" \
-t draft \
-i "your-integration-id"
Post with Media
Upload your media first with the upload command, then reference the returned URL:
postiz posts:create \
-c "Check out this photo!" \
-m "https://uploads.postiz.com/your-image.jpg" \
-s "2025-01-15T10:00:00Z" \
-i "your-integration-id"
Pass -c multiple times to create a thread. Each comment can have its own media with a corresponding -m flag:
postiz posts:create \
-c "Thread 1/3" -m "image1.jpg" \
-c "Thread 2/3" -m "image2.jpg" \
-c "Thread 3/3" \
-s "2025-01-15T10:00:00Z" \
-i "twitter-integration-id"
Use -d to control the delay between comments (in milliseconds):
postiz posts:create \
-c "First tweet" \
-c "Second tweet" \
-c "Third tweet" \
-s "2025-01-15T10:00:00Z" \
-d 2000 \
-i "twitter-integration-id"
Multi-Platform Post
Send the same content to multiple platforms by passing comma-separated integration IDs:
postiz posts:create \
-c "Posting everywhere!" \
-s "2025-01-15T10:00:00Z" \
-i "twitter-id,linkedin-id,facebook-id"
Some platforms require additional settings. Pass them as JSON with --settings:
postiz posts:create \
-c "Check out this discussion" \
-s "2025-01-15T10:00:00Z" \
--settings '{"subreddit":[{"value":{"subreddit":"programming","title":"My Post","type":"text"}}]}' \
-i "reddit-integration-id"
Use postiz integrations:settings <id> to discover what settings are available for each platform. See Integrations for details.
Complex Posts with JSON
For posts with detailed platform-specific content, use a JSON file:
postiz posts:create --json post.json
Example post.json:
{
"integrations": ["twitter-123", "linkedin-456"],
"posts": [
{
"provider": "twitter",
"post": [{ "content": "Short tweet version", "image": [] }]
},
{
"provider": "linkedin",
"post": [{ "content": "Longer LinkedIn version with more detail", "image": [] }],
"settings": { "__type": "linkedin" }
}
]
}
Listing Posts
Filter by Date Range
postiz posts:list \
--startDate "2025-01-01T00:00:00Z" \
--endDate "2025-01-31T23:59:59Z"
Filter by Customer
postiz posts:list --customer "customer-id"
Connecting Missing Posts
Some platforms don’t return a post ID immediately after publishing (the releaseId is set to "missing"). When this happens, you can fetch recent content from the provider and connect the correct one to your post. This enables analytics tracking.
List Available Content
postiz posts:missing <post-id>
Returns an array of recent content items from the provider with their ID and thumbnail URL:
[
{
"id": "7321456789012345678",
"url": "https://p16-sign.tiktokcdn-us.com/obj/cover-image.jpeg"
},
{
"id": "7321456789012345679",
"url": "https://p16-sign.tiktokcdn-us.com/obj/cover-image2.jpeg"
}
]
This only works for posts where the releaseId is "missing". Returns an empty array if the provider doesn’t support this feature.
Connect a Post
Once you’ve identified the correct content, update the release ID:
postiz posts:connect <post-id> --release-id "7321456789012345678"
After connecting, the post will support full analytics via postiz analytics:post.
Full Workflow
# 1. Find posts with missing release IDs
postiz posts:list | jq '.posts[] | select(.releaseId == "missing") | {id, content}'
# 2. Get available content from the provider
postiz posts:missing <post-id>
# 3. Connect the correct content
postiz posts:connect <post-id> --release-id "7321456789012345678"
# 4. Verify analytics now work
postiz analytics:post <post-id>
Deleting Posts
postiz posts:delete <post-id>