Documentation
Learn how to connect SendIt to your AI assistant and start publishing to social media with natural language.
Overview
SendIt is an MCP (Model Context Protocol) server that enables AI assistants to publish content to social media platforms. Once connected, you can post to LinkedIn, Instagram, and more using natural conversation.
Instant Publishing
Post text, images, carousels, and videos directly through your AI assistant.
Smart Scheduling
Schedule posts for optimal times with automatic timezone handling.
Analytics
Track engagement, impressions, and reach across all platforms.
Multi-Platform
32 platforms across social, community, messaging, content, creative, local, streaming, newsletter, and tech categories.
SendIt supports OAuth2, API key/token, webhook, and custom connect flows across the full platform catalog. Use GET /api/v1/connect/{platform} for the platform action, POST /api/v1/connect/token for token/custom credentials, and POST /api/v1/connect/webhook for webhook platforms.
For machine-readable, always-current platform and tool availability use GET /api/v1/capabilities or MCP resource sendit://meta/capabilities. In conservative GA mode, beta tools are hidden automatically.
Authentication
SendIt uses API keys to authenticate your AI assistant. This ensures your social media accounts are only accessible by you.
Each user gets their own API key. Your connected social accounts and posts are completely private and isolated from other users.
Getting Your API Key
Sign in to SendIt
Go to sendit.infiniteappsai.com/login and enter your email address. We'll send you a magic link - no password needed.
Open the Dashboard
After clicking the magic link, you'll be redirected to your dashboard.
Create an API Key
In the API Keys section, click "Create New Key". Give it a name (e.g., "Claude Desktop") and click Create.
Copy Your Key
The full API key is shown only once. Copy it immediately and store it securely.
Your API key is only shown once when created. If you lose it, you'll need to create a new one.
API Key Format
SendIt API keys follow this format:
sk_live_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Keys always start with sk_live_ followed by 32 characters.
Configuring Your AI Assistant
Once you have your API key, configure it in your AI assistant. See the platform-specific instructions below:
- Claude Desktop - Add to environment variables
- Claude.ai Web - Add Authorization header
- Gemini CLI - Add to environment variables
- Grok (xAI) - Add Authorization header
- ChatGPT - Add Authorization header
Tier Limits
API key limits depend on your subscription tier:
| Feature | Free | Creator | Team | Agency |
|---|---|---|---|---|
| API Keys | 1 | 3 | 10 | Unlimited |
| Posts/Month | 30 | 200 | Unlimited | Unlimited |
| Platforms | 2 | 5 | Unlimited | Unlimited |
| Rate Limit | 30/min | 60/min | 120/min | 300/min |
Upgrade at sendit.infiniteappsai.com/dashboard/billing
Quick Start
Get started in three simple steps:
Connect your AI assistant
Add SendIt to Claude, Gemini, Grok, or ChatGPT using the MCP configuration. See the AI Platforms section for setup instructions.
Connect your social accounts
Use connect_platform (or connect_instagram/connect_linkedin) to authenticate with OAuth, token, webhook, or custom setup flows. See the Social Media section for details.
Start publishing
Ask your AI assistant to post content. For example: "Post to LinkedIn: Excited to share our latest update!"
Supported Platforms
Use these platform IDs in MCP tools (for example connect_x) and in REST endpoints like GET /api/v1/connect/{platform}, publish_content, and schedule_content.
Some platforms may be gated until the full catalog is enabled. Operators can control this with SENDIT_FULL_CATALOG_ENABLED (global) and SENDIT_KILLED_PLATFORMS (per-platform kill switch).
| ID | Name | Auth | Mode | Category |
|---|---|---|---|---|
x | X (Twitter) | oauth2 | official | social |
linkedin | oauth2 | official | social | |
linkedin-page | LinkedIn Page | oauth2 | official | social |
facebook | oauth2 | official | social | |
instagram | oauth2 | official | social | |
threads | Threads | oauth2 | official | social |
bluesky | Bluesky | api_key | official | social |
mastodon | Mastodon | oauth2 | official | social |
nostr | Nostr | custom | unofficial | social |
youtube | YouTube | oauth2 | official | video |
tiktok | TikTok | oauth2 | official | video |
lemmy | Lemmy | api_key | official | community |
discord | Discord | webhook | official | messaging |
slack | Slack | webhook | official | messaging |
telegram | Telegram | api_key | official | messaging |
pinterest | oauth2 | official | social | |
dribbble | Dribbble | oauth2 | official | creative |
devto | DEV.to | api_key | official | content |
hashnode | Hashnode | api_key | official | content |
gmb | Google My Business | oauth2 | official | local |
whop | Whop | api_key | unofficial | community |
producthunt | Product Hunt | oauth2 | official | tech |
For authoritative, machine-readable limits use get_platform_requirements or GET /api/v1/requirements?platform=<id>. For platform-specific publish settings use get_platform_settings_schema or GET /api/v1/platforms/schema.
Publishing
SendIt supports multiple content types across platforms.
publish_content
Publish content immediately to one or multiple platforms.
Parameters
platforms- Array of platform IDs (e.g.["linkedin"],["instagram"])content- Content payload objectcontent.text- Post caption/text (required)content.mediaUrl- Optional single media URL (image/video) or local path (TikTok)content.mediaUrls- Optional array of media URLs (carousels/multi-image)content.mediaType- Optional hint:image,video, orautocontent.firstComment- Optional first comment (Instagram)content.boardId/content.boardName- Optional Pinterest board targetingcontent.platformSettings- Optional per-platform settings map (advanced)
Examples
"Post to LinkedIn: Just launched our new product! Check it out at example.com"
"Post this image to Instagram with caption 'Behind the scenes at the office'"
[Attach or provide image URL]
"Create an Instagram carousel with these 5 images about our company culture"
[Provide 2-10 image URLs]
Claude Desktop users: Use upload_media with a local file path to get a public URL.
AI assistants (Claude.ai, ChatGPT): Use create_upload_session to generate a one-click upload link for the user.
Dashboard Features
The SendIt dashboard at sendit.infiniteappsai.com/dashboard provides additional features for composing and publishing content:
- AI Hashtag Suggestions - Get instant and AI-powered hashtag recommendations based on your post content
- First Comment - Automatically post hashtags as the first comment on Instagram for cleaner captions
- Pinterest Board Selector - Visual board picker to select exactly where your pin goes
- Platform Previews - See how your post will look on each platform before publishing
- Character Counters - Real-time character limits with platform-specific validation
- External URL Import - Paste Google Drive, Dropbox, OneDrive, or Box share links directly in the composer or media library. Links are automatically resolved to direct download URLs. Supports bulk paste (one URL per line) for importing multiple files at once.
- Upload Progress - Per-file progress bars shown during media upload with SHA-256 dedup to skip re-uploading identical files
- Save to Media Library - Toggle to permanently save uploaded media to your library when scheduling a post. Unchecked media auto-expires after 30 days.
- Direct Library Upload - Upload files or import URLs directly from the Media Library page without going through the composer
AI Content Generation
Generate platform-optimized content using AI. Analyzes your media and creates tailored captions, hashtags, and descriptions for each platform.
AI automatically respects each platform's character limits and hashtag best practices. For videos, it analyzes key frames to understand the content.
generate_content
Generate AI-powered content from media or prompts without publishing.
Parameters
platforms- Target platforms for content generationmediaUrl- Optional URL to image or video for AI analysisprompt- Optional additional context or instructionsgeneration- Optional generation settings objectgeneration.tone- Optional tone: professional, casual, energetic, informativegeneration.style- Optional style: storytelling, promotional, educational, entertaininggeneration.callToAction- Optional call to action to includehashtags- Hashtag mode:on,off, orplatform_autostrictAi- If true, fail when AI is unavailable instead of using fallback templatescontentOverrides- Optional manual overrides for generated content (title,caption,hashtags)
"Generate social media content for this product video for LinkedIn, Instagram, and TikTok"
[Provide video URL]
publish_ai
Generate AI content and publish to platforms in one step.
Additional Parameters
mediaUrl- Optional media URL for the post (image/video)mediaUrls- Optional array of media URLs (carousels/multi-image)mediaType- Optional hint:image,video, orautoprompt- Optional creative prompt for AI content generationgeneration- Optional generation settings (tone,style,callToAction)hashtags- Hashtag mode:on,off, orplatform_autostrictAi- If true, fail when AI is unavailable instead of using fallback templatescontentOverrides- Optional manual overrides (title,caption,hashtags)
"Create AI content from this video and publish to Instagram, TikTok, and YouTube Shorts"
[Provide video URL]
Platform Content Defaults
| Platform | Text Limit | Default Hashtags |
|---|---|---|
| 3,000 | Off | |
| 2,200 | On (up to 30) | |
| TikTok | 2,200 | On (up to 5) |
| Threads | 500 | On |
| X | 280 | Off |
| 63,206 | Off | |
| YouTube | Title: 100, Desc: 5,000 | Off |
| 500 | Off |
Scheduling
Schedule posts for future publication with automatic execution.
schedule_content
Schedule a post for a specific date and time.
Parameters
platforms- Target platformscontent- Content payload object (same shape aspublish_content)content.text- Post caption/text (required)content.mediaUrl/content.mediaUrls- Optional media URL(s)scheduledTime- ISO 8601 datetime in UTC
"Schedule for tomorrow at 9am EST: Big announcement coming soon! Stay tuned."
get_scheduled_posts
View all pending scheduled posts.
"Show my scheduled posts"
"What posts do I have scheduled for LinkedIn?"
delete_scheduled_post
Cancel a scheduled post before it's published.
"Cancel my scheduled post with ID xyz123"
trigger_scheduled_post
Publish a scheduled post immediately instead of waiting.
"Publish my scheduled post xyz123 now"
Analytics
Track performance of your posts across all platforms.
TikTok, Instagram, Threads, and X: Fetch ALL posts from your account directly via platform API — not limited to posts made through SendIt.
LinkedIn: Returns analytics only for posts published through SendIt (LinkedIn API limitation).
Note: X free tier has rate limits (~17 calls/day).
get_analytics
Retrieve engagement metrics for your posts on a platform.
Metrics by Platform
| Metric | TikTok | Threads | X | ||
|---|---|---|---|---|---|
| Impressions/Views | Yes | Yes* | Yes | Yes | Yes** |
| Likes | Yes | Yes | Yes | Yes | Yes |
| Comments/Replies | Yes | Yes | Yes | Yes | Yes |
| Shares/Retweets | Yes | Yes | Yes | Yes | Yes |
| Saves/Bookmarks | No | Yes | No | No | Yes |
| Engagement Rate | Yes | Yes | Yes | Yes | Yes |
* Instagram views only available for Reels/Videos. ** X impressions only for tweets <30 days old.
"Get my LinkedIn analytics"
"Show Instagram engagement for my recent posts"
"How are my TikTok videos performing?"
"Show X analytics"
Media Upload
Upload local images and videos to cloud storage for use in posts.
TikTok supports direct local file uploads — no need to use upload_media first!
Just pass the local file path directly to publish_content for TikTok.
upload_media
Get a public URL for media. Required for Instagram, LinkedIn, Threads, and X when posting images.
Supported formats
- Images: JPEG, PNG, GIF, WebP (max 10MB)
- Videos: MP4, MOV, WebM (max 100MB)
Claude Desktop: Use local file paths (e.g., ~/Pictures/photo.jpg) — SendIt uploads to Cloudinary and returns a URL.
AI Assistants: Use create_upload_session for a seamless one-click upload experience (see below).
1. "Upload this image from my desktop ~/Pictures/product.jpg"
2. [SendIt returns public URL]
3. "Now post that image to Instagram with caption 'New product shot'"
AI Assistant Upload Sessions
For users of Claude.ai, ChatGPT, and other web-based AI assistants, SendIt provides a seamless upload flow:
AI creates an upload link
When you drag an image into the chat or say "post this image", the AI calls create_upload_session to generate a one-click upload link.
User clicks the link
A new tab opens with a clean drag-and-drop interface. The user drops the same image they showed the AI.
Upload completes automatically
The file uploads to secure cloud storage. User sees "Done! You can close this tab."
AI retrieves the URL
The AI calls get_upload_session to get the uploaded image URL, then uses it to publish.
User: "Post this image to Instagram" [drags image into chat]
AI: "Click here to upload your image: [upload link]"
User: [Clicks link, uploads image in new tab]
AI: "Got it! Posting to Instagram..." [success]
Web-based AI assistants can see images you share, but they can't access the raw file data needed for uploading. Upload sessions solve this with a simple one-click flow — just click the link, drop your image, and you're done!
"Post ~/Videos/product-demo.mp4 to TikTok with caption 'Check out our new product!'"
[No upload_media needed - SendIt handles it automatically!]
Dashboard App
The SendIt Dashboard is a full-featured web application for managing your social media presence. Access it at sendit.infiniteappsai.com/dashboard.
While SendIt's MCP tools let you publish via AI assistants, the dashboard provides a visual interface with additional features like platform previews, hashtag suggestions, and analytics charts.
Dashboard Features
Post Composer
Visual composer with real-time platform previews, character counters, and media uploads.
AI Hashtag Suggestions
Get instant and AI-powered hashtag recommendations based on your post content and platform.
First Comment (Instagram)
Automatically post hashtags as the first comment for cleaner captions.
Pinterest Board Picker
Visual board selector to choose exactly where your pins go.
Content Calendar
View and manage all your scheduled posts in a calendar layout.
Analytics Dashboard
Visual charts and metrics for engagement across all your connected platforms.
Platform Previews
The dashboard shows real-time previews of how your post will appear on each platform:
- Instagram - Feed post preview with profile picture and username
- Facebook - Page post preview with reactions and sharing
- LinkedIn - Professional post preview with engagement metrics
- X (Twitter) - Tweet preview with character count
- Threads - Thread post preview
- TikTok - Video post preview
- YouTube - Video/Shorts preview with title and description
- Pinterest - Pin preview with board selection
Team Features
Team and Agency plans include collaborative features:
- Team Workspaces - Shared accounts and content libraries
- Role-Based Access - Owner, Admin, Editor, and Viewer roles
- Audit Logs - Track who published what and when
- Client Management - Manage multiple brands (Agency plan)
Dashboard V2 API (Beta)
The Dashboard V2 API powers the next-generation dashboard experience. These endpoints live under /api/v2/* and return a standard response envelope.
{
"success": true,
"data": { "...": "..." },
"meta": {
"requestId": "v2_...",
"timestamp": "2026-01-01T00:00:00.000Z",
"pagination": {
"hasMore": false,
"nextCursor": "..."
}
}
}
Auth + Scope
- Auth: cookie session auth (same session as
/dashboard) - Team scope: pass
team_idas a query parameter (omit for personal scope) - Pagination: cursor-based with
cursor+limit(default 25, max 100)
Core endpoints
Connecting accounts: Use POST /api/v2/accounts/connect for api_key/webhook/custom platforms. OAuth platforms redirect via /api/auth/:platform/start.
| Endpoint | Purpose |
|---|---|
GET /api/v2/bootstrap |
Aggregated dashboard bootstrap data (user/workspace/permissions/capabilities/subscription/health) |
GET /api/v2/me |
Current user snapshot (id/email/displayName/tier/defaultTimezone) |
PATCH /api/v2/me |
Update user settings (currently supports defaultTimezone) |
GET /api/v2/channels |
List connected channels in the current scope |
GET /api/v2/accounts |
List connected accounts with display names, avatars, and token status |
POST /api/v2/accounts/connect |
Connect an account for api_key/webhook/custom platforms (OAuth redirect flows use /api/auth/:platform/start) |
POST /api/v2/accounts/disconnect |
Disconnect a connected account in the current scope (team requires admin/owner) |
GET /api/v2/platforms |
Platform catalog (capabilities, limits, and connection health) |
GET /api/v2/usage |
Usage stats + limits for the current scope (posts/platforms/scheduled/apiKeys) |
GET /api/v2/overview |
Command Center aggregated overview (accounts, usage, analytics, upcoming, queue slots) |
GET /api/v2/onboarding |
Onboarding checklist state for the current scope |
PATCH /api/v2/onboarding |
Update onboarding progress (dismiss/snooze/reset) |
GET /api/v2/capabilities |
Capabilities snapshot (tool catalog, platform catalog, and operator state) |
GET /api/v2/teams |
List teams the current user belongs to |
POST /api/v2/teams |
Create a new team (Team/Agency tier, CSRF required) |
GET /api/v2/team?team_id=<teamId> |
Get team details + current user membership |
PATCH /api/v2/team?team_id=<teamId> |
Update team settings (admin/owner, CSRF required) |
DELETE /api/v2/team?team_id=<teamId> |
Delete a team (owner only, CSRF required) |
GET /api/v2/team/members?team_id=<teamId> |
List team members in the current team scope |
PATCH /api/v2/team/members/<memberId>?team_id=<teamId> |
Update member role (admin/owner, CSRF required) |
DELETE /api/v2/team/members/<memberId>?team_id=<teamId> |
Remove member (admin/owner) or self-leave (non-owner), CSRF required |
GET /api/v2/team/invitations?team_id=<teamId> |
List pending team invitations (admin/owner) |
POST /api/v2/team/invitations?team_id=<teamId> |
Create a team invitation (admin/owner, CSRF required) |
DELETE /api/v2/team/invitations/<invitationId>?team_id=<teamId> |
Cancel a pending invitation (admin/owner, CSRF required) |
POST /api/v2/team/leave?team_id=<teamId> |
Leave a team (non-owner only, CSRF required) |
GET /api/v2/organizations |
List organizations the current user belongs to (Agency tier) |
POST /api/v2/organizations |
Create a new organization (Agency tier, CSRF required) |
GET /api/v2/organizations/<orgId> |
Get organization details + membership role + counts |
PATCH /api/v2/organizations/<orgId> |
Update organization settings (admin/owner, CSRF required) |
DELETE /api/v2/organizations/<orgId> |
Delete an organization (owner only; blocked if org has teams, CSRF required) |
GET /api/v2/organizations/<orgId>/teams |
List teams in an organization |
POST /api/v2/organizations/<orgId>/teams |
Add an existing team to an organization (org admin/owner + team owner, CSRF required) |
GET /api/v2/organizations/<orgId>/analytics |
Organization analytics across teams (admin/owner) |
GET /api/v2/organizations/<orgId>/branding |
Get organization branding (admin/owner) |
PUT /api/v2/organizations/<orgId>/branding |
Upsert organization branding (admin/owner, CSRF required) |
GET /api/v2/keys/list |
List API keys (masked) for the current scope |
POST /api/v2/keys/create |
Create an API key (returns fullKey once) |
POST /api/v2/keys/revoke |
Revoke an API key in the current scope |
GET /api/v2/brand-voice |
Manage brand voice profiles (list/create/update/delete/set default) |
GET /api/v2/media-presets |
Optional media presets used by the composer uploader (scoped personal/team) |
GET /api/v2/audit/export |
Export audit log as CSV (filters match /api/v2/audit/events) |
GET /api/v2/report-shares |
List report share links for the current scope (team requires admin/owner) |
POST /api/v2/report-shares |
Create a report share link (supports optional password + expiry) |
DELETE /api/v2/report-shares?id=<shareId> |
Revoke a report share link |
GET /api/v2/notification-destinations |
Manage team notification delivery (Slack webhook + email) |
GET /api/v2/inbox/canned-replies |
Manage Inbox canned replies (personal or team scope) |
POST /api/v2/channels/<channelId>/test |
Run a lightweight connection diagnostic for a channel (CSRF recommended) |
POST /api/v2/posts/validate |
Validate draft content against platform requirements for target accounts |
POST /api/v2/posts/content-score |
Score draft content quality for selected platforms |
POST /api/v2/ai/compose |
AI Studio: rewrite/improve/expand/shorten draft text (returns variants + suggestions) |
POST /api/v2/ai/insights |
AI Insights: generate an analytics narrative + key findings + next best actions |
POST /api/v2/ai/feedback |
Submit user feedback (rating/notes) for AI results |
GET /api/v2/ai/best-times |
Best times to post by platform (supports ?platform= + ?limit=) |
POST /api/v2/ai/content-score |
AI Studio: content scoring (V2 wrapped) |
POST /api/v2/ai/hashtags/suggest |
AI Studio: hashtag suggestions (V2 wrapped) |
POST /api/v2/ai/schedule |
AI Studio: schedule content (includes A/B test scheduling) |
POST /api/v2/ai/workspace/session |
AI Hub: create/update/load resumable workspace session state |
POST /api/v2/ai/workspace/run |
AI Hub: run orchestrated actions (drafts, scoring, hashtags, scheduling, A/B plans, voice, avatar, thumbnail, pipeline runs) |
GET /api/v2/ai/providers |
AI provider registry for the current workspace (capabilities, health, connection mode, success metrics) |
POST /api/v2/ai/providers/connect |
Connect/update an AI provider in managed or byok credential mode |
POST /api/v2/ai/providers/<providerId>/test |
Validate provider credentials and update provider connection health |
POST /api/v2/ai/providers/<providerId>/webhook |
Webhook ingest endpoint for async provider status events (idempotent event logging + signature tracking) |
POST /api/v2/ai/pipelines/run |
Start a pipeline template run (brief → generation steps → approval gate → staged autopublish) |
GET /api/v2/ai/pipelines/<runId> |
Fetch pipeline run details with step-by-step provider lineage and status |
POST /api/v2/ai/pipelines/<runId>/retry-step |
Retry a single failed pipeline step without rerunning the whole pipeline |
GET /api/v2/ai/artifacts |
List normalized AI artifacts (script/image/video/audio/avatar/thumbnail metadata) by workspace/provider/job |
POST /api/v2/ai/voice/generate |
Create a voice generation job through the unified provider adapter layer |
POST /api/v2/ai/avatar/generate |
Create an avatar generation job through the unified provider adapter layer |
POST /api/v2/ai/thumbnails/generate |
Create a thumbnail generation job through the unified provider adapter layer |
POST /api/v2/ai/mention-summary |
AI Listening: summarize mention clusters |
GET /api/v2/imports/template |
Migration Assistant: download import templates or list sources |
POST /api/v2/imports/validate |
Migration Assistant: validate and map an import file |
POST /api/v2/imports/run |
Migration Assistant: run an import (creates scheduled posts) |
GET /api/v2/bulk-import/template |
Bulk Import: download CSV template or retrieve JSON template metadata |
POST /api/v2/bulk-import/validate |
Bulk Import: validate a CSV/XLSX file |
POST /api/v2/bulk-import/ai-rewrite |
Bulk Import: AI rewrite suggestions for invalid/weak rows |
POST /api/v2/bulk-import/import |
Bulk Import: import validated rows (creates scheduled posts) |
POST /api/v2/posts/schedule |
Schedule posts from the composer (supports multi-account targeting) |
POST /api/v2/posts/publish |
Publish immediately from the composer |
GET /api/v2/posts/scheduled?id=<postId> |
Fetch a scheduled post payload for detail/edit views |
PATCH /api/v2/posts/scheduled?id=<postId> |
Edit a pending scheduled post (content, platforms, and recurrence scope) |
GET /api/v2/calendar/events |
Calendar feed for scheduled/published content |
GET /api/v2/calendar/recommendations |
Best posting time recommendations for selected platforms |
POST /api/v2/calendar/duplicate?id=<postId> |
Duplicate a scheduled post (creates a new pending post) |
POST /api/v2/calendar/bulk-actions |
Bulk update scheduled posts (shift, cancel, set_time, move_to_queue) |
GET /api/v2/calendar/ics |
Export an ICS feed for the current calendar filters |
GET /api/v2/calendar/shares |
List calendar share links for the current scope (team requires admin/owner) |
POST /api/v2/calendar/shares |
Create a calendar share link (supports optional password + filters) |
DELETE /api/v2/calendar/shares?id=<shareId> |
Revoke a calendar share link |
GET /api/v2/queue-slots |
List queue slots used for queue scheduling |
PUT /api/v2/queue-slots |
Replace queue slots (team scope requires admin/owner) |
POST /api/v2/queue-slots/suggest |
Suggest queue slots from best-time-to-post insights |
GET /api/v2/pinterest/boards |
List Pinterest boards for selection when publishing/scheduling |
POST /api/v2/composer/hashtags/suggest |
Hashtag suggestions (instant + AI) |
GET /api/v2/composer/hashtag-sets |
List saved hashtag sets (personal or team scope) |
GET /api/v2/analytics/overview |
Dashboard analytics overview (KPIs, timeseries summary, top content) |
GET /api/v2/analytics |
Aggregated analytics (legacy-style dashboard payload) in V2 envelope |
GET /api/v2/analytics/export |
Export aggregated analytics as CSV |
GET /api/v2/analytics/post?id=<postId> |
Post-level analytics drilldown (snapshots over time) |
GET /api/v2/analytics/reports |
List saved analytics reports |
POST /api/v2/analytics/reports |
Create a saved analytics report |
POST /api/v2/analytics/report-run?id=<reportId> |
Run a saved analytics report and return the computed analytics payload |
GET /api/v2/analytics/anomalies |
List analytics anomalies (alerts) |
PATCH /api/v2/analytics/anomalies |
Dismiss an anomaly alert (CSRF required) |
GET /api/v2/analytics/audience |
Audience snapshots (followers/following over time) |
GET /api/v2/analytics/ab-tests |
List A/B test groups and variant performance |
Claude Desktop
Connect SendIt to Claude's desktop application.
Get your API key
Sign in at sendit.infiniteappsai.com/login and create an API key from your dashboard.
Open Claude Desktop settings
Go to Settings → Developer → Edit Config to open claude_desktop_config.json
Add SendIt configuration
Add the following MCP server configuration with your API key:
{
"mcpServers": {
"sendit": {
"url": "https://sendit.infiniteappsai.com/mcp",
"headers": {
"Authorization": "Bearer sk_live_YOUR_API_KEY_HERE"
}
}
}
}
Replace sk_live_YOUR_API_KEY_HERE with the API key from your dashboard.
Alternative: Environment Variable
You can also use an environment variable to keep your key out of the config file:
{
"mcpServers": {
"sendit": {
"url": "https://sendit.infiniteappsai.com/mcp",
"env": {
"SENDIT_API_KEY": "sk_live_YOUR_API_KEY_HERE"
}
}
}
}
MCP Apps (Interactive UIs)
SendIt supports MCP Apps - interactive HTML interfaces that render directly inside compatible AI hosts like Claude Desktop, VS Code, and other MCP Apps-compatible clients.
MCP Apps is an extension to MCP that allows tools to return interactive UI components instead of just text. When you use SendIt tools in a compatible host, you'll see rich interfaces for composing posts, managing accounts, and viewing analytics.
Available Apps
| App | Description | Triggered by Tools |
|---|---|---|
| Publish Composer | Compose and publish posts with platform selection, character counts, and real-time validation | publish_content, validate_content |
| Teams | List your teams and operate in team context across all tools | list_teams |
| Connected Accounts | View connection status for all platforms and connect new accounts | list_connected_accounts, connect_* |
| Analytics Dashboard | View post engagement metrics per platform | get_analytics |
| Scheduler Manager | Manage scheduled posts - view, trigger, or delete | get_scheduled_posts, schedule_content |
| Upload Interface | Create upload sessions and track media uploads | create_upload_session, get_upload_session |
Supported Hosts
- Claude Desktop - Full MCP Apps support
- VS Code (Insiders) - Full MCP Apps support via Copilot integration
- Goose - Full MCP Apps support
- Postman - Full MCP Apps support
MCP Apps require host support. If your AI assistant doesn't render the interactive UIs, it will fall back to text-based tool responses which work with all MCP clients.
App Catalog
The App Catalog is a marketplace of installable mini-apps inside the SendIt dashboard. Each app extends your workflow with specialized tools for content creation, media management, link tracking, and team collaboration.
Browsing & Installing Apps
Navigate to Apps in the dashboard sidebar to browse the catalog. Click Install on any app to activate it. Installed apps appear in the sidebar for quick access and can be opened at /apps/{slug}.
Available Apps
| App | Description |
|---|---|
| Hashtag Manager | Save hashtag sets, discover trending tags with AI, and track hashtag performance across platforms. |
| Bulk Scheduler | Import posts in bulk via CSV/XLSX and view import history with status breakdowns. |
| Link Shortener | Create tracked short links with UTM parameters, view click analytics, and manage UTM templates. |
| AI Content Writer | Full AI writing studio with prompt, tone, brand voice, platform variants, content scoring, and hashtag suggestions. |
| Content Calendar Pro | Enhanced calendar view with configurable default view, queue slot visibility, and platform color coding. |
| Social Listening (Beta) | Monitor keywords and mentions across social platforms with alerts and digest reports. |
| Team Approvals | Multi-step approval workflows with role-based reviewers, SLA tracking, and platform-specific policies. |
| Media Library Plus | Organize media assets into collections, bulk-tag files, edit alt text, browse with filters, upload directly to library, and bulk-import from Google Drive, Dropbox, OneDrive, and Box via URL paste. |
Configuration
Some apps support per-user configuration (e.g., Content Calendar Pro default view). Configuration is stored per install and can be modified from within each app's settings panel.
Claude.ai Web
Connect SendIt to Claude's web interface using the remote MCP endpoint.
Get your API key
Sign in at sendit.infiniteappsai.com/login and create an API key from your dashboard.
Open Claude.ai Settings
Go to claude.ai and click on Settings in the sidebar.
Navigate to Connectors
Find the "Connectors" or "MCP Servers" section in settings.
Add SendIt
Click "Add Connector" and enter the following:
https://sendit.infiniteappsai.com/mcp
Bearer sk_live_YOUR_API_KEY_HERE
Replace sk_live_YOUR_API_KEY_HERE with the API key from your dashboard.
Gemini CLI
Connect SendIt to Google's Gemini CLI.
First, get your API key from sendit.infiniteappsai.com/login and your dashboard.
{
"mcpServers": {
"sendit": {
"url": "https://sendit.infiniteappsai.com/mcp",
"headers": {
"Authorization": "Bearer sk_live_YOUR_API_KEY_HERE"
}
}
}
}
Replace sk_live_YOUR_API_KEY_HERE with the API key from your dashboard.
Gemini's web interface does not currently support custom MCP servers. Use the CLI for MCP integration.
Grok (xAI)
Connect SendIt to Grok using the xAI SDK.
First, get your API key from sendit.infiniteappsai.com/login and your dashboard.
from xai_sdk import XAI
client = XAI(api_key="xai-...")
response = client.chat.completions.create(
model="grok-3",
messages=[{"role": "user", "content": "Post to LinkedIn: Hello world!"}],
mcp_servers=[{
"url": "https://sendit.infiniteappsai.com/mcp",
"headers": {
"Authorization": "Bearer sk_live_YOUR_API_KEY_HERE"
}
}]
)
Replace sk_live_YOUR_API_KEY_HERE with the API key from your dashboard.
Grok's web app does not support custom MCP. Use the xAI SDK (v1.4.0+) for MCP integration.
ChatGPT
Connect SendIt to ChatGPT for an immersive social media publishing experience. Use the ChatGPT App path for OAuth-based MCP integration.
ChatGPT App (Recommended)
The ChatGPT App integration provides an interactive in-chat experience with rich widgets for publishing, scheduling, analytics, and account management—all without leaving ChatGPT.
Features
- Interactive Widgets — Visual cards and carousels display results, account status, and analytics directly in chat
- One-Click Actions — Trigger follow-up actions like "View Analytics" or "Schedule Another" from widget buttons
- Real-time Status — See publishing progress and platform-specific results with live feedback
- Media Upload — Upload images and videos through a secure browser link, then publish instantly
Available Widgets
| Widget | Purpose |
|---|---|
| Publish Result | Displays publishing results with platform links, success/error states, and follow-up actions |
| Accounts Carousel | Horizontal carousel showing all supported platforms with connection status and expiry warnings |
| Analytics Card | Interactive analytics dashboard with Chart.js visualizations, metrics grid, and top posts |
| Scheduled List | List of pending scheduled posts with relative time display, trigger/cancel actions |
| Upload Session | Media upload flow with secure upload link, session status, and file previews |
| OAuth Prompt | Platform authorization prompt with connection instructions and help options |
| Validation Result | Pre-publish validation showing platform compatibility matrix, errors, and warnings |
| Schedule Result | Confirmation card for scheduled posts with reschedule and cancel actions |
Setup Instructions
Canonical setup guide: https://sendit.infiniteappsai.com/documentation.html#chatgpt
To add SendIt as a ChatGPT App:
- Open chatgpt.com and go to Settings → Apps
- Click Add App and enter the SendIt MCP endpoint URL
- Complete OAuth authorization when prompted
- Start chatting! Try "Show my connected accounts" or "Post hello world to LinkedIn"
MCP Server URL
https://sendit.infiniteappsai.com/mcp
Canonical ChatGPT submission endpoint. Backward-compatible alias: /api/mcp/chatgpt. The full advanced endpoint remains /api/mcp.
For the always-current tool and platform matrix, use GET /api/v1/capabilities or MCP resource sendit://meta/capabilities.
Authentication
The ChatGPT App uses OAuth 2.1 + PKCE.
Authorization URL: https://sendit.infiniteappsai.com/oauth/authorize
Token URL: https://sendit.infiniteappsai.com/oauth/token
Registration URL: https://sendit.infiniteappsai.com/oauth/register
Metadata: https://sendit.infiniteappsai.com/.well-known/oauth-authorization-server
After each action, you'll see interactive widgets in the chat. Click buttons like "View Analytics" or "Schedule Another" to continue the conversation naturally.
Custom GPT Actions (Alternative)
If you prefer using Custom GPTs, import the SendIt OpenAPI spec for REST API access:
https://sendit.infiniteappsai.com/api/openapi.yaml
REST API Base URL
https://sendit.infiniteappsai.com/api/v1
Authentication Header
Add this header to all API requests:
Authorization: Bearer sk_live_YOUR_API_KEY_HERE
Optional Integration Attribution Headers
For integration analytics and attribution, you can also send:
X-SendIt-Integration: openclaw
X-SendIt-Integration-Version: 0.1.0
X-SendIt-Skill-Pack: sendit-openclaw
Replace sk_live_YOUR_API_KEY_HERE with the API key from your dashboard.
REST API Endpoints
| Method | Endpoint | Description |
|---|---|---|
| POST | /publish | Publish immediately |
| POST | /schedule | Schedule for later |
| POST | /publish-ai | AI-generate content and publish |
| POST | /ai/generate-content | AI-generate content without publishing |
| GET | /scheduled | List scheduled posts |
| GET | /accounts | List connected accounts |
| GET | /platforms/schema?platform=<platformId> | Platform settings schema for content.platformSettings.<platformId> |
| POST | /validate | Validate content |
| GET/POST | /brand-voice | List or create brand voices |
| GET/PATCH/DELETE | /brand-voice/:id | Get, update, or delete brand voice |
| POST | /brand-voice/:id/default | Set default brand voice |
| GET | /approvals | List pending approvals |
| POST | /approvals/:postId/approve | Approve a post |
| POST | /approvals/:postId/reject | Reject a post |
| GET/POST | /campaigns | List campaigns or generate AI plan |
| POST | /campaigns/:id/schedule | Schedule campaign posts |
| GET | /inbox | List social inbox threads |
| POST | /inbox/:threadId/reply | Reply to inbox thread |
| POST | /inbox/:threadId/status | Update thread status |
| GET | /best-times | Get best posting times |
| POST | /content-score | Score content quality |
| GET | /dead-letter | List dead letter posts |
| POST | /dead-letter/:id/requeue | Requeue failed post |
| POST | /dead-letter/:id/discard | Discard failed post |
| GET/POST | /ai-media | List or create AI media jobs |
| GET | /ai-media/:id | Get AI media job status |
| GET | /audit-log | Query audit log entries |
| GET | /listening/keywords | List monitored keywords |
| POST | /listening/refresh | Trigger listening data refresh |
Use the ChatGPT App for the best interactive experience with rich widgets. Use Custom GPT Actions if you need custom instructions or want to combine SendIt with other actions in your GPT.
OpenClaw
Use the official @sendit/openclaw plugin to run SendIt social automation directly in OpenClaw with prefixed tools and a bundled orchestration skill pack.
Install Plugin
openclaw plugins install @sendit/openclaw
Authenticate
API key mode:
openclaw sendit auth login --mode api-key --api-key sk_live_YOUR_KEY
OAuth mode:
openclaw sendit auth login --mode oauth
openclaw models auth login --provider sendit
Run Health Checks
openclaw sendit auth status
openclaw sendit doctor
Install Skill Pack (Optional)
clawhub install sendit-openclaw
Tool Surface (75+ tools)
Core Tools (12)
sendit_capabilities— Discover features, platforms, tool capabilitiessendit_list_accounts— List connected social accountssendit_connect_account— Get OAuth URL to connect a platformsendit_requirements— Get platform content requirementssendit_validate— Validate content against platform constraintssendit_upload_media— Upload local file or register media URLsendit_publish— Publish content immediatelysendit_schedule— Schedule content for future publishsendit_list_scheduled— List pending scheduled postssendit_trigger_scheduled— Publish a scheduled post immediatelysendit_delete_scheduled— Cancel a scheduled postsendit_analytics— Fetch per-platform engagement analytics
Growth Tools (13)
sendit_inbox— Unified inbox: list, get, reply, update_statussendit_listening— Social listening: keywords, mentions, alerts, summarysendit_campaigns— Campaign planning: list, create_plan, schedulesendit_brand_voice— Brand voice profiles: CRUD + set_defaultsendit_content_library— Content library: save, organize, retrievesendit_approvals— Approval workflows: list_pending, approve, rejectsendit_dead_letter— Failed post recovery: list, requeuesendit_bulk_schedule— Bulk CSV scheduling: template, validate, importsendit_webhooks— Webhook management: CRUD, test, events_catalogsendit_audit_log— Activity audit trail with filterssendit_ai_media— AI media generation: generate, statussendit_best_times— AI-recommended optimal posting timessendit_content_score— Content quality scoring (0-100)
Advanced MCP Tools (12)
sendit_ai_draft_reply— AI-drafted reply for mentionssendit_ai_summarize_mentions— Mention clustering and summarizationsendit_ai_generate_post_bundle— Multi-variant post generationsendit_ai_critique_post— AI critique and scoring for draftssendit_unified_analytics— Cross-platform analytics dashboardsendit_anomaly_alerts— Engagement anomaly detectionsendit_benchmark— Industry benchmark comparisonssendit_ads— Ad campaigns: accounts, campaigns, creatives, performancesendit_crm— Social CRM: conversations, replies, escalationsendit_agents— AI agent orchestration: invoke, monitor, policiessendit_workflows— Workflow automation: create, trigger, monitorsendit_connectors— External integrations: connect, health, execute
Connector Tools (7)
list_connectors— List available connectors by categoryget_connector_capabilities— Get connector operations and auth strategyconnect_connector— Authenticate and connect an external servicedisconnect_connector— Disconnect an external serviceget_connector_health— Check connector connection healthexecute_connector_operation— Run a connector operationlist_connector_runs— List recent connector execution runs
Ads & Paid Media Tools (7)
list_ad_accounts— List connected ad accountscreate_ad_campaign— Create an ad campaignlist_ad_campaigns— List campaigns with status filterscreate_ad_creative— Create ad creative contentget_ad_performance— Get campaign performance metricsget_attribution_report— Cross-channel attribution reportupdate_ad_campaign— Update campaign settings
Workflow Automation Tools (7)
create_workflow— Create automated workflow with stepslist_workflows— List workflows with status filterupdate_workflow— Update workflow configurationtrigger_workflow— Manually trigger a workflowlist_workflow_runs— List workflow execution historyget_workflow_run— Get details of a workflow rundelete_workflow— Delete a workflow
CRM & Conversation Tools (6)
list_conversations— List social inbox conversationsget_conversation— Get conversation thread detailsreply_to_conversation— Reply to a conversationupdate_conversation— Update conversation status/labelsescalate_to_support— Escalate conversation to supportget_conversation_analytics— Conversation response metrics
AI Agent Tools (6)
invoke_agent— Invoke an AI agent with a tasklist_agents— List available AI agentsget_agent_run— Get agent run status and outputlist_agent_runs— List agent execution historyupdate_agent_policy— Update agent permissions and policiescancel_agent_run— Cancel a running agent
Dynamic Platform Connection Tools (32+)
Auto-generated connect_<platform> tools for each supported platform (e.g., connect_linkedin, connect_instagram, connect_tiktok). These generate OAuth URLs or accept credentials for token/webhook-based platforms.
n8n
Integrate SendIt with n8n to automate social media publishing in your workflows. n8n is a fair-code licensed workflow automation platform that lets you connect SendIt with hundreds of other apps.
Prerequisites
Before installing, get your API key by following the Authentication guide. You'll need a SendIt account and an API key (format: sk_live_...).
Installation
Install the SendIt community node in your n8n instance:
Method 1: GUI Installation (Recommended)
Open Community Nodes
In your n8n instance, go to Settings → Community Nodes.
Install the Package
Click Install a community node and enter: n8n-nodes-sendit
Restart n8n
Restart your n8n instance if prompted to complete the installation.
Method 2: NPM Installation
For manual installation or Docker setups:
# In your n8n custom directory
cd ~/.n8n/custom
npm install n8n-nodes-sendit
# Restart n8n
n8n start
Configure Credentials
Add SendIt Credential
In n8n, go to Credentials → New Credential → search for SendIt API.
Enter Your API Key
Paste your SendIt API key (from your dashboard) and click Save.
Test the Connection
n8n will automatically test the connection. If successful, you're ready to use SendIt in your workflows.
Available Nodes
The SendIt package includes two nodes:
SendIt Node (Actions)
| Operation | Description |
|---|---|
| Publish Post | Publish content immediately to selected platforms |
| Schedule Post | Schedule content for future publishing |
| List Scheduled Posts | Get all pending scheduled posts |
| Cancel Scheduled Post | Cancel a scheduled post |
| Trigger Scheduled Post | Publish a scheduled post immediately |
| List Accounts | Get all connected social media accounts |
| Validate Content | Check content against platform requirements |
SendIt Trigger Node (27 Webhook Events)
| Event | Description |
|---|---|
| Post Published | Triggers when a post is successfully published |
| Post Scheduled | Triggers when a new post is scheduled |
| Post Failed | Triggers when a post fails to publish |
| Post Deleted | Triggers when a scheduled post is cancelled |
| Post Dead Lettered | Triggers when a post exhausts all retries |
| Account Connected | Triggers when a social account is connected |
| Account Disconnected | Triggers when a social account is disconnected |
| Account Token Expiring | Triggers when a token is near expiry |
| Account Token Refresh Failed | Triggers when token refresh fails |
| Account Reconnect Required | Triggers when reconnection is needed |
| Account Refresh Recovered | Triggers when a token refresh recovers |
| Account Auth Recovery Completed | Triggers when auth-blocked posts are requeued |
| Mention Detected | Triggers when a tracked keyword mention is found |
| Mention Negative Sentiment | Triggers when negative sentiment is detected |
| Team Member Joined | Triggers when a member joins a team |
| Team Member Left | Triggers when a member leaves a team |
| Team Member Role Changed | Triggers when a member's role changes |
| Team Invitation Sent | Triggers when a team invitation is sent |
| Team Invitation Accepted | Triggers when a team invitation is accepted |
| Team Invitation Declined | Triggers when a team invitation is declined |
| Approval Submitted | Triggers when a post enters approval workflow |
| Approval Step Approved | Triggers when an approval step is approved |
| Approval Changes Requested | Triggers when changes are requested |
| Approval Rejected | Triggers when a post is rejected |
| Analytics Anomaly Detected | Triggers when an analytics anomaly is flagged |
| API Key Rotation Due | Triggers when an API key rotation is due |
| Critical Audit Event | Triggers for critical security/compliance events |
Example Workflow
Here's a simple workflow that publishes a post when triggered:
// 1. Add a Manual Trigger or Schedule Trigger
// 2. Add the SendIt node
// 3. Select "Publish Post" operation
// 4. Choose platforms: LinkedIn, Instagram, etc.
// 5. Enter your post text
// 6. Execute the workflow
The SendIt community node is currently available for self-hosted n8n instances only. n8n Cloud users cannot install unverified community nodes. We're working on getting verified for n8n Cloud availability.
Check the package on npm or the GitHub repository for more details and issue reporting.
Connect Instagram
Link your Instagram account to start publishing.
Instagram's API only supports Business and Creator accounts. Personal accounts cannot be connected. See below for how to convert your account.
Requirements
- Instagram Business or Creator account (not Personal)
- A Facebook Page linked to your Instagram account
Convert to Business/Creator Account
Open Instagram Settings
Go to your profile, tap the menu icon, then Settings and Privacy.
Find Account Type
Scroll to "Account type and tools" or "For professionals".
Switch to Professional
Select "Switch to professional account" and choose Business or Creator.
Connect Facebook Page
Follow the prompts to connect or create a Facebook Page for your account.
Connect to SendIt
Once you have a Business/Creator account, ask your AI assistant:
"Connect my Instagram account"
SendIt will provide an OAuth link. Click it to authorize access, then return to your AI assistant.
Supported Content Types
- Single Image Posts - Standard feed posts with one image
- Carousel Posts - 2-10 images in a slideshow format
- Reels - Short-form video (5-90 seconds for Reels tab eligibility)
First Comment Feature
Instagram's algorithm favors clean captions. Use the First Comment feature to automatically post your hashtags as the first comment instead of cluttering your caption.
Move hashtags to the first comment for a cleaner look. This is a common strategy used by brands and influencers to keep captions readable while maintaining discoverability.
When using the SendIt dashboard, enable "Add hashtags as first comment" to automatically move hashtags from your caption to the first comment after publishing.
Comment Management
SendIt can read and reply to comments on your Instagram posts through the Social Inbox. Comments are synced automatically and you can reply directly from the dashboard.
Direct Messages
SendIt can access your Instagram DM conversations for Business/Creator accounts. You can view conversations and send replies through the dashboard API.
Instagram's messaging API only allows sending messages to users who have messaged you within the last 24 hours. This is an Instagram platform restriction.
Connect Facebook
Link your Facebook Page to start publishing posts, photos, and videos.
Facebook's API only supports publishing to Pages, not personal profiles. You must have a Facebook Page to use SendIt with Facebook.
Requirements
- A Facebook Page (personal profiles are not supported)
- Admin or Editor access to the Page
Connect to SendIt
Ask your AI assistant:
"Connect my Facebook account"
SendIt will provide an OAuth link. Click it to authorize access and select your Facebook Page, then return to your AI assistant.
Supported Content Types
- Text Posts - Standard text updates to your Page
- Photo Posts - Single image posts
- Multi-Photo Posts - Up to 10 images in a single post
- Video Posts - Native video uploads
- Link Posts - Posts with link previews
Facebook Page tokens are long-lived and don't expire as long as the Page connection remains valid.
Connect LinkedIn
Link your LinkedIn account to start publishing.
Requirements
- A LinkedIn account
- Permission to post on your behalf
Connect to SendIt
Ask your AI assistant:
"Connect my LinkedIn account"
SendIt will provide an OAuth link. Click it to authorize access, then return to your AI assistant.
Supported Content Types
- Text Posts - Standard text updates
- Image Posts - Posts with a single image attachment
- Video Posts - Native video uploads (up to 5GB, 10 minutes)
LinkedIn access tokens expire after 60 days. You'll need to reconnect your account when prompted.
Connect TikTok
Link your TikTok account to publish short-form videos.
TikTok only supports video content. Images and text-only posts are not supported. All videos must be 3-600 seconds in length.
Until your app is approved by TikTok, all videos will be published as private (SELF_ONLY). You can see them in your TikTok profile, but they won't be public until you complete TikTok's audit process.
Requirements
- A TikTok account
- Videos hosted at a public URL (MP4, MOV, or WebM format)
Connect to SendIt
Ask your AI assistant:
"Connect my TikTok account"
SendIt will provide an OAuth link. Click it to authorize access, then return to your AI assistant.
Supported Content Types
- Video Posts - Short-form videos (3-600 seconds)
Video Requirements
| Requirement | Value |
|---|---|
| Formats | MP4, MOV, WebM |
| Duration | 3-600 seconds |
| Max size | 4GB |
TikTok access tokens expire after 24 hours. SendIt automatically refreshes tokens using the 1-year refresh token, so you shouldn't need to reconnect frequently.
Connect YouTube
Link your YouTube channel to upload videos and Shorts directly from your AI assistant.
YouTube supports both short-form Shorts (up to 60 seconds, vertical video) and long-form videos (up to 12 hours). In the dashboard composer (create and schedule flows), YouTube mode now defaults to Short, and you can switch to Standard per post.
Requirements
- A YouTube channel
- Video files accessible via URL (HTTPS) or local upload
Connect to SendIt
Ask your AI assistant:
"Connect my YouTube account"
SendIt will provide an OAuth link. Click it to authorize access, then return to your AI assistant.
Supported Content Types
- Shorts - Vertical videos up to 60 seconds (9:16 aspect ratio)
- Regular Videos - Long-form videos up to 12 hours
Video Requirements
| Requirement | Value |
|---|---|
| Formats | MP4, MOV, AVI, WMV, FLV, WebM, 3GPP |
| Shorts duration | Up to 60 seconds |
| Regular video duration | Up to 12 hours |
| Max file size | 256GB (or 12 hours, whichever is less) |
| Resolution | Up to 4K (3840x2160) |
Publish Options
| Option | Description |
|---|---|
| Title | Video title (up to 100 characters) |
| Description | Video description (up to 5,000 characters) |
| Tags | Comma-separated keywords for discoverability |
| Privacy | public, unlisted, or private |
| Category | YouTube category (e.g., Entertainment, Education) |
| YouTube mode | short (default in dashboard composer) or standard |
YouTube access tokens expire after 1 hour. SendIt automatically refreshes tokens using the refresh token, so you shouldn't need to reconnect.
Connect Threads
Link your Threads account to publish text posts, images, videos, and carousels.
Unlike Instagram, Threads supports text-only posts—no media required! This makes it perfect for quick thoughts, announcements, and text-based content.
Requirements
- A Threads account
- For media posts: publicly accessible URLs (HTTPS)
Connect to SendIt
Ask your AI assistant:
"Connect my Threads account"
SendIt will provide an OAuth link. Click it to authorize access, then return to your AI assistant.
Supported Content Types
- Text Posts - Up to 500 characters (no media required)
- Image Posts - Single images with optional caption
- Video Posts - Videos up to 5 minutes with optional caption
- Carousel Posts - 2-20 items (can mix images and videos!)
Delete Posts
Post deletion is supported on X, Facebook, LinkedIn, LinkedIn Page, Threads, YouTube, Pinterest, Bluesky, Mastodon, and Telegram. You can delete any post you've published:
"Delete my post with ID 12345678901234567"
The post ID is returned when you publish content.
Edit Posts
Some platforms allow editing a published post's text or metadata. Supported platforms: YouTube (title/description/tags), LinkedIn, Facebook, Mastodon, Telegram, and Bluesky. Not supported on X, Threads, Instagram, Pinterest, or TikTok.
"Edit my LinkedIn post 12345 to say 'Updated announcement'"
Content Specifications
| Type | Requirements |
|---|---|
| Text | 500 characters max |
| Images | JPEG, PNG (up to 8MB) |
| Videos | MP4, MOV (up to 5 minutes, 100MB) |
| Carousels | 2-20 items, can mix images and videos |
Threads access tokens are valid for 60 days. You'll need to reconnect your account when prompted.
Connect X (Twitter)
Link your X (Twitter) account to publish tweets with text, images, and videos.
X's free API tier has strict rate limits of approximately 17 tweets per 24 hours. Consider upgrading to X Basic ($100/mo) for higher limits if needed.
Requirements
- An X (Twitter) account
- For image tweets: publicly accessible URLs (HTTPS)
- For video tweets: MP4 or MOV format (up to 512MB)
Connect to SendIt
Ask your AI assistant:
"Connect my X account"
SendIt will provide an OAuth link. Click it to authorize access, then return to your AI assistant.
Supported Content Types
- Text Tweets - Up to 280 characters
- Image Tweets - Up to 4 images per tweet (JPEG, PNG, GIF, WebP)
- Video Tweets - MP4/MOV videos up to 2 minutes 20 seconds (512MB max)
Content Specifications
| Type | Requirements |
|---|---|
| Text | 280 characters max |
| Images | JPEG, PNG, GIF, WebP (up to 5MB each, max 4 images) |
| Video | MP4, MOV (up to 512MB, max 2 min 20 sec) |
X access tokens expire every 2 hours. SendIt automatically refreshes tokens, so you shouldn't need to reconnect frequently.
Connect Pinterest
Link your Pinterest account to create pins and manage your boards from your AI assistant.
Pinterest is ideal for visual content, product showcases, and driving traffic to your website. Each pin can include a destination link, making it great for e-commerce and content marketing.
Requirements
- A Pinterest Business or Personal account
- At least one board to pin to
- Images accessible via URL (HTTPS) or local upload
Connect to SendIt
Ask your AI assistant:
"Connect my Pinterest account"
SendIt will provide an OAuth link. Click it to authorize access, then return to your AI assistant.
Supported Content Types
- Standard Pins - Single images with title, description, and link
- Video Pins - Videos up to 15 minutes
- Idea Pins - Multi-page story pins (images or videos)
Content Specifications
| Type | Requirements |
|---|---|
| Image formats | PNG, JPEG, GIF, WebP |
| Image max size | 32MB |
| Recommended aspect ratio | 2:3 (1000x1500px optimal) |
| Title length | 100 characters max |
| Description length | 500 characters max |
| Video formats | MP4, MOV |
| Video duration | 4 seconds to 15 minutes |
Board Selection
When publishing to Pinterest, you can specify a board or let SendIt use your default board automatically.
Via AI Assistant
Specify the board name when publishing:
"Post this image to my 'Recipe Ideas' board on Pinterest"
Via Dashboard
The SendIt dashboard provides a board selector dropdown that shows all your Pinterest boards. Select the board before publishing to ensure your pin goes to the right place.
If no board is specified, SendIt will automatically use your first available board. You can always specify a board explicitly for more control.
Pinterest access tokens are long-lived. SendIt will notify you if reconnection is needed.
Connect Product Hunt
Link your Product Hunt account to create maker goals and track your product analytics.
Read operations (profile, analytics) work immediately. Write operations (creating goals, upvoting) require app whitelisting by Product Hunt. Contact hello@producthunt.com to request write access.
Requirements
- A Product Hunt account
- Maker/Hunter status for analytics features
Connect to SendIt
Ask your AI assistant:
"Connect my Product Hunt account"
SendIt will provide an OAuth link. Click it to authorize access, then return to your AI assistant.
Supported Features
- Maker Goals - Create and track personal goals (requires whitelisting)
- Product Analytics - View votes, comments, and reviews for your products
- Profile - Access your Product Hunt profile information
- Upvoting - Vote on products (requires whitelisting)
Content Specifications
| Type | Requirements |
|---|---|
| Goal Title | 280 characters max |
| Content Type | Text-only (goals are text-based) |
Product Hunt tokens do not expire. Once connected, you won't need to reconnect unless you revoke access.
Content Library
Save, organize, repurpose, and publish your content across all supported platforms with the Content Library. Store drafts, create templates, and set up evergreen content for automatic republishing.
Generate platform-optimized variants with generate_content, publish in one step with publish_ai, and save reusable drafts/templates with save_to_library (alias: create_library_item).
Content Types
- Drafts - Work-in-progress content you can edit and publish later
- Templates - Reusable content structures with placeholders
- Evergreen - High-performing content that can be automatically republished
Supported Platforms
Content Library supports all supported platforms:
- LinkedIn - 3,000 character limit
- Instagram - 2,200 character limit
- TikTok - 2,200 character limit
- Threads - 500 character limit
- X (Twitter) - 280 character limit
- Facebook - 63,206 character limit
- YouTube - 5,000 character limit
- Pinterest - 500 character limit
- Product Hunt - 280 character limit
Using the Library
Ask your AI assistant:
"Save this post to my content library as a draft"
"Show me my content library"
"Create a template for weekly tips"
"Publish from my library item about product updates"
"Generate variants for LinkedIn, Instagram, and X, then save them as templates"
Generating Variants
Use generate_content to create platform-specific variants. You can then publish with publish_content or save reusable content with save_to_library.
Content Actions
| Action | Description |
|---|---|
| Save | Save a draft/template/evergreen item to your library (save_to_library) |
| List | Browse/search items in your library (list_library) |
| Edit | Update an existing library item (update_library_item) |
| Delete | Delete a library item (delete_library_item) |
| Publish | Publish directly from the library to connected accounts (publish_from_library) |
Evergreen Content
Evergreen content is timeless content that can be republished periodically to maintain engagement. When you mark content as evergreen, you can set up automatic republishing schedules.
Organization Features
| Feature | Description |
|---|---|
| Categories | Organize content with custom categories and tags |
| Platform Targeting | Specify which platforms each item is designed for |
| Search & Filter | Find content by type, category, platform, status, or text search |
AI Personalization
All AI features automatically personalize content based on your historical performance data. The system builds a compact context block from:
- Top performing content — Excerpts from your highest-engagement posts
- Best hashtags — Your top 5 performing hashtags
- Writing style — Average text length, emoji frequency, CTA patterns
- Optimal posting times — Your best times per platform
- Brand voice — Your default brand voice profile tone and personality
Personalization context is cached for 24 hours and refreshed automatically. You can disable it per-request by setting usePersonalization: false.
Environment Variables
| Variable | Description | Default |
|---|---|---|
OPENROUTER_MODEL_CONTENT | Model for content generation tasks | anthropic/claude-3-haiku-20240307 |
OPENROUTER_MODEL_VISION | Model for multimodal/vision tasks | anthropic/claude-3-haiku-20240307 |
OPENROUTER_MODEL_ANALYSIS | Model for analytics/insight tasks | anthropic/claude-3-haiku-20240307 |
Multi-Variant Generation
Generate multiple content variants and let AI pick the best one. Available on content generation, compose, and campaign planning endpoints.
New Parameters
| Parameter | Type | Description |
|---|---|---|
variantCount | number (1-5) | Number of variants to generate. Default: 1 |
returnAlternatives | boolean | Include non-winning variants in response |
includeRationale | boolean | Include AI explanation for why the best variant won |
usePersonalization | boolean | Inject personalization context into prompts. Default: true |
Response Fields
| Field | Type | Description |
|---|---|---|
qualityScore | number (0-100) | Content quality score of the best variant |
rationale | string | AI explanation for variant selection |
alternatives | array | Non-winning variants with their scores |
Bulk Import
Import hundreds of posts at once from CSV or XLSX files. The V2 bulk import system supports multi-platform rows, intelligent validation, AI-assisted content rewriting, and partial import with retry capability.
Post the same content to multiple platforms with a single row. Use pipe (|) delimiters to target multiple platforms: linkedin|x|threads. The system validates against each platform's requirements and warns about conflicts.
V2 File Format
The V2 format uses a strict schema with pipe-delimited values for multi-platform support:
| Column | Required | Description |
|---|---|---|
platforms |
Yes | Pipe-delimited list (e.g., linkedin|x|threads) |
text |
Yes | Post content (validated against each platform's limits) |
scheduled_at |
Yes | ISO 8601 datetime (e.g., 2024-03-15T10:00:00Z) |
timezone |
No | IANA timezone (e.g., America/New_York). Falls back to team/user default. |
media_urls |
No | Pipe-delimited media URLs for images/videos |
first_comment |
No | Instagram first comment (hashtags, etc.) |
hashtags |
No | Additional hashtags to append |
pinterest_board_id |
If Pinterest | Required when targeting Pinterest |
Example CSV
platforms,text,scheduled_at,timezone,media_urls
linkedin|x|threads,"Excited to share our product update!",2024-03-15T10:00:00Z,America/New_York,
instagram,"Behind the scenes",2024-03-16T14:00:00Z,UTC,https://example.com/img1.jpg|https://example.com/img2.jpg
tiktok,"Watch how we build!",2024-03-17T16:00:00Z,,https://example.com/video.mp4
4-Step Import Wizard
- Upload - Upload CSV or XLSX file (max 500 rows, 10MB)
- Validate - Review validation results with filtering (All/Errors/Warnings/Ready)
- AI Rewrite - Optional AI-assisted content optimization for rows with issues
- Import - Execute import with progress tracking and retry CSV for failures
Multi-Platform Conflict Detection
When targeting multiple platforms in one row, the system detects conflicts:
| Conflict | Example | Resolution |
|---|---|---|
| Character limit exceeded | X (280) + LinkedIn (3000) | Split into separate rows or shorten text |
| Video-only + text platforms | TikTok + LinkedIn | Split TikTok to separate row with video |
| Missing media | Instagram without media | Add media URL or remove Instagram |
| Pinterest without board | Pinterest target, no board_id | Add pinterest_board_id column |
AI Rewrite Feature
Select rows with validation issues and use AI to generate optimized rewrites:
- Automatic adaptation - AI adjusts content to fit platform limits while preserving meaning
- Side-by-side comparison - Review original vs. suggested text
- Approve/Reject/Edit - Full control over each suggestion
- Bulk approve - Apply all suggestions at once
Partial Import & Retry
If some rows fail during import:
- Successfully scheduled posts are committed
- Failed rows are collected with error details
- Download a retry CSV containing only failed rows
- Fix issues and re-import the retry file
Supported Platforms
Bulk import supports all supported platforms:
linkedin- Text or text+image (3,000 chars)instagram- Requires media (2,200 chars)tiktok- Requires video (2,200 chars)threads- Text, images, videos, carousels (500 chars)x- Text or text+images (280 chars)facebook- Text, images, videos (63,206 chars)youtube- Requires video (5,000 chars)pinterest- Requires media + board (500 chars)producthunt- Text only (280 chars)
Accessing Bulk Import
In the Dashboard, navigate to Dashboard > Bulk Import or go to /dashboard#/bulk-import.
Template Downloads
Download pre-formatted templates from the Bulk Import page:
- CSV Template - Standard CSV with example rows
- XLSX Template - Excel format with all columns
Migration Assistant
Switch from Buffer, Hootsuite, or Later to SendIt with our 5-step migration wizard. Automatically detect your export format, map columns, and import your scheduled posts.
Export your scheduled posts from your current tool and import them directly into SendIt. The wizard auto-detects your source format and maps columns automatically.
Supported Sources
| Source | Auto-Detected Columns | Date Format |
|---|---|---|
| Buffer | Text, Posting Time, Image URL, Profile | ISO 8601 |
| Hootsuite | Message, Scheduled Date, Media URL, Social Profile | MM/DD/YYYY HH:mm |
| Later | Caption, Scheduled Time, Media URL, Account | YYYY-MM-DD HH:mm:ss |
| SendIt | platforms, text, scheduled_at, media_urls | ISO 8601 |
5-Step Migration Wizard
- Select Source - Choose Buffer, Hootsuite, Later, or SendIt format
- Upload File - Drag-and-drop your exported CSV
- Map Columns - Auto-detected mappings with manual adjustment options
- Review & Validate - See ready/warning/error status for each row
- Import - Execute import with progress tracking
Column Mapping
The wizard automatically detects and maps columns based on common naming conventions:
- Text/Content - Maps from: Text, Message, Caption, Content, Post, Body
- Scheduled Time - Maps from: Posting Time, Scheduled Date, Scheduled Time, scheduled_at
- Media - Maps from: Image URL, Media URL, Attachment, media_urls
- Platform - Maps from: Profile, Social Profile, Account, platforms
Validation
Each row is validated before import:
- Ready - Row can be imported with no issues
- Warning - Minor issues (e.g., past date) but still importable
- Error - Missing required fields or invalid data
Accessing Migration Assistant
In the Dashboard, navigate to Dashboard > Migration Assistant or go to /dashboard#/migration-assistant.
Brand Voice
Define your brand's personality and writing style to ensure consistent AI-generated content across all platforms.
What is Brand Voice?
Brand Voice profiles contain your brand's tone, personality, writing style, and content rules. When set, all AI content generation (compose, repurpose, hashtags) will respect your brand voice guidelines.
Profile Settings
| Setting | Description |
|---|---|
| Tone | The emotional tone of your content (e.g. professional, casual, witty, inspirational) |
| Personality | Your brand's character traits (e.g. friendly, authoritative, playful) |
| Writing Style | How you write (e.g. short sentences, storytelling, data-driven) |
| Do Rules | Things your content should always include (e.g. "Always use active voice") |
| Don't Rules | Things to never include (e.g. "Never use industry jargon") |
| Approved Hashtags | Hashtags to prioritize in generated content |
| Banned Words | Words that should never appear in your content |
| Key Phrases | Signature phrases or slogans to incorporate |
Set one profile as default and it will automatically apply to all AI content generation. You can create multiple profiles for different campaigns or platforms.
Campaigns Coming Soon
Plan and execute multi-post marketing campaigns with AI-powered content generation.
Campaigns is not yet available. This feature requires media attachment support and is currently in development. It will be enabled in a future release.
How Campaigns Work
- Create a campaign — Provide a name, brief/description, target platforms, and date range
- AI generates a post plan — AI creates a sequence of posts optimized for each platform, respecting your brand voice and optimal posting times
- Review and edit — Review each post in the campaign timeline and make adjustments
- Schedule all posts — One click to schedule the entire campaign
Campaign Statuses
- Draft — Campaign is being planned, posts not yet scheduled
- Active — Posts are scheduled and being published
- Completed — All posts have been published
- Cancelled — Campaign was stopped before completion
Approval Workflow
Require approval before scheduled posts are published. Available in team contexts.
How Approvals Work
- Team admins enable approvals in Team Settings
- When editors or viewers create scheduled posts, they're automatically flagged for approval
- Admins and owners see pending approvals in the Approvals queue
- Posts can be approved, rejected (with reason), or have comments added
- Only approved posts are published by the scheduler
Approval Statuses
- Pending — Awaiting review
- Approved — Ready for publishing
- Rejected — Not approved, with feedback
AI Media Generation
Generate and manage AI media assets with dynamic provider adapters, durable queues, and normalized artifact lineage.
Supported Providers
| Provider | Type | Description |
|---|---|---|
| HeyGen | Avatar/Video | Avatar-led spokesperson video generation |
| ElevenLabs | Voice | Voice-over generation and speech workflows |
| Higgsfield | Image/Video | High-fidelity generation with async job status APIs |
| Runway ML | Image/Video | Image-to-video and text-to-video generation |
| Sora (OpenAI) | Video | Text-to-video generation for social clips |
| Adobe Firefly | Image | Brand-safe image generation and derivatives |
| Bannerbear | Thumbnail/Image | Programmatic thumbnail generation |
| Cloudinary | Image/Video/Thumbnail | Transformations and derivative asset generation |
| Pika via fal | Video | Fast-follow Pika routing through fal adapter |
How It Works
- Connect provider credentials in
ManagedorBring your own keymode. - Submit generation requests through unified provider adapters.
- Jobs execute through durable queues:
ai_provider_dispatch,ai_provider_poll,ai_provider_finalize. - Webhook callbacks are processed first when available, with polling fallback for stale/missing callbacks.
- Artifacts are normalized into a shared model for pipeline lineage and downstream publishing flows.
Managed mode records estimated/actual costs in a usage ledger and enforces workspace-level budget checks before dispatch.
AI Hub
AI Hub is the primary AI destination: campaign brief, draft generation, voice/avatar/thumbnail labs, provider integrations, pipelines, approval queue, and learn loop.
Workflow Sections
- Integrations — Provider registry with capability tags, credential mode, health, and success-rate telemetry
- Pipelines — Prebuilt templates (launch reel, thought leadership, UGC batch) with retry-step support
- Campaign Brief — Objective, audience, offer, CTA, tone, language, and platform targeting
- Draft Lab — Variant generation, quality scoring, and hashtag reasoning
- Voice & Avatar Lab — Dedicated generation actions for narration and avatar-led video workflows
- Visual/Thumbnail Lab — Thumbnail generation with provider selection and lineage capture
- Schedule Autopilot — Queue suggestions + A/B scheduling path
- Learn Loop — Performance drivers, experiments, and provider-level quality metrics
- Action Queue — Approval/edit/skip states with explicit gate before publish
Autopublish flows never publish directly in default mode. Pipeline autopublish steps are blocked until approval is explicitly granted.
AI Studio
Compose, score, and optimize your content with AI-powered tools. AI Studio provides real-time feedback on content quality and suggestions for improvement.
Features
- AI Compose - Generate content suggestions with optional strategic context (goal, audience, angle)
- Content Score - Get real-time scores on engagement potential, clarity, and platform fit
- Best Times - Analyze audience timezone distribution to find optimal posting times
- Hashtag Generator - Auto-suggest and rank hashtags with score + reasoning
- A/B Scheduling - Configure exact or queue schedule mode with optional recurrence rules
Content Scoring
The content scorer provides three key metrics:
| Metric | Description | Ideal Range |
|---|---|---|
| Engagement | Likelihood of comments, shares, and interactions | 70-100 |
| Clarity | Message coherence and readability for audience | 80+ |
| Platform Fit | Relevance and format suitability for the platform | 75+ |
Scores update automatically as you type. Debounced to avoid excessive API calls while maintaining responsiveness.
Audit Log
Track all actions performed on your account with a detailed audit trail. Available in team contexts.
Tracked Actions
- Post publishing, scheduling, and failures
- Account connections and disconnections
- Content library changes (create, update, delete)
- Social listening keyword management
- Webhook subscription changes
- Team member actions and role changes
- API key management
Filtering
Filter audit log entries by action type, resource type, and date range. Entries include timestamps, actor information, and detailed JSON context.
Connectors OS
Unified connector runtime for partner app discovery, credentialed connection, health monitoring, and operation execution.
MCP Tools
| Tool | Description |
|---|---|
list_connectors |
List all available connectors (organic, paid_media, automation, workspace). |
get_connector_capabilities |
Get a connector’s supported operations and constraints. |
connect_connector |
Connect a connector (OAuth redirect, API key storage, or webhook registration). |
disconnect_connector |
Disconnect and revoke credentials for a connector. |
list_connected_connectors |
List connected connectors and their connection status. |
get_connector_health |
Get health status and SLO metrics for a connector. |
execute_connector_operation |
Execute a specific connector operation (read/write) with operation-specific input. |
Paid Media OS
Paid acquisition orchestration across campaign planning, creative lifecycle, and performance feedback loops.
MCP Tools
| Tool | Description |
|---|---|
list_ad_accounts |
List connected ad accounts across platforms. |
create_ad_campaign |
Create a new ad campaign (enqueued for async connector sync). |
list_ad_campaigns |
List campaigns for an ad account with status and summary. |
update_ad_campaign |
Update campaign settings (name, budget, dates, status). |
create_ad_creative |
Create an ad creative (image/video/carousel/text) for a campaign. |
get_ad_performance |
Fetch performance metrics for account/campaign/ad_set/creative. |
get_unified_ad_report |
Get a cross-platform advertising report aggregated across connected platforms. |
CRM OS
Conversation-centric CRM layer for inbound threads, AI-assisted replies, and escalation routing.
MCP Tools
| Tool | Description |
|---|---|
list_conversations |
List and filter unified inbox conversations. |
get_conversation |
Fetch a conversation thread with all messages. |
reply_to_conversation |
Send an outbound reply (requires reply routing metadata to be configured on the conversation). |
update_conversation |
Update status, priority, assignment, sentiment, or tags. |
get_inbox_summary |
Inbox summary metrics across recent conversations. |
escalate_to_support |
Queue an escalation to support platforms (Zendesk/Intercom/etc.) via durable jobs. |
Note: outbound replies are delivered asynchronously via durable_jobs. For non-platform connectors,
configure reply routing on the conversation (stored in conversations.metadata.replyRouting).
Analytics/Attribution OS
Cross-channel measurement layer for conversion attribution, funnel diagnostics, and executive reporting.
MCP Tools
| Tool | Description |
|---|---|
get_unified_analytics |
Get cross-platform analytics (organic + paid) for a date range. |
get_attribution_report |
Generate an attribution report for a date range using a selected model. |
get_anomaly_alerts |
List recent anomaly alerts across key metrics. |
get_benchmark_comparison |
Compare your metrics against industry benchmarks. |
create_scheduled_report |
Create a recurring analytics report with automated delivery. |
AI Agent OS
Agent runtime with 12 specialized agents for planning, execution, quality control, and optimization, governed by centralized policy controls.
MCP Tools
| Tool | Description |
|---|---|
list_agents |
List all 12 available AI agents and their capabilities. |
invoke_agent |
Run a specific agent with structured input and policy checks. |
get_agent_run |
Fetch details and output of a specific agent run. |
list_agent_runs |
List recent agent runs with status and summary. |
get_agent_policies |
Get active policies/guardrails for an agent. |
update_agent_policy |
Create or update an agent policy/guardrail. |
Workflows OS
Composable automation engine to orchestrate multi-step execution across Connectors OS, Paid Media OS, CRM OS, and AI Agent OS.
MCP Tools
| Tool | Description |
|---|---|
list_workflows |
List automation workflows with status and trigger info. |
create_workflow |
Create a workflow with trigger + ordered steps. |
update_workflow |
Update workflow configuration (steps, name) or toggle active state. |
delete_workflow |
Delete a workflow permanently. |
trigger_workflow |
Enqueue a workflow run for async execution (durable jobs). |
list_workflow_runs |
List recent runs for a workflow. |
get_workflow_run |
Fetch step-by-step execution logs and outputs for a run. |
Workflow runs are executed asynchronously from durable_jobs by the cron worker
/api/cron/process-durable-jobs.
Currently supported workflow step types:
connector_action(alias:connector_operation) — execute a connector operation using aconnector_credentialsrecord.agent_invoke— run one of the 12 AI agents.delay— wait using durable job deferral.transform— merge values into workflow variables (vars).notify— create in-app notification (and team destinations if configured).http_request— make an outbound HTTP request (restricted hostnames for safety).
Launch Gate Checklist
Use this concise gate before GA launch or major release rollout.
- Connector coverage: 80 connectors discovered, authenticated, and passing health checks.
- Agent readiness: all 12 agents available with policy controls validated in production-like conditions.
- Durable jobs: cron worker
/api/cron/process-durable-jobsenabled to draindurable_jobsqueues for async operations (ads sync, workflows, connector tasks). - Required conformance checks: connector contract conformance, policy enforcement conformance, attribution schema conformance, and workflow execution conformance.
Platform Limits
Content specifications and rate limits for each platform.
Limits evolve. For the canonical limits that match the current deployment use GET /api/v1/requirements?platform=<id> (public) or the MCP tool get_platform_requirements.
| Limit | Value |
|---|---|
| Text length | 3,000 characters |
| Image formats | PNG, JPEG, GIF |
| Video max size | 5GB |
| Video max length | 10 minutes |
| Daily rate limit | 150 posts/day |
| Limit | Value |
|---|---|
| Text length | 63,206 characters |
| Image formats | JPEG, PNG, GIF, WebP |
| Image max size | 4MB |
| Video formats | MP4, MOV |
| Video max size | 10GB |
| Video max length | 240 minutes |
| Daily rate limit | 200 posts/day (Page) |
| Token expiry | 60 days (long-lived) |
| Limit | Value |
|---|---|
| Caption length | 2,200 characters |
| Hashtags | 30 maximum (3-5 recommended, use First Comment for cleaner captions) |
| Image formats | JPEG, PNG |
| Image max size | 8MB |
| Image dimensions | 320x320 to 1440x1440px |
| Image aspect ratio | 4:5 to 1.91:1 |
| Video max size | 100MB |
| Reels duration | 5-90 seconds (for Reels tab) |
| Carousel images | 2-10 images |
| Daily rate limit | 25 API posts/day |
| First Comment | Supported (dashboard feature for hashtag strategy) |
YouTube
| Limit | Value |
|---|---|
| Title length | 100 characters |
| Description length | 5,000 characters |
| Video formats | MP4, MOV, AVI, WMV, FLV, WebM, 3GPP |
| Shorts duration | Up to 60 seconds |
| Regular video duration | Up to 12 hours |
| Max file size | 256GB |
| Max resolution | 4K (3840x2160) |
| Daily upload limit | ~50 videos/day |
| Token expiry | 1 hour (auto-refresh enabled) |
| Limit | Value |
|---|---|
| Title length | 100 characters |
| Description length | 500 characters |
| Image formats | PNG, JPEG, GIF, WebP |
| Image max size | 32MB |
| Recommended aspect ratio | 2:3 (1000x1500px optimal) |
| Video formats | MP4, MOV |
| Video duration | 4 seconds to 15 minutes |
| Daily rate limit | 1,000 pins/day |
| Board selection | Required (dashboard has visual picker, AI assistant uses default) |
| Token expiry | Long-lived |
TikTok
| Limit | Value |
|---|---|
| Caption length | 2,200 characters |
| Hashtags | 5 maximum (3-5 recommended) |
| Video formats | MP4, MOV, WebM |
| Video duration | 3-600 seconds |
| Video max size | 4GB |
| Daily rate limit | ~15 posts/day |
| Token expiry | 24 hours (auto-refresh enabled) |
| Sandbox mode | Posts are private until audit approval |
Threads
| Limit | Value |
|---|---|
| Text length | 500 characters |
| Text-only posts | Supported (unique to Threads) |
| Image formats | JPEG, PNG |
| Image max size | 8MB |
| Video formats | MP4, MOV |
| Video duration | Up to 5 minutes |
| Video max size | 100MB |
| Carousel items | 2-20 items (images and/or videos) |
| Daily rate limit | 250 posts/day |
| Token expiry | 60 days |
X (Twitter)
| Limit | Value |
|---|---|
| Text length | 280 characters |
| Text-only posts | Supported |
| Image formats | JPEG, PNG, GIF, WebP |
| Image max size | 5MB |
| Images per tweet | 4 maximum |
| Daily rate limit | ~17 tweets/day (free tier) |
| Token expiry | 2 hours (auto-refresh enabled) |
Product Hunt
| Limit | Value |
|---|---|
| Goal title length | 280 characters |
| Content type | Text-only |
| Write access | Requires app whitelisting |
| Token expiry | No expiration |
Edit & Delete Support by Platform
| Platform | Edit | Delete | Edit Notes |
|---|---|---|---|
| X | No | Yes | — |
| Yes | Yes | Text/caption | |
| Yes | Yes | Text/caption | |
| LinkedIn Page | Yes | Yes | Text/caption |
| Threads | No | Yes | — |
| No | No | — | |
| YouTube | Yes | Yes | Title, description, tags |
| No | Yes | — | |
| TikTok | No | No | — |
| Bluesky | Yes | Yes | Text/caption |
| Mastodon | Yes | Yes | Text/caption |
| Telegram | Yes | Yes | Text/caption |
All Tools Reference
Complete list of available MCP tools.
Note: conservative GA deployments may hide beta tools. Query /api/v1/capabilities for active availability. Beta tools are disabled when SENDIT_GA_MODE=1; set SENDIT_GA_MODE=0 to enable them in dev/self-hosted environments.
Publishing
| Tool | Description |
|---|---|
publish_content |
Publish immediately to one or multiple platforms. Pinterest: use boardId or boardName to specify target board. |
schedule_content |
Schedule posts for future publishing |
trigger_scheduled_post |
Manually publish a scheduled post early |
bulk_schedule |
Schedule multiple posts from CSV content |
preview_content |
Preview how posts will appear on each platform with validation |
AI Content Generation
| Tool | Description |
|---|---|
generate_content |
Generate AI-powered platform-specific content from media or prompts. Analyzes videos/images and creates optimized captions. |
publish_ai |
Combined AI content generation and publishing in one step. Generates optimized content and publishes to all specified platforms. |
AI generation uses video frame analysis for videos and respects each platform's character limits and hashtag best practices.
Account Management
| Tool | Description |
|---|---|
connect_platform |
Generic connection tool. Pass any supported platform ID to get OAuth, token, webhook, or custom setup action. |
connect_* |
Backward-compatible per-platform aliases generated from the platform catalog (for example connect_linkedin, connect_discord, connect_bluesky). |
get_platform_settings_schema |
Returns the platform-specific schema contract for content.platformSettings.<platformId>. |
sendit://meta/platform-settings |
MCP resource with schema contracts for all platform settings in one machine-readable snapshot. |
list_teams |
List all teams you belong to (returns team IDs, names, slugs, and your role) |
list_connected_accounts |
View all connected social accounts. Pass team_id to see a team's accounts. |
Team Context
SendIt supports team-based workflows. Use list_teams to discover your teams, then pass the team_id parameter to tools like list_connected_accounts, publish_content, schedule_content, and get_scheduled_posts to operate in team context.
If your API key is team-scoped (created for a specific team), all tools automatically operate in that team's context — no team_id parameter needed.
Scheduling
| Tool | Description |
|---|---|
get_scheduled_posts |
List all pending scheduled posts |
delete_scheduled_post |
Cancel a scheduled post |
Content Management
| Tool | Description |
|---|---|
delete_post |
Delete a published post. Supported on X, Facebook, LinkedIn, LinkedIn Page, Threads, YouTube, Pinterest, Bluesky, Mastodon, and Telegram. |
edit_post |
Edit a published post's text/caption. Supported on YouTube (title/description/tags), LinkedIn, Facebook, Mastodon, Telegram, and Bluesky. Not supported on X, Threads, Instagram, Pinterest, or TikTok. Parameters: postId (required), text, title, description, tags. |
Analytics
| Tool | Description |
|---|---|
get_analytics |
Get engagement metrics (fetches ALL posts for TikTok/Instagram/Threads/X; SendIt-only for LinkedIn) |
Product Hunt
| Tool | Description |
|---|---|
create_goal |
Create a new maker goal on Product Hunt (requires whitelisting) |
complete_goal |
Mark a goal as complete or incomplete (requires whitelisting) |
upvote_product |
Upvote a product on Product Hunt (requires whitelisting) |
get_producthunt_analytics |
Get product metrics (votes, comments, reviews) |
Media & Uploads
| Tool | Description |
|---|---|
upload_media |
Upload local files to cloud storage (Claude Desktop only) |
create_upload_session |
Generate a one-click upload link for users (Claude.ai, ChatGPT, web assistants) |
get_upload_session |
Check upload status and retrieve the media URL after user uploads |
Utilities
| Tool | Description |
|---|---|
get_platform_requirements |
View platform content specifications |
validate_content |
Validate content against platform requirements before publishing |
Content Library
| Tool | Description |
|---|---|
save_to_library |
Save content to library (draft, template, or evergreen) |
create_library_item |
Alias for save_to_library (backward-compatible) |
list_library |
List all items in your content library |
get_library_item |
Get a specific library item by ID |
update_library_item |
Update an existing library item |
delete_library_item |
Delete an item from your content library |
publish_from_library |
Publish content directly from a library item |
Planned: library item duplication, starring, archiving, and first-class platform variants.
Social Listening
| Tool | Description |
|---|---|
add_keyword |
Add a keyword to monitor (brand, hashtag, competitor, or topic) |
list_keywords |
List all monitored keywords |
update_keyword |
Update keyword settings (platforms, notifications, filters) |
delete_keyword |
Stop monitoring a keyword |
get_mentions |
Get mentions matching your monitored keywords |
mark_mentions_read |
Mark mentions as read |
get_alerts |
Get alerts for spikes, sentiment changes, and trending topics |
dismiss_alerts |
Dismiss alerts |
get_listening_summary |
Get a summary of all listening activity |
Brand Voice
| Tool | Description |
|---|---|
list_brand_voices |
List all brand voice profiles |
create_brand_voice |
Create a new brand voice profile with tone, personality, and rules |
set_default_brand_voice |
Set a brand voice profile as the default for AI generation |
Campaigns
| Tool | Description |
|---|---|
plan_campaign |
Generate an AI-powered campaign plan with multi-post sequence |
list_campaigns |
List all campaigns |
schedule_campaign |
Schedule all posts in a campaign |
Approval Workflow
| Tool | Description |
|---|---|
list_pending_approvals |
List posts waiting for approval |
approve_post |
Approve a pending post for publishing |
reject_post |
Reject a post with feedback |
Social Inbox
| Tool | Description |
|---|---|
list_inbox |
List inbox threads with comment conversations |
reply_to_comment |
Reply to a comment thread on the platform |
refresh_mentions |
Trigger a fresh poll of mentions across all platforms |
AI Media Generation
| Tool | Description |
|---|---|
generate_ai_media |
Generate AI images or videos (Sora, Runway, Pika, Adobe Express) |
check_ai_media_status |
Check the status of an AI media generation job |
Analytics Intelligence
| Tool | Description |
|---|---|
get_best_times |
Get optimal posting times based on historical engagement data |
score_content |
Score content quality 0-100 before publishing |
AI Social & Intelligence
| Tool | Description |
|---|---|
draft_reply |
Generate an AI reply draft for a mention with brand voice and safety flags |
summarize_mentions |
Cluster and summarize mentions by theme and sentiment |
generate_post_bundle |
Generate multiple content variants with quality scoring and rationale |
critique_post |
Score and critique content quality with AI-powered suggestions |
Enterprise
| Tool | Description |
|---|---|
get_audit_log |
Retrieve audit log entries for your account |
list_dead_letter |
List posts in the dead letter queue (exhausted retries) |
requeue_dead_letter |
Retry a failed post from the dead letter queue |
Connectors OS
| Tool | Description |
|---|---|
list_connectors |
List all available connectors by category and status |
get_connector_capabilities |
Get operations and constraints for a connector |
connect_connector |
Connect a connector (OAuth redirect, token, or webhook) |
disconnect_connector |
Disconnect and revoke credentials for a connector |
list_connected_connectors |
List connected connectors and connection status |
get_connector_health |
Get connector health status and SLO metrics |
execute_connector_operation |
Execute a connector operation with operation-specific input |
Paid Media OS
| Tool | Description |
|---|---|
list_ad_accounts |
List connected ad accounts across platforms |
create_ad_campaign |
Create a new ad campaign (async sync via durable jobs) |
list_ad_campaigns |
List campaigns for an ad account |
update_ad_campaign |
Update campaign settings and status |
create_ad_creative |
Create an ad creative for a campaign or ad set |
get_ad_performance |
Fetch performance metrics for account/campaign/ad_set/creative |
get_unified_ad_report |
Get a cross-platform aggregated ad report |
CRM OS
| Tool | Description |
|---|---|
list_conversations |
List conversations and filter by status/priority/sentiment |
get_conversation |
Get a conversation with full message thread |
reply_to_conversation |
Send an outbound reply (async delivery via durable jobs) |
update_conversation |
Update status, priority, assignment, sentiment, or tags |
get_inbox_summary |
Get inbox summary metrics |
escalate_to_support |
Escalate a conversation to a support connector |
Analytics/Attribution OS
| Tool | Description |
|---|---|
get_unified_analytics |
Get unified organic + paid analytics for a date range |
get_attribution_report |
Generate an attribution report using a selected model |
get_anomaly_alerts |
List recent anomaly alerts across metrics |
get_benchmark_comparison |
Compare performance against benchmarks |
create_scheduled_report |
Create a recurring analytics report with delivery |
AI Agent OS
| Tool | Description |
|---|---|
list_agents |
List all available AI agents |
invoke_agent |
Invoke a specific agent with structured input |
get_agent_run |
Get a specific agent run output |
list_agent_runs |
List recent agent runs |
get_agent_policies |
Get policies/guardrails for an agent |
update_agent_policy |
Create or update an agent policy |
Workflows OS
| Tool | Description |
|---|---|
list_workflows |
List workflows with trigger and active status |
create_workflow |
Create a workflow with trigger + ordered steps |
update_workflow |
Update workflow configuration or toggle active state |
delete_workflow |
Delete a workflow |
trigger_workflow |
Enqueue a workflow run (async via durable jobs) |
list_workflow_runs |
List recent runs for a workflow |
get_workflow_run |
Get run details and step logs |
Future Features
SendIt is actively evolving. Here are potential features we're considering for future releases.
Advanced Discovery
Enhanced discovery features to complement social listening:
Competitor Deep Analysis
Detailed competitor content analysis with engagement benchmarking and content strategy insights.
Trending Content Research
Discover trending content and popular posts in your niche to inspire your own content creation.
Cross-Platform Discovery
Find accounts and content across multiple platforms that match your interests.
Influencer Identification
Discover and track influencers in your industry for potential partnerships.
Planned Features
- Visual Content Calendar - Drag-and-drop scheduling interface
- Bluesky Integration - Publishing to the decentralized social network
- Google Business Profile - Local business posting and reviews
- Snapchat Integration - Publishing to Snapchat Stories
- White-Label Dashboard - Custom-branded dashboard for agencies
Have a feature you'd like to see? Let us know! We prioritize development based on user feedback.
Social Listening Coming Soon
Monitor keywords, track brand mentions, and get alerts for important conversations across supported platforms.
Social Listening is not yet available. This feature is currently in development and will be enabled in a future release. Note: X (Twitter) is not supported due to API cost constraints.
Supported Platforms
Social listening works across all supported platforms. Platforms marked with Active Ingestion support automated polling for mentions via connected accounts:
Keyword Types
Setting Up Monitoring
Ask your AI assistant:
Bulk Actions
Efficiently manage large volumes of mentions and alerts:
Advanced Filtering
Find exactly what you're looking for:
Alerts & Notifications
Get notified when important events occur:
Notification Options
Sentiment Analysis
SendIt automatically analyzes the sentiment of mentions:
Filter your mentions by sentiment to quickly identify and respond to negative feedback or celebrate positive engagement.