Syndroodocs
Version0.6.0-rc.1unpublished release candidateWebsiteGitHub

Publish and retry

One logical post moves through two commands: a preview freezes the text, the target account and the payload into a plan, and an execution runs that same plan.

The document

{
  "schemaVersion": 1,
  "key": "release-announcement-001",
  "content": "Syndroo now publishes from the command line.",
  "platforms": ["bluesky", "threads"],
  "overrides": { "bluesky": { "content": "Shorter version for Bluesky." } }
}

key is the stable identity of this post for its whole life (1-128 characters from A-Z a-z 0-9 . _ : -). content is non-blank text of at most 10000 Unicode code points, platforms is a non-empty list naming only bluesky or threads, and overrides may only name a selected platform. The file is strict JSON, limited to 64 KiB before decoding, and --input - reads stdin.

Preview

The preview writes the plan and makes no platform request. Read the frozen text and the target account before continuing; the plan lives 24 hours from creation.

syndroo publish --input post.json --dry-run --json

Execute

Execution sends at most one content request per target. When nobody can answer a prompt, the run needs both --yes and --no-input; a missing confirmation exits 2 and sends nothing.

syndroo publish --plan <result.planId> --yes --no-input --json

Receipts

syndroo receipts list --limit 20
syndroo receipts show <result.operationId> --json

Each target reports status, reused, attempts, remoteId, url, writeDisposition and a retry verdict; the aggregate is succeeded, partial, failed, unknown or blocked. A null url means no verified link is known, so do not build one.

Retry

Retry is explicit and two-phase, exactly like publish. Only targets whose failure is provably not_applied are eligible, and only within three content attempts per logical delivery; a selection that includes an unknown target blocks the whole retry, so narrow it to other safe targets instead. A succeeded target is never republished.

syndroo retry <result.operationId> --to threads --dry-run --json
syndroo retry --plan <result.planId> --yes --no-input --json

unknown means the write may have reached the platform. Report it as unknown and stop; do not resend that content blindly.

Next steps