Connecting an agent?

Follow the step-by-step setup guide for Codex, Claude Code, Cursor, Gemini CLI, Windsurf, or VS Code Chat. GitHub Copilot's cloud coding agent has its own guide.

Included on every plan

The REST API and MCP are included on Free and Pro. The basic editor is free; Pro adds advanced controls and saved templates. Free supports 10 scheduled posts per calendar month and one connected account; Pro removes both quotas. See pricing and media cleanup.

Authentication

Create an API key in Settings. Send Authorization: Bearer ck_… on REST and MCP requests.

Short videos, from upload to schedule

Available on Free and Pro. Send an authenticated multipart POST /videos/upload with file (MP4), title, and a UUID requestId. Limit: 100 MB and 3-180 seconds. Audio is preserved.

For an existing photo render, call MCP create_video_from_carousel or POST /videos/from-carousel with renderId, title, requestId, and secondsPerSlide (1-10, default 3). This creates a separate, silent 1080 × 1920 MP4.

Poll GET /videos/jobs/:id or MCP list_video_jobs. Reuse the same request ID after a timeout. A ready job includes its renderId and review link. A draft or queue receipt does not mean it was published.

After the user reviews the exact video, use create_post with a UUID requestId, the ready render, caption, account, privacy, schedule, disclosures, videoConsent: true, explicit disableDuet and disableStitch, and autoAddMusic: false. Query live creator information first. Use isAigc when the video contains AI-generated content. Keep API keys and MP4 bytes out of chat.

Use MCP list_posts_page for compact summaries (default 20, maximum 50, optional status and cursor), and get_publish_status for delivery details. Check storage with GET /renders/usage; remove an unused render with DELETE /renders/:id. Media referenced by posts or running conversions is protected.

MCP

Endpoint: POST /mcp (Streamable HTTP). Configure your agent with this URL and your API key.

  • list_assets, list_carousels, get_carousel, create_carousel, update_carousel
  • list_templates, get_template, save_template, delete_template, create_carousel_from_template, create_app_store_showcase
  • design_carousel, get_carousel_design, update_carousel_design: create or patch editor slides
  • list_renders, upload_render: list or upload exact slide renders
  • create_post, schedule_post, list_posts, cancel_post, retry_post
  • list_tiktok_accounts, get_tiktok_account, get_tiktok_creator_info, get_publish_status
  • get_analytics_overview, list_post_performance, list_cover_performance, list_caption_performance, list_hashtag_performance, list_timing_performance, get_growth_insights, refresh_tiktok_analytics

REST (selected)

  • GET/POST /templates · GET/PATCH/DELETE /templates/:id · POST /templates/:id/apply: saved editor layouts
  • GET/POST /assets: library
  • GET /tiktok/accounts · GET /tiktok/accounts/:id/creator-info · DELETE /tiktok/accounts/:id
  • POST /posts (privacy, comments, automatic recommended music, brand toggles) · POST /posts/:id/cancel · POST /posts/:id/retry
  • POST /carousels/:id/renders: multipart PNG, JPEG, or WebP slides converted to TikTok-ready JPEGs
  • GET /api/analytics and POST /api/analytics/refresh: official TikTok metrics for Postnero-published posts, filtered by account and Postnero published-date range

Analytics requires TikTok's approved video.list scope and a fresh authorization from each connected account. Cover and hashtag rankings are correlations, not claims about what caused reach. Refreshes use a five-minute per-account cooldown and report incomplete public-ID or metric coverage explicitly.

Cost model

Postnero does not bill AI credits. Your agent (Cursor / Claude / Codex) supplies copy and orchestration; Postnero stores media and publishes via the official TikTok API.