Dry run and test mode

Get an API key

POST /v1/posts?dry_run=true runs the checks of a real publication: the rules of each network, the connected account, the media, the date and your plan. It stores nothing and sends nothing.

Ready

When every network would accept the post, the answer is 200 with status: "ready" and, for each target, the account that would publish.

Refused

Otherwise the answer is 422 post_refused, with one detail per reason. Each detail names its network, its code, and says what to fix.

json
{
  "error": {
    "code": "post_refused",
    "message": "The post would not be published: x: the text is too long (300 characters, at most 280)",
    "details": [
      {
        "platform": "x",
        "code": "caption_too_long",
        "max": 280,
        "actual": 300,
        "message": "x: the text is too long (300 characters, at most 280)"
      }
    ],
    "docUrl": "https://www.sofia-post.com/developers/errors#post_refused"
  }
}

Every reason is listed in errors.

Test mode

An application created in test mode (sofia_test_at_… tokens) reads your real Workspace but never writes to it: its posts are simulated and judged on the same rules, and any real write answers 403 live_mode_required. Keys and clients created in Settings › API are live; use the dry run to check without publishing.