Skip to main content
An AI assistant can write a post, check it against each platform’s rules and suggest when it should go out. It can’t make it go out. That stays with you.

How a proposal works

1

The app proposes

POST /v1/posts/{id}/proposals (scope posts:schedule) with the connected accounts to post to and when:
  • "now": as soon as you accept, or
  • an ISO 8601 date-time with a time zone, at least 5 minutes and at most 365 days ahead, e.g. 2026-11-03T09:00:00+01:00.
The post must be a draft (or have failed); it then waits with the status to_accept. To change a waiting proposal, withdraw it first, then propose again. Up to 10 accounts per proposal.
2

You decide in CaptureFlow

The answer’s approval_url opens the post in CaptureFlow. It shows Proposed by an AI assistant through the CaptureFlow API, the accounts and the time (or Goes out as soon as you accept), with Accept and Reject.
3

Accepted posts are scheduled

Only when you accept is the post scheduled, through the same publishing as everything else in CaptureFlow. Reject sends it back to a draft.
An app can take a proposal back while it waits: DELETE /v1/posts/{id}/proposals returns the post to a draft.

Before proposing

Call POST /v1/posts/{id}/preflight first: it checks the post against each account’s platform rules (length, media, format) without changing anything, and lists the issues to fix. When proposing, some platforms’ rules are checked again (a failure is refused with preflight_failed and details.issues); every platform’s rules, media included, are checked again when you accept. Each target in the preflight answer has ok, and when it is false, a code: PREFLIGHT_FAILED (with issues), ACCOUNT_NOT_CONNECTED, PLATFORM_NOT_ENABLED, PLATFORM_NOT_SUPPORTED or SOCIAL_ACCOUNT_NOT_FOUND. These describe each target; they are not request errors.

In agency workspaces

In an agency client workspace, proposals follow the workspace’s approval rules, as posts prepared in the app do. Outside approval workspaces, the person who created a proposal through the API may accept it themselves.

Errors