Content & releases
Posting, scheduling, release campaigns
How does scheduled auto-publishing work?
Create a post in Content, select platforms (TikTok / Instagram / Threads / X), upload media, set scheduled_for, and save with status Scheduled. The composer also surfaces an Edit button on each image for the built-in cropper (per-platform aspect presets — 1:1, 4:5, 9:16, 16:9). The orchestrator runs every 15 minutes, picks up due posts, and publishes them. Per-platform success/failure shows inline on the post; click into /posts/[id] for per-platform engagement once it's live.
What happens if a post fails to publish on one platform?
We retry 5 times across cron ticks (~1.5 hours). After that the post status moves to Failed and the per_platform jsonb shows which platforms succeeded vs which failed (with error messages). Posts that succeeded on at least one platform stay marked Posted.
Can I post the same content with different captions per platform?
Yes. The post composer has a Per-platform overrides toggle that lets you write a longer Instagram caption, a tighter X version, etc. Default body falls through to any platform without an override.
How are release campaigns different from regular content posts?
Release campaigns (Releases module) wrap a single drop with checklist + marketing plan + ad campaigns + content schedule + pre-save link + distributor status — everything tied to one ISRC/UPC. Content posts are atomic — single posts that may or may not be tied to a release.
Can I tag a content post with a release?
Yes — when creating a post you can pick a release. Engagement metrics on that post then roll up to the release's campaign view, so you can see which posts drove pre-saves, streams, etc.
Where can I see analytics for a single post?
Click any post on /content or the platform-specific lists to land on /posts/[id]. The detail page shows per-platform engagement (views, likes, comments, shares, saves), publish status per platform, the original media, captions per platform, and a freshness indicator showing how stale the metrics are. Inline metrics on the post list pull from the same social_post_metrics table the detail page reads from, so the two stay in sync.
How often do post stats refresh after publishing?
Immediately on publish (first metrics within ~60 seconds), then again at the 24-hour mark for early-engagement comparison. After that, the nightly social sync at ~3am UTC picks up ongoing growth. You can also click Refresh metrics on the /posts/[id] page to force an immediate pull if you need fresh numbers right now.
How do I bulk-select and delete posts on /content?
Toggle Select mode on the Recent Posts list, check the rows you want, click Delete selected. Works for posts in any status (draft, scheduled, posted, failed). Soft-deleted for 30 days; ask support to restore if you nuked something by mistake.

Social media
TikTok, Instagram, Threads, X
How do I connect TikTok?
Settings → Integrations → Social media → TikTok → Connect. Follow the OAuth flow. We pull profile (followers, video count, total likes) + every video with view/like/comment/share counts. Note: TikTok requires app review for production — until our app is approved, only test accounts pre-added in their dashboard can connect.
How do I connect Instagram?
Settings → Integrations → Social media → Instagram → Connect. Meta OAuth flow. Important: your IG account must be Business or Creator AND linked to a Facebook Page (Meta's hard requirement, not ours). If you see No Instagram Business account found, convert your IG to Business + link a Page in Meta Business Suite, then retry.
Why does Instagram require a Business account?
Meta's Graph API only exposes Instagram data for Business and Creator accounts. Personal accounts have no API access. Switching is free and doesn't change anything user-facing on your IG profile.
Can I auto-publish posts to socials?
Yes. Create a content post in the Content module, pick platforms, schedule it, and the orchestrator publishes for you within 15 minutes of the scheduled time. Per-platform success/failure shows on the post. Auto-publish supports TikTok (direct publish OR send to TikTok drafts inbox), Instagram (Path A silent-audio injection OR Path B hand off to the IG app), Threads, and X today (NOT YouTube or Facebook). Each platform exposes its options in the composer's per-platform toggle strip.
Why does X (Twitter) only show follower count?
X's free API tier is read-restricted to the bare minimum. Tweet-level analytics requires their Basic tier ($200/mo) or Pro ($5,000/mo). For now we pull follower count snapshots daily; if you upgrade your X dev account to Basic, tweet-level metrics will start flowing automatically.
Why do auto-publish scopes need a re-connect?
When you first connected a platform, the OAuth scopes were read-only (we only needed to PULL data). Auto-publishing requires write scopes (tweet.write, instagram_content_publish, video.publish, threads_content_publish). Settings → Integrations → reconnect the platform and grant the publish scope when prompted.
How do I send a draft to my TikTok inbox?
Two different things share the word 'draft', so we name them explicitly. Save draft = the post stays in AZMTH as an unfinished draft (status: draft on content_post). Send to TikTok drafts = AZMTH uploads the media to TikTok's INBOX endpoint (video.upload or photo.upload scope) so it appears in your TikTok app's draft inbox, ready for you to finalize and publish from the TikTok app itself. Useful when you want TikTok's native editor (effects, sounds) for the final polish but want the orchestration to live in AZMTH. The composer's TikTok toggle lets you pick which on a per-post basis.
How does Instagram handle drafts and audio? (Path A vs Path B)
Instagram's publish API has tight constraints — Reels need an audio track and we can't always source one from the original media. We support two paths. Path A — silent-audio injection: AZMTH muxes a silent track into the video before sending it through the Container → Publish flow, so videos without audio can still publish via API. Path B — hand off to IG app: AZMTH generates a downloadable copy + a deep-link into the Instagram composer; you finalize on your phone where you can add a real audio track from IG's library. Choose per-post in the composer; Path A is the default when the source has its own audio.
Why did my IG post fail with a container error?
Instagram's Container API rejects media for reasons like invalid aspect ratio, oversized file, unsupported codec, or temporarily-rate-limited account. We surface Meta's exact error_user_msg on the failed post so you see what IG actually said, not a generic 'failed.' Common fixes: re-crop the image to a supported aspect (use AZMTH's built-in cropper), trim videos to under 90 seconds, or wait a few minutes if the account is rate-limited. /staff/errors retains the full Meta payload if our team needs to investigate.