Sends a draft to review. If the channel is set to auto-approve and there are no claim flags, Mark approves it. The result says which happened and, for website channels, names the next CMS step (queued at a time, or a CMS draft that does not go live); an auto-approved email stays approved, since Mark doesn't send email yet, and so does a LinkedIn Article, which a person publishes on LinkedIn.
Refuses a post the channel would reject at publish (no media on Instagram, TikTok, Pinterest or YouTube; more than 10 Instagram carousel items; a PDF on a channel other than LinkedIn, with other media, or over 100 MB; no Pinterest board; over the length limit; missing required meta) and a post that uses a phrase this workspace blocks (the error names each phrase and why) or still has a placeholder such as [needs source] or TODO (the error names each one), and lists what to fix. Content-check warnings never stop it; Mark stores all six results for the new revision.
Does not publish immediately unless the post is already scheduled and auto-approved. If this refuses because the workspace is not set up, call get_setup_status and check its rows, including skipped ones.
Related: save_post, get_post, approve_posts, get_connect_link.