publisher
Publisher
Schedule content to connected Instagram accounts via Zernio and manage account connections. Handles media upload, caption writing, timing, and account health.
Base URL: https://zernio.com/api/v1
Auth header: Authorization: Bearer $ZERNIO_API_KEY
Account Management
Connect Account
Direct the user to connect their Instagram account through Zernio's web dashboard:
- Go to zernio.com and log in.
- Navigate to the accounts/connections section.
- Follow the OAuth flow to connect an Instagram account.
Zernio handles the Instagram authentication — there is no API endpoint to provision accounts. All connections happen through the dashboard.
Verify Connection
GET /accounts
Authorization: Bearer $ZERNIO_API_KEY
Returns an array of connected accounts. Confirm the expected account appears. Note the _id for scheduling.
Account Health
- Disconnected accounts — OAuth tokens can expire. Re-authorize via dashboard.
- Engagement drops — may indicate algorithm penalties.
- Account restrictions — content policy violations on the platform side.
Multiple Accounts
Each account appears in GET /accounts. Connect one at a time and verify each.
Scheduling
Step 1 — Verify Account
GET /accounts
Authorization: Bearer $ZERNIO_API_KEY
Only schedule to accounts that appear in this list.
Step 2 — Upload Media
Get presigned URL:
POST /media/presign
Authorization: Bearer $ZERNIO_API_KEY
{
"filename": "video.mp4",
"contentType": "video/mp4"
}
Upload file to presigned URL:
PUT [uploadUrl]
Content-Type: video/mp4
[raw file bytes]
Use the publicUrl when creating the post.
Step 3 — Write Caption
- Keep it short — 1-3 lines max.
- Include a CTA — "Link in bio", "DM me [keyword]", etc.
- Use 3-5 relevant hashtags — niche-specific, not generic.
- Match the character's voice from the channel spec.
Step 4 — Create Post
POST /posts
Authorization: Bearer $ZERNIO_API_KEY
{
"content": "[CAPTION]",
"mediaItems": ["[PUBLIC_URL]"],
"platforms": [
{
"accountId": "[ACCOUNT_ID]",
"platform": "instagram",
"platformSpecificData": {
"contentType": "reel"
}
}
],
"scheduledFor": "2026-04-10T14:00:00.000Z",
"timezone": "America/New_York",
"publishNow": false
}
Set publishNow: true to post immediately.
Step 5 — Confirm
GET /posts
Authorization: Bearer $ZERNIO_API_KEY
Update: PUT /posts/:id | Cancel: DELETE /posts/:id
Timing
- Post 1-2x per day per account.
- Space posts 8-12 hours apart if posting twice.
- Default to 9am and 6pm in the account's timezone.
Key Behaviors
- Never schedule to an account not in
GET /accounts. - Always upload media first via presign flow.
- Scheduling and post creation happen in one call.
- Don't batch-schedule 30 days — schedule 3-7 days ahead max.
More from tfcbot/agent-video-team
critic
Analyze video and image content using watch prompts for quality checks, verification, and deep analysis. QA gate before posting.
2director
>-
2director-qa
>-
2editor-overlay
>-
2researcher
Scrape and analyze top-performing content on Instagram and TikTok to build a data-driven content strategy. Walk the user through identifying ICP accounts, analyzing hooks and formats, and building a research brief.
2editor-captions
>-
2