URL Scheme API

Scheduled Action

Edit or delete scheduled posts directly from scripts and automations

Scheduled Action

Modify or remove queued/draft posts that already live in Statuz. Perfect for automation workflows that need to tweak dates, text, attachments, or accounts without opening the app UI.

Syntax

statuz://scheduled?action={edit|delete}&id={post-id}&[parameters]
  • action=edit — Update an existing scheduled post.
  • action=delete — Remove a scheduled post entirely.

⚠️ Published posts cannot be edited or deleted via this endpoint. Only draft, queued, processing, or failed posts are eligible.

Shared Parameters

ParameterTypeRequiredDescription
actionstringYesedit or delete
idstringYesScheduled post UUID
stealthModebooleanNotrue deletes/edits silently, false shows UI (default: false)

Edit Parameters

ParameterTypeDescription
textstringReplace single-post content
threadstring (JSON array)Replace entire thread (URL-encode the JSON)
threadOpsstring (JSON array)Granular operations: append, insert, replace, delete
dateISO8601New scheduled date/time
timezonestringNew timezone (IANA format)
platformsstringComma-separated platforms (x,bluesky,mastodon)
statusstringdraft or queued
accountsstring/JSONdefault, all, or per-platform JSON map
autosplitbooleanAuto-split long posts into a thread
mediastringComma-separated file paths/URLs (max 4 attachments)
filesstringAlias for media when passing raw absolute paths
quotestringURL/ID of post to quote
  • Provide either thread or threadOps. When both are included, thread wins.
  • accounts JSON should be URL-encoded (jq -sRr @uri) before injecting.
  • Attachments accept local paths, file:// URLs, or remote HTTP/HTTPS resources. Supported formats: images (PNG, JPG, GIF) and videos (MP4, MOV).

Examples

Edit Text Silently

POST_ID="550e8400-e29b-41d4-a716-446655440000"
TEXT=$(printf %s "Updated copy with #launch" | jq -sRr @uri)
open "statuz://scheduled?action=edit&id=$POST_ID&text=$TEXT&stealthMode=true"

Change Date & Timezone

POST_ID="550e8400-e29b-41d4-a716-446655440000"
open "statuz://scheduled?action=edit&id=$POST_ID&date=2025-01-21T14:00:00&timezone=America/New_York"

Replace Entire Thread

POST_ID="550e8400-e29b-41d4-a716-446655440000"
THREAD=$(printf '["Intro","Deep dive","CTA"]' | jq -sRr @uri)
open "statuz://scheduled?action=edit&id=$POST_ID&thread=$THREAD&status=queued"

Granular Thread Operation

POST_ID="550e8400-e29b-41d4-a716-446655440000"
OPS=$(printf '[{"op":"append","text":"New closing post"}]' | jq -sRr @uri)
open "statuz://scheduled?action=edit&id=$POST_ID&threadOps=$OPS"

Delete with Confirmation Dialog

open "statuz://scheduled?action=delete&id=550e8400-e29b-41d4-a716-446655440000&stealthMode=false"

Tips

  • Run scheduled_list via MCP (or the built-in calendar) to find valid post IDs before editing.
  • Use stealthMode=true for unattended automation; set to false when you want to review changes in the UI.
  • URL-encode any JSON payloads (thread, threadOps, accounts) to avoid malformed URLs.
  • Combine with Shortcuts, Raycast, Hazel, or cron jobs to maintain a zero-click content pipeline.

Try Statuz today,
it's free.