POST /api/v1/posts/<post_id>/schedule
Schedule a post for future publication on LinkedIn. BodySuccess
Same-day warning (HTTP 200)
Whenconfirm_same_day: true and other posts exist that day:
confirm_same_day: false to force through.
Exact-slot warning (HTTP 200)
If another post is within ±5 min, this wins oversame_day_posts (stronger signal):
LinkedIn token expired
Other errors
400 missing_data— missingat_iso400 too_late— more than 6 months in the future400 failed_tag—@mentionscouldn’t be resolved (LinkedIn privacy)404 post_not_found— IDOR or deleted
POST /api/v1/posts/<post_id>/cancel-schedule
Cancel a scheduled post. Idempotent — returns success even if not scheduled.200 { "success": true }— scheduled, now cancelled200 { "success": true, "already_unscheduled": true }— wasn’t scheduled409 already_published— can’t cancel, already on LinkedIn
POST /api/v1/posts/<post_id>/publish
Publish a post immediately, regardless of any prior schedule.200 { "success": true, ... }— published, LinkedIn URL in response body400 token_expired—actionable: truewith reconnect hint409 already_published404 post_not_found