Social is the distribution primitive. Naive wraps a social media service behind a consistent API so agents can connect social media accounts, create and publish posts across multiple platforms, schedule content, and retrieve analytics — all without custom OAuth flows or frontend components.Documentation Index
Fetch the complete documentation index at: https://usenaive.ai/docs/llms.txt
Use this file to discover all available pages before exploring further.
CLI First
Tools
| Tool | Type | Description | Cost |
|---|---|---|---|
social_activate | Setup | Activate social media for the company | Free |
social_connect | Setup | Get OAuth URL for a single platform | Free |
social_portal | Setup | Get portal URL for multi-platform connect | Free |
social_status | Info | Check activation + connected accounts | Free |
social_accounts | Info | List connected accounts | Free |
social_sync | Info | Sync connected accounts | Free |
social_create_post | Core | Create and optionally publish a post | 1 credit (if publishing) |
social_publish_post | Core | Publish a draft | 1 credit |
social_upload | Core | Upload media from URL | Free |
social_list_posts | Info | List posts with status filter | Free |
social_get_post | Info | Get post details | Free |
social_edit_post | Core | Edit a draft post | Free |
social_delete_post | Core | Delete a post | Free |
social_post_analytics | Info | Get post performance metrics | Free |
social_post_comments | Info | Get post comments | Free |
social_account_analytics | Info | Get account-level analytics | Free |
social_disconnect | Setup | Disconnect an account | Free |
Activation
Before posting, social media must be activated for the company.Connecting Accounts
The API returns an OAuth URL. The user or agent opens this URL in a browser to authorize the social account. No custom frontend is needed.Single Platform
Multi-Platform Portal
For connecting several platforms at once, use the portal endpoint:POST /v1/social/sync to refresh the local account list.
Creating Posts
Parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
content | string | Yes | — | Post text content |
title | string | No | Auto from content | Post title (auto-generated if omitted) |
platforms | string[] | Yes | — | Platforms to post to |
platform_data | object | No | Auto-generated | Per-platform overrides (see Platform Defaults below) |
media_urls | string[] | No | — | Media URLs — auto-uploaded and attached to video/image platforms |
youtube_type | string | No | "SHORT" | YouTube type: "SHORT" (vertical, under 3min) or "VIDEO" (landscape) |
publish_now | boolean | No | false | Publish immediately |
scheduled_at | string | No | — | ISO 8601 datetime to schedule |
account_ids | string[] | No | All active | Specific account UUIDs to post from |
If neither
publish_now nor scheduled_at is set, the post is created as a draft. Drafts can be edited and published later with POST /v1/social/posts/:id/publish.Video Post Example (YouTube + TikTok)
Platform Defaults
When you omitplatform_data, the API applies sensible defaults per platform. You can override any field by passing platform_data.
| Platform | Auto-applied defaults | Notes |
|---|---|---|
text truncated to 280 chars | Text-only platform | |
| BLUESKY | text truncated to 300 chars | Text-only platform |
| YOUTUBE | text (100 char title), type (SHORT/VIDEO), privacy: "PUBLIC", madeForKids: false | Requires media. youtube_type controls SHORT vs VIDEO |
| TIKTOK | text, privacy: "PUBLIC_TO_EVERYONE" | Requires media for video posts |
text, type: "REEL" | Defaults to Reel for video | |
text, title (100 char limit) | Pass "sr" in platform_data for subreddit | |
title (100 char limit), text | Media recommended | |
text (full content) | No truncation | |
text (full content) | No truncation | |
| THREADS | text (full content) | No truncation |
| MASTODON | text (full content) | No truncation |
Overriding Defaults
Passplatform_data to customize per-platform behavior:
Media Handling
Whenmedia_urls are provided, the server:
- Uploads each URL to the social media service (handles format conversion for unsupported types)
- Attaches
uploadIdsto all media-capable platforms: YouTube, Instagram, TikTok, Facebook, Pinterest - Text-only platforms (Twitter, LinkedIn, Bluesky, Threads) are unaffected
Scheduling & Drafts
- Draft
- Publish Now
- Schedule
Omit both Edit with
publish_now and scheduled_at to create a draft:PATCH /v1/social/posts/:id, then publish with POST /v1/social/posts/:id/publish.Analytics
Retrieve performance metrics for published posts:Analytics data varies by platform. The shape depends on which platforms the post was published to.
Supported Platforms
| Platform | Key | Type | Character Limit |
|---|---|---|---|
| Twitter/X | TWITTER | Text + media | 280 |
LINKEDIN | Text + media | — | |
INSTAGRAM | Media (Reel default) | — | |
FACEBOOK | Text + media | — | |
| TikTok | TIKTOK | Video | — |
| YouTube | YOUTUBE | Video (SHORT/VIDEO) | 100 (title) |
| Threads | THREADS | Text | — |
PINTEREST | Media + title | 100 (title) | |
REDDIT | Text + title | 100 (title) | |
| Bluesky | BLUESKY | Text | 300 |
| Mastodon | MASTODON | Text | — |
Error Handling
| Error | Cause | Recovery |
|---|---|---|
feature_not_configured | BUNDLE_SOCIAL_API_KEY not set | Configure the API key |
invalid_input | Social not activated | Call POST /v1/social/activate |
invalid_input | Missing required fields | Check content, platforms params |
resource_not_found | Post or account not found | Verify UUID |
insufficient_credits | Not enough credits to publish | Top up with POST /v1/billing/topup |
provider_error | Social media service error | Retry or check platform requirements |