{
  "source": "https://turboyap.com/tools/social-api-limits",
  "platforms": [
    {
      "platform": "instagram",
      "name": "Instagram",
      "turboyap_status": "early_access",
      "api": {
        "name": "Instagram Platform Content Publishing API (Instagram API with Instagram Login or Facebook Login)",
        "docs_url": "https://developers.facebook.com/docs/instagram-platform/content-publishing",
        "access": "Instagram professional account. Instagram Login scopes: instagram_business_basic + instagram_business_content_publish. Facebook Login scopes: instagram_basic, instagram_content_publish, pages_read_engagement. Apps serving multiple businesses need Advanced Access, which requires App Review with a screencast.",
        "cost": "No API fee listed in the publishing docs"
      },
      "post_types": [
        {
          "type": "Image",
          "limits": [
            {
              "label": "Format",
              "value": "JPEG only (no MPO/JPS)",
              "source": "https://developers.facebook.com/docs/instagram-platform/content-publishing"
            },
            {
              "label": "Max file size",
              "value": "8 MB",
              "source": "https://developers.facebook.com/documentation/instagram-platform/instagram-graph-api/reference/ig-user/media.md"
            },
            {
              "label": "Aspect ratio",
              "value": "4:5 to 1.91:1",
              "source": "https://developers.facebook.com/documentation/instagram-platform/instagram-graph-api/reference/ig-user/media.md"
            },
            {
              "label": "Width",
              "value": "320–1440 px (scaled to fit)",
              "source": "https://developers.facebook.com/documentation/instagram-platform/instagram-graph-api/reference/ig-user/media.md"
            },
            {
              "label": "Caption",
              "value": "2,200 characters",
              "source": "https://developers.facebook.com/documentation/instagram-platform/instagram-graph-api/reference/ig-user/media.md"
            },
            {
              "label": "Hashtags",
              "value": "30 per post",
              "source": "https://developers.facebook.com/documentation/instagram-platform/instagram-graph-api/reference/ig-user/media.md"
            },
            {
              "label": "Mentions",
              "value": "20 @ tags per post",
              "source": "https://developers.facebook.com/documentation/instagram-platform/instagram-graph-api/reference/ig-user/media.md"
            },
            {
              "label": "Alt text",
              "value": "1,000 characters (images only)",
              "source": "https://developers.facebook.com/documentation/instagram-platform/instagram-graph-api/reference/ig-user/media.md"
            },
            {
              "label": "Collaborators",
              "value": "Up to 3",
              "source": "https://developers.facebook.com/documentation/instagram-platform/instagram-graph-api/reference/ig-user/media.md"
            }
          ]
        },
        {
          "type": "Carousel",
          "limits": [
            {
              "label": "Items",
              "value": "Up to 10 images, videos or a mix",
              "source": "https://developers.facebook.com/docs/instagram-platform/content-publishing"
            },
            {
              "label": "Aspect ratio",
              "value": "Cropped to the first image (default 1:1)",
              "source": "https://developers.facebook.com/docs/instagram-platform/content-publishing"
            },
            {
              "label": "Reels",
              "value": "Not allowed in carousels",
              "source": "https://developers.facebook.com/documentation/instagram-platform/instagram-graph-api/reference/ig-user/media.md"
            },
            {
              "label": "Caption",
              "value": "2,200 characters (on the carousel container, not on items)",
              "source": "https://developers.facebook.com/documentation/instagram-platform/instagram-graph-api/reference/ig-user/media.md"
            }
          ]
        },
        {
          "type": "Reels",
          "limits": [
            {
              "label": "Container",
              "value": "MOV or MP4, moov atom at front",
              "source": "https://developers.facebook.com/documentation/instagram-platform/instagram-graph-api/reference/ig-user/media.md"
            },
            {
              "label": "Codecs",
              "value": "HEVC or H.264 video; AAC audio (48 kHz max)",
              "source": "https://developers.facebook.com/documentation/instagram-platform/instagram-graph-api/reference/ig-user/media.md"
            },
            {
              "label": "Duration",
              "value": "3 seconds to 15 minutes",
              "source": "https://developers.facebook.com/documentation/instagram-platform/instagram-graph-api/reference/ig-user/media.md"
            },
            {
              "label": "Max file size",
              "value": "300 MB",
              "source": "https://developers.facebook.com/documentation/instagram-platform/instagram-graph-api/reference/ig-user/media.md"
            },
            {
              "label": "Aspect ratio",
              "value": "0.01:1 to 10:1 (9:16 recommended)",
              "source": "https://developers.facebook.com/documentation/instagram-platform/instagram-graph-api/reference/ig-user/media.md"
            },
            {
              "label": "Resolution",
              "value": "Max 1920 px wide",
              "source": "https://developers.facebook.com/documentation/instagram-platform/instagram-graph-api/reference/ig-user/media.md"
            },
            {
              "label": "Frame rate",
              "value": "23–60 FPS",
              "source": "https://developers.facebook.com/documentation/instagram-platform/instagram-graph-api/reference/ig-user/media.md"
            },
            {
              "label": "Video bitrate",
              "value": "25 Mbps max (VBR)",
              "source": "https://developers.facebook.com/documentation/instagram-platform/instagram-graph-api/reference/ig-user/media.md"
            },
            {
              "label": "Caption",
              "value": "2,200 characters, 30 hashtags, 20 @ tags",
              "source": "https://developers.facebook.com/documentation/instagram-platform/instagram-graph-api/reference/ig-user/media.md"
            }
          ]
        },
        {
          "type": "Stories",
          "limits": [
            {
              "label": "Image",
              "value": "JPEG, 8 MB max (9:16 recommended)",
              "source": "https://developers.facebook.com/documentation/instagram-platform/instagram-graph-api/reference/ig-user/media.md"
            },
            {
              "label": "Video duration",
              "value": "3–60 seconds",
              "source": "https://developers.facebook.com/documentation/instagram-platform/instagram-graph-api/reference/ig-user/media.md"
            },
            {
              "label": "Video file size",
              "value": "100 MB",
              "source": "https://developers.facebook.com/documentation/instagram-platform/instagram-graph-api/reference/ig-user/media.md"
            },
            {
              "label": "Video aspect ratio",
              "value": "0.1:1 to 10:1 (9:16 recommended)",
              "source": "https://developers.facebook.com/documentation/instagram-platform/instagram-graph-api/reference/ig-user/media.md"
            },
            {
              "label": "Video specs",
              "value": "Same container, codecs, frame rate and bitrate as Reels",
              "source": "https://developers.facebook.com/documentation/instagram-platform/instagram-graph-api/reference/ig-user/media.md"
            },
            {
              "label": "Lifetime",
              "value": "Expire after 24 hours",
              "source": "https://developers.facebook.com/documentation/instagram-platform/instagram-graph-api/reference/ig-user/media.md"
            }
          ]
        }
      ],
      "quotas": [
        {
          "label": "Published posts",
          "value": "100 per 24 hours per account (carousel counts as 1)",
          "source": "https://developers.facebook.com/docs/instagram-platform/content-publishing"
        },
        {
          "label": "Media containers",
          "value": "400 per rolling 24 hours per account",
          "source": "https://developers.facebook.com/documentation/instagram-platform/instagram-graph-api/reference/ig-user/media.md"
        },
        {
          "label": "Container lifetime",
          "value": "Expire after 24 hours",
          "source": "https://developers.facebook.com/documentation/instagram-platform/instagram-graph-api/reference/ig-user/media.md"
        }
      ],
      "verified": "2026-10-18",
      "notes": [
        "Meta's docs give two daily caps: 100 API-published posts per 24 hours in the publishing guide, and 50 in the carousel section and the content_publishing_limit reference. Read quota_total at runtime before relying on either.",
        "Reels can be up to 15 minutes.",
        "Image posts accept alt text (added March 24, 2025).",
        "Trial reels can be published with the trial_params field.",
        "Apps must pass App Review before requesting Advanced Access permissions."
      ]
    },
    {
      "platform": "tiktok",
      "name": "TikTok",
      "turboyap_status": "early_access",
      "api": {
        "name": "TikTok Content Posting API (Direct Post)",
        "docs_url": "https://developers.tiktok.com/doc/content-posting-api-reference-direct-post",
        "access": "Register app, add the Content Posting API product, enable Direct Post, and get the video.publish scope approved. An audit is required for public posting. Unaudited clients can post SELF_ONLY to private accounts, for up to 5 users per 24 hours. Must query creator_info and honor the creator's privacy options.",
        "cost": "No API fee listed in the publishing docs"
      },
      "post_types": [
        {
          "type": "Video",
          "limits": [
            {
              "label": "Caption",
              "value": "2,200 UTF-16 runes",
              "source": "https://developers.tiktok.com/doc/content-posting-api-reference-direct-post"
            },
            {
              "label": "Formats",
              "value": "MP4 (recommended), WebM, MOV",
              "source": "https://developers.tiktok.com/doc/content-posting-api-media-transfer-guide"
            },
            {
              "label": "Codecs",
              "value": "H.264 (recommended), H.265, VP8, VP9",
              "source": "https://developers.tiktok.com/doc/content-posting-api-media-transfer-guide"
            },
            {
              "label": "Max file size",
              "value": "4 GB",
              "source": "https://developers.tiktok.com/doc/content-posting-api-media-transfer-guide"
            },
            {
              "label": "Duration",
              "value": "Up to 10 minutes via API",
              "source": "https://developers.tiktok.com/doc/content-posting-api-media-transfer-guide"
            },
            {
              "label": "Creator duration cap",
              "value": "Per creator: max_video_post_duration_sec from creator_info",
              "source": "https://developers.tiktok.com/doc/content-posting-api-reference-query-creator-info"
            },
            {
              "label": "Resolution",
              "value": "360–4096 px on each side",
              "source": "https://developers.tiktok.com/doc/content-posting-api-media-transfer-guide"
            },
            {
              "label": "Frame rate",
              "value": "23–60 FPS",
              "source": "https://developers.tiktok.com/doc/content-posting-api-media-transfer-guide"
            },
            {
              "label": "Upload chunks",
              "value": "5–64 MB each (final up to 128 MB), 1–1,000 chunks",
              "source": "https://developers.tiktok.com/doc/content-posting-api-media-transfer-guide"
            },
            {
              "label": "Hashtags/mentions",
              "value": "Parsed from caption, delimited by spaces or new lines",
              "source": "https://developers.tiktok.com/doc/content-posting-api-reference-direct-post"
            }
          ]
        },
        {
          "type": "Photo post",
          "limits": [
            {
              "label": "Photos",
              "value": "Up to 35",
              "source": "https://developers.tiktok.com/doc/content-posting-api-reference-photo-post"
            },
            {
              "label": "Formats",
              "value": "JPEG, WebP",
              "source": "https://developers.tiktok.com/doc/content-posting-api-media-transfer-guide"
            },
            {
              "label": "Max file size",
              "value": "20 MB per image",
              "source": "https://developers.tiktok.com/doc/content-posting-api-media-transfer-guide"
            },
            {
              "label": "Resolution",
              "value": "Max 1080p",
              "source": "https://developers.tiktok.com/doc/content-posting-api-media-transfer-guide"
            },
            {
              "label": "Title",
              "value": "90 UTF-16 runes",
              "source": "https://developers.tiktok.com/doc/content-posting-api-reference-photo-post"
            },
            {
              "label": "Description",
              "value": "4,000 UTF-16 runes",
              "source": "https://developers.tiktok.com/doc/content-posting-api-reference-photo-post"
            }
          ]
        }
      ],
      "quotas": [
        {
          "label": "Post requests",
          "value": "6 per minute per user access token",
          "source": "https://developers.tiktok.com/doc/content-posting-api-reference-direct-post"
        },
        {
          "label": "Creator info queries",
          "value": "20 per minute per user access token",
          "source": "https://developers.tiktok.com/doc/content-posting-api-reference-query-creator-info"
        },
        {
          "label": "Posts per creator",
          "value": "About 15 per 24 hours (varies; shared across all API clients)",
          "source": "https://developers.tiktok.com/doc/content-sharing-guidelines"
        },
        {
          "label": "Active creators",
          "value": "24-hour active-creator cap per API client (number not published)",
          "source": "https://developers.tiktok.com/doc/content-sharing-guidelines"
        },
        {
          "label": "Unaudited clients",
          "value": "5 posting users per 24 hours",
          "source": "https://developers.tiktok.com/doc/content-sharing-guidelines"
        }
      ],
      "verified": "2026-10-18",
      "notes": [
        "TikTok doesn't publish the exact daily cap. Its content sharing guidelines say about 15 posts per day per creator account.",
        "Pulling media from a URL requires a verified domain or URL prefix (https, no redirects).",
        "Users must pick the privacy level themselves from a list with no default, and interaction toggles start off."
      ]
    },
    {
      "platform": "bluesky",
      "name": "Bluesky",
      "turboyap_status": "beta",
      "api": {
        "name": "AT Protocol / Bluesky API (com.atproto.repo.createRecord with app.bsky.feed.post)",
        "docs_url": "https://docs.bsky.app/docs/advanced-guides/posts",
        "access": "No app review or registration. OAuth clients self-publish a client metadata JSON (OAuth isn't recommended for headless bots). Bluesky-hosted accounts must verify their email before uploading video.",
        "cost": "No API fee listed in the docs"
      },
      "post_types": [
        {
          "type": "Text post",
          "limits": [
            {
              "label": "Text",
              "value": "300 graphemes (3,000 bytes)",
              "source": "https://github.com/bluesky-social/atproto/blob/main/lexicons/app/bsky/feed/post.json"
            },
            {
              "label": "Extra hashtags (tags field)",
              "value": "Up to 8, 64 graphemes each",
              "source": "https://github.com/bluesky-social/atproto/blob/main/lexicons/app/bsky/feed/post.json"
            },
            {
              "label": "Languages",
              "value": "Up to 3",
              "source": "https://github.com/bluesky-social/atproto/blob/main/lexicons/app/bsky/feed/post.json"
            }
          ]
        },
        {
          "type": "Post with images",
          "limits": [
            {
              "label": "Images",
              "value": "Up to 4",
              "source": "https://github.com/bluesky-social/atproto/blob/main/lexicons/app/bsky/embed/images.json"
            },
            {
              "label": "Max file size",
              "value": "2 MB per image (formerly 1 MB)",
              "source": "https://github.com/bluesky-social/atproto/blob/main/lexicons/app/bsky/embed/images.json"
            },
            {
              "label": "Formats",
              "value": "Any image/* type",
              "source": "https://github.com/bluesky-social/atproto/blob/main/lexicons/app/bsky/embed/images.json"
            }
          ]
        },
        {
          "type": "Post with video",
          "limits": [
            {
              "label": "Format",
              "value": "MP4",
              "source": "https://github.com/bluesky-social/atproto/blob/main/lexicons/app/bsky/embed/video.json"
            },
            {
              "label": "Max file size",
              "value": "300 MB (formerly 100 MB)",
              "source": "https://github.com/bluesky-social/atproto/blob/main/lexicons/app/bsky/embed/video.json"
            },
            {
              "label": "Captions",
              "value": "Up to 20 WebVTT files, 20 KB each",
              "source": "https://github.com/bluesky-social/atproto/blob/main/lexicons/app/bsky/embed/video.json"
            }
          ]
        }
      ],
      "quotas": [
        {
          "label": "Record writes",
          "value": "5,000 points per hour, 35,000 per day per account (create = 3 points)",
          "source": "https://docs.bsky.app/docs/advanced-guides/rate-limits"
        },
        {
          "label": "Posts created",
          "value": "About 1,666 per hour or 11,666 per day",
          "source": "https://docs.bsky.app/docs/advanced-guides/rate-limits"
        },
        {
          "label": "Sessions",
          "value": "30 per 5 minutes, 300 per day per account",
          "source": "https://docs.bsky.app/docs/advanced-guides/rate-limits"
        },
        {
          "label": "API requests",
          "value": "3,000 per 5 minutes per IP",
          "source": "https://docs.bsky.app/docs/advanced-guides/rate-limits"
        },
        {
          "label": "Blob upload",
          "value": "50 MB per upload (PDS)",
          "source": "https://docs.bsky.app/docs/advanced-guides/rate-limits"
        },
        {
          "label": "Daily video uploads",
          "value": "Account-level daily limits (not published)",
          "source": "https://docs.bsky.app/docs/tutorials/video"
        }
      ],
      "verified": "2026-10-18",
      "notes": [
        "The developer docs don't state a video duration limit.",
        "The current images lexicon allows 2 MB per image; an older posts guide still says 1 MB.",
        "Check app.bsky.video.getUploadLimits for each user before uploading video."
      ]
    },
    {
      "platform": "discord",
      "name": "Discord",
      "turboyap_status": "beta",
      "api": {
        "name": "Discord HTTP API (Create Message / Execute Webhook)",
        "docs_url": "https://docs.discord.com/developers/resources/message",
        "access": "Bot token with SEND_MESSAGES in the guild channel, or a channel webhook URL (creating a webhook requires MANAGE_WEBHOOKS)",
        "cost": "No API fee listed in the docs"
      },
      "post_types": [
        {
          "type": "Bot message",
          "limits": [
            {
              "label": "Content",
              "value": "2,000 characters",
              "source": "https://docs.discord.com/developers/resources/message"
            },
            {
              "label": "Embeds",
              "value": "Up to 10 per message",
              "source": "https://docs.discord.com/developers/resources/message"
            },
            {
              "label": "Embed text total",
              "value": "6,000 characters across all embeds",
              "source": "https://docs.discord.com/developers/resources/message"
            },
            {
              "label": "Embed title / description",
              "value": "256 / 4,096 characters",
              "source": "https://docs.discord.com/developers/resources/message"
            },
            {
              "label": "Embed fields",
              "value": "Up to 25 (name 256, value 1,024 characters)",
              "source": "https://docs.discord.com/developers/resources/message"
            },
            {
              "label": "Attachment size",
              "value": "20 MiB per file by default (higher with server Boost tier)",
              "source": "https://docs.discord.com/developers/reference"
            },
            {
              "label": "Request size",
              "value": "25 MiB max per message request",
              "source": "https://docs.discord.com/developers/resources/message"
            },
            {
              "label": "Embed image formats",
              "value": "JPG, JPEG, PNG, WEBP, GIF",
              "source": "https://docs.discord.com/developers/reference"
            }
          ]
        },
        {
          "type": "Webhook message",
          "limits": [
            {
              "label": "Content",
              "value": "2,000 characters",
              "source": "https://docs.discord.com/developers/resources/webhook"
            },
            {
              "label": "Embeds",
              "value": "Up to 10",
              "source": "https://docs.discord.com/developers/resources/webhook"
            },
            {
              "label": "Overrides",
              "value": "Per-message username and avatar_url",
              "source": "https://docs.discord.com/developers/resources/webhook"
            },
            {
              "label": "Forum/media channels",
              "value": "thread_name creates a new thread",
              "source": "https://docs.discord.com/developers/resources/webhook"
            }
          ]
        }
      ],
      "quotas": [
        {
          "label": "Global",
          "value": "50 requests per second per bot",
          "source": "https://docs.discord.com/developers/topics/rate-limits.md"
        },
        {
          "label": "Invalid requests",
          "value": "10,000 per 10 minutes (then temporary Cloudflare ban)",
          "source": "https://docs.discord.com/developers/topics/rate-limits.md"
        },
        {
          "label": "Per-route",
          "value": "Dynamic, returned in rate-limit headers (webhooks keyed by webhook ID)",
          "source": "https://docs.discord.com/developers/topics/rate-limits.md"
        }
      ],
      "verified": "2026-10-18",
      "notes": [
        "The default attachment limit is 20 MiB per file. Older references say 10 MiB or 25 MB.",
        "Stop calling a webhook that returns 404; repeated attempts can trigger temporary restrictions."
      ]
    },
    {
      "platform": "telegram",
      "name": "Telegram",
      "turboyap_status": "beta",
      "api": {
        "name": "Telegram Bot API (Bot API 10.3)",
        "docs_url": "https://core.telegram.org/bots/api",
        "access": "Create a bot with @BotFather to get a token, then target a channel with chat_id @channelusername or its numeric ID",
        "cost": "Free by default. Paid broadcasts above 30 messages/second cost 0.1 Stars per message."
      },
      "post_types": [
        {
          "type": "Message",
          "limits": [
            {
              "label": "Text",
              "value": "1–4,096 characters after entity parsing",
              "source": "https://core.telegram.org/bots/api/methods/sendmessage.md"
            }
          ]
        },
        {
          "type": "Photo",
          "limits": [
            {
              "label": "Max file size",
              "value": "10 MB",
              "source": "https://core.telegram.org/bots/api/methods/sendphoto.md"
            },
            {
              "label": "Dimensions",
              "value": "Width + height ≤ 10,000 px",
              "source": "https://core.telegram.org/bots/api/methods/sendphoto.md"
            },
            {
              "label": "Aspect ratio",
              "value": "Up to 20:1",
              "source": "https://core.telegram.org/bots/api/methods/sendphoto.md"
            },
            {
              "label": "Caption",
              "value": "0–1,024 characters",
              "source": "https://core.telegram.org/bots/api/methods/sendphoto.md"
            },
            {
              "label": "Via URL",
              "value": "5 MB max for photos",
              "source": "https://core.telegram.org/bots/api.md"
            }
          ]
        },
        {
          "type": "Video",
          "limits": [
            {
              "label": "Max file size",
              "value": "50 MB",
              "source": "https://core.telegram.org/bots/api/methods/sendvideo.md"
            },
            {
              "label": "Format",
              "value": "MPEG4 (other formats send as documents)",
              "source": "https://core.telegram.org/bots/api/methods/sendvideo.md"
            },
            {
              "label": "Caption",
              "value": "0–1,024 characters",
              "source": "https://core.telegram.org/bots/api/methods/sendvideo.md"
            },
            {
              "label": "Thumbnail",
              "value": "JPEG under 200 kB, max 320 px",
              "source": "https://core.telegram.org/bots/api/methods/sendvideo.md"
            },
            {
              "label": "Via URL",
              "value": "20 MB max for non-photo files",
              "source": "https://core.telegram.org/bots/api.md"
            }
          ]
        },
        {
          "type": "Media group",
          "limits": [
            {
              "label": "Items",
              "value": "2–10",
              "source": "https://core.telegram.org/bots/api/methods/sendmediagroup.md"
            },
            {
              "label": "Types",
              "value": "Photo, video, live photo, document, audio (documents and audio only with their own type)",
              "source": "https://core.telegram.org/bots/api/methods/sendmediagroup.md"
            }
          ]
        }
      ],
      "quotas": [
        {
          "label": "Per chat",
          "value": "About 1 message per second",
          "source": "https://core.telegram.org/bots/faq"
        },
        {
          "label": "Per group",
          "value": "20 messages per minute",
          "source": "https://core.telegram.org/bots/faq"
        },
        {
          "label": "Broadcast",
          "value": "About 30 messages per second (free)",
          "source": "https://core.telegram.org/bots/faq"
        },
        {
          "label": "Paid broadcast",
          "value": "Up to 1,000 messages per second (0.1 Stars per message over 30/s)",
          "source": "https://core.telegram.org/bots/faq"
        }
      ],
      "verified": "2026-10-18",
      "notes": [
        "Bot API 10.3 (August 24, 2026).",
        "Uploads are capped at 10 MB for photos and 50 MB for other files, or up to 2,000 MB through a self-hosted Bot API server."
      ]
    },
    {
      "platform": "facebook",
      "name": "Facebook (Pages)",
      "turboyap_status": "planned",
      "api": {
        "name": "Facebook Pages API + Video API (Reels Publishing API)",
        "docs_url": "https://developers.facebook.com/documentation/pages-api/posts.md",
        "access": "Facebook Login with a Page access token. Scopes: pages_manage_posts, pages_read_engagement, pages_show_list (Pages guide also lists pages_manage_engagement, pages_read_user_engagement, and publish_video for video). The user must be able to perform CREATE_CONTENT on the Page.",
        "cost": "No API fee listed in the publishing docs"
      },
      "post_types": [
        {
          "type": "Page post",
          "limits": [
            {
              "label": "Endpoint",
              "value": "POST /{page-id}/feed (message, link)",
              "source": "https://developers.facebook.com/documentation/pages-api/posts.md"
            },
            {
              "label": "Scheduling",
              "value": "10 minutes to 30 days ahead",
              "source": "https://developers.facebook.com/documentation/pages-api/posts.md"
            },
            {
              "label": "Editing",
              "value": "Only posts made by the same app",
              "source": "https://developers.facebook.com/documentation/pages-api/posts.md"
            }
          ]
        },
        {
          "type": "Photo",
          "limits": [
            {
              "label": "Formats",
              "value": "JPEG, BMP, PNG, GIF, TIFF",
              "source": "https://developers.facebook.com/docs/graph-api/reference/page/photos"
            },
            {
              "label": "Max file size",
              "value": "10 MB",
              "source": "https://developers.facebook.com/docs/graph-api/reference/page/photos"
            },
            {
              "label": "PNG guidance",
              "value": "Keep under 1 MB to avoid pixelation",
              "source": "https://developers.facebook.com/docs/graph-api/reference/page/photos"
            },
            {
              "label": "Multi-photo",
              "value": "Upload unpublished photos, then post to /feed with attached_media",
              "source": "https://developers.facebook.com/docs/graph-api/reference/page/photos"
            }
          ]
        },
        {
          "type": "Video",
          "limits": [
            {
              "label": "Upload format",
              "value": "MP4 (Resumable Upload API)",
              "source": "https://developers.facebook.com/documentation/video-api/guides/publishing"
            }
          ]
        },
        {
          "type": "Reels",
          "limits": [
            {
              "label": "Format",
              "value": "MP4 recommended",
              "source": "https://developers.facebook.com/documentation/video-api/guides/reels-publishing.md"
            },
            {
              "label": "Duration",
              "value": "3–90 seconds",
              "source": "https://developers.facebook.com/documentation/video-api/guides/reels-publishing.md"
            },
            {
              "label": "Aspect ratio",
              "value": "9:16",
              "source": "https://developers.facebook.com/documentation/video-api/guides/reels-publishing.md"
            },
            {
              "label": "Resolution",
              "value": "1080×1920 recommended, 540×960 minimum",
              "source": "https://developers.facebook.com/documentation/video-api/guides/reels-publishing.md"
            },
            {
              "label": "Frame rate",
              "value": "24–60 FPS",
              "source": "https://developers.facebook.com/documentation/video-api/guides/reels-publishing.md"
            },
            {
              "label": "Codecs",
              "value": "H.264 or H.265 (VP9, AV1 also supported); AAC-LC audio",
              "source": "https://developers.facebook.com/documentation/video-api/guides/reels-publishing.md"
            },
            {
              "label": "Scheduling",
              "value": "10 minutes to 29 days ahead",
              "source": "https://developers.facebook.com/documentation/video-api/guides/reels-publishing.md"
            }
          ]
        }
      ],
      "quotas": [
        {
          "label": "Reels published",
          "value": "30 per 24 hours (moving window)",
          "source": "https://developers.facebook.com/documentation/video-api/guides/reels-publishing.md"
        },
        {
          "label": "Collaborator invites",
          "value": "10 per Page per 24 hours",
          "source": "https://developers.facebook.com/documentation/video-api/guides/reels-publishing.md"
        }
      ],
      "verified": "2026-10-18",
      "notes": [
        "Meta doesn't publish a text length limit, a photos-per-post limit or a posting rate for Pages.",
        "The Reels Publishing API posts to Pages only, with public privacy, and rejects files hosted on Meta's CDN."
      ]
    },
    {
      "platform": "linkedin",
      "name": "LinkedIn",
      "turboyap_status": "planned",
      "api": {
        "name": "LinkedIn Community Management API (Posts API, versioned li-lms-2026-09)",
        "docs_url": "https://learn.microsoft.com/en-us/linkedin/marketing/community-management/shares/posts-api?view=li-lms-2026-09",
        "access": "Community Management API is for registered legal organizations with commercial use cases. Development tier needs a vetted access request (business email, verified org and Page). Standard tier needs a second review with a screen recording. Scopes: w_member_social (member posts), w_organization_social (Page posts; ADMINISTRATOR, DSC poster or CONTENT_ADMIN role).",
        "cost": "No API fee listed in the docs"
      },
      "post_types": [
        {
          "type": "Text",
          "limits": [
            {
              "label": "Mentions",
              "value": "Org mentions must match the full name; member mentions can match part of the name",
              "source": "https://learn.microsoft.com/en-us/linkedin/marketing/community-management/shares/posts-api?view=li-lms-2026-09"
            }
          ]
        },
        {
          "type": "Image",
          "limits": [
            {
              "label": "Formats",
              "value": "JPG, GIF, PNG",
              "source": "https://learn.microsoft.com/en-us/linkedin/marketing/community-management/shares/images-api?view=li-lms-2026-09"
            },
            {
              "label": "Max pixels",
              "value": "Under 36,152,320 pixels",
              "source": "https://learn.microsoft.com/en-us/linkedin/marketing/community-management/shares/images-api?view=li-lms-2026-09"
            },
            {
              "label": "GIF frames",
              "value": "Up to 250",
              "source": "https://learn.microsoft.com/en-us/linkedin/marketing/community-management/shares/images-api?view=li-lms-2026-09"
            },
            {
              "label": "Multi-image",
              "value": "2–20 images (organic only)",
              "source": "https://learn.microsoft.com/en-us/linkedin/marketing/community-management/shares/multiimage-post-api?view=li-lms-2026-09"
            }
          ]
        },
        {
          "type": "Video",
          "limits": [
            {
              "label": "Format",
              "value": "MP4",
              "source": "https://learn.microsoft.com/en-us/linkedin/marketing/community-management/shares/videos-api"
            },
            {
              "label": "Duration",
              "value": "3 seconds to 30 minutes",
              "source": "https://learn.microsoft.com/en-us/linkedin/marketing/community-management/shares/videos-api"
            },
            {
              "label": "File size",
              "value": "75 KB to 500 MB",
              "source": "https://learn.microsoft.com/en-us/linkedin/marketing/community-management/shares/videos-api"
            },
            {
              "label": "Upload parts",
              "value": "4 MB chunks (multipart)",
              "source": "https://learn.microsoft.com/en-us/linkedin/marketing/community-management/shares/videos-api"
            },
            {
              "label": "Captions",
              "value": "1 SRT file per video, English only",
              "source": "https://learn.microsoft.com/en-us/linkedin/marketing/community-management/shares/videos-api"
            }
          ]
        },
        {
          "type": "Document",
          "limits": [
            {
              "label": "Formats",
              "value": "PPT, PPTX, DOC, DOCX, PDF",
              "source": "https://learn.microsoft.com/en-us/linkedin/marketing/community-management/shares/documents-api?view=li-lms-2026-09"
            },
            {
              "label": "Max file size",
              "value": "100 MB",
              "source": "https://learn.microsoft.com/en-us/linkedin/marketing/community-management/shares/documents-api?view=li-lms-2026-09"
            },
            {
              "label": "Max pages",
              "value": "300",
              "source": "https://learn.microsoft.com/en-us/linkedin/marketing/community-management/shares/documents-api?view=li-lms-2026-09"
            }
          ]
        },
        {
          "type": "Poll",
          "limits": [
            {
              "label": "Question",
              "value": "140 characters",
              "source": "https://learn.microsoft.com/en-us/linkedin/marketing/community-management/shares/poll-post-api?view=li-lms-2026-09"
            },
            {
              "label": "Options",
              "value": "2–4",
              "source": "https://learn.microsoft.com/en-us/linkedin/marketing/community-management/shares/poll-post-api?view=li-lms-2026-09"
            },
            {
              "label": "Option text",
              "value": "30 characters",
              "source": "https://learn.microsoft.com/en-us/linkedin/marketing/community-management/shares/poll-post-api?view=li-lms-2026-09"
            },
            {
              "label": "Duration",
              "value": "1, 3, 7 or 14 days",
              "source": "https://learn.microsoft.com/en-us/linkedin/marketing/community-management/shares/poll-post-api?view=li-lms-2026-09"
            }
          ]
        }
      ],
      "quotas": [
        {
          "label": "API rate limits",
          "value": "Not published; per-app and per-member daily limits shown in Developer Portal, reset midnight UTC",
          "source": "https://learn.microsoft.com/en-us/linkedin/shared/api-guide/concepts/rate-limits"
        }
      ],
      "verified": "2026-10-18",
      "notes": [
        "LinkedIn doesn't publish a character limit for post text or a daily posting limit.",
        "The video spec says 75 KB to 500 MB, while one field description says 5 GB. The 500 MB spec is listed.",
        "Organic carousels aren't available through the API; polls are organic only and can't be edited.",
        "Marketing API version 202511 sunsets November 16, 2026."
      ]
    },
    {
      "platform": "pinterest",
      "name": "Pinterest",
      "turboyap_status": "planned",
      "api": {
        "name": "Pinterest API v5 (POST /v5/pins, POST /v5/media)",
        "docs_url": "https://developers.pinterest.com/docs/content/update/",
        "access": "Approved apps start on Trial access: Pins are sandboxed and visible only to their creator. Standard access requires a review with a demo video. Scopes: boards:read, boards:write, pins:read, pins:write.",
        "cost": "No API fee listed in the docs"
      },
      "post_types": [
        {
          "type": "Pin",
          "limits": [
            {
              "label": "Formats",
              "value": "PNG, JPEG",
              "source": "https://help.pinterest.com/business/article/pinterest-product-specs"
            },
            {
              "label": "Max file size",
              "value": "20 MB (desktop), 32 MB (in-app)",
              "source": "https://help.pinterest.com/business/article/pinterest-product-specs"
            },
            {
              "label": "Aspect ratio",
              "value": "2:3 recommended (1000×1500 px)",
              "source": "https://help.pinterest.com/business/article/pinterest-product-specs"
            },
            {
              "label": "Title",
              "value": "100 characters",
              "source": "https://help.pinterest.com/business/article/pinterest-product-specs"
            },
            {
              "label": "Description",
              "value": "800 characters",
              "source": "https://help.pinterest.com/business/article/pinterest-product-specs"
            }
          ]
        },
        {
          "type": "Video pin",
          "limits": [
            {
              "label": "Formats",
              "value": "MP4, MOV, M4V (H.264 or H.265)",
              "source": "https://help.pinterest.com/business/article/pinterest-product-specs"
            },
            {
              "label": "Max file size",
              "value": "2 GB",
              "source": "https://help.pinterest.com/business/article/pinterest-product-specs"
            },
            {
              "label": "Duration",
              "value": "4 seconds to 15 minutes",
              "source": "https://help.pinterest.com/business/article/pinterest-product-specs"
            },
            {
              "label": "Aspect ratio",
              "value": "Between 1:2 and 1.91:1 (1:1, 2:3, 4:5, 9:16 recommended)",
              "source": "https://help.pinterest.com/business/article/pinterest-product-specs"
            },
            {
              "label": "Cover image",
              "value": "Required (cover_image_url) when creating via API",
              "source": "https://developers.pinterest.com/docs/content/update/"
            }
          ]
        }
      ],
      "quotas": [
        {
          "label": "Pin writes (Standard)",
          "value": "100 per minute per user per app",
          "source": "https://developers.pinterest.com/docs/reference/rate-limits.md"
        },
        {
          "label": "Pin writes (Trial)",
          "value": "300 per day per app",
          "source": "https://developers.pinterest.com/docs/reference/rate-limits.md"
        },
        {
          "label": "All requests (Standard)",
          "value": "100 per second per user per app",
          "source": "https://developers.pinterest.com/docs/reference/rate-limits.md"
        },
        {
          "label": "All requests (Trial)",
          "value": "1,000 per day",
          "source": "https://developers.pinterest.com/docs/reference/rate-limits.md"
        }
      ],
      "verified": "2026-10-18",
      "notes": [
        "Pin media specs come from Pinterest's product specs page, because the API reference doesn't list them.",
        "Pinterest says all rate limits are subject to change without notice."
      ]
    },
    {
      "platform": "threads",
      "name": "Threads",
      "turboyap_status": "planned",
      "api": {
        "name": "Threads API (publishing)",
        "docs_url": "https://developers.facebook.com/documentation/threads/posts.md",
        "access": "Meta app with threads_basic and threads_content_publish permissions",
        "cost": "No API fee listed in the publishing docs"
      },
      "post_types": [
        {
          "type": "Text",
          "limits": [
            {
              "label": "Text",
              "value": "500 characters (emoji counted as UTF-8 bytes)",
              "source": "https://developers.facebook.com/documentation/threads/posts.md"
            },
            {
              "label": "Text attachment",
              "value": "Up to 10,000 characters (text-only posts, no polls)",
              "source": "https://developers.facebook.com/documentation/threads/create-posts/text-attachments.md"
            },
            {
              "label": "Links",
              "value": "5 per post max",
              "source": "https://developers.facebook.com/documentation/threads/posts.md"
            },
            {
              "label": "Topic tags",
              "value": "1 per post, 1–50 characters",
              "source": "https://developers.facebook.com/documentation/threads/posts.md"
            },
            {
              "label": "GIFs",
              "value": "GIPHY only, text-only posts",
              "source": "https://developers.facebook.com/documentation/threads/posts.md"
            }
          ]
        },
        {
          "type": "Image",
          "limits": [
            {
              "label": "Formats",
              "value": "JPEG, PNG",
              "source": "https://developers.facebook.com/documentation/threads/posts.md"
            },
            {
              "label": "Max file size",
              "value": "8 MB",
              "source": "https://developers.facebook.com/documentation/threads/posts.md"
            },
            {
              "label": "Width",
              "value": "320–1440 px",
              "source": "https://developers.facebook.com/documentation/threads/posts.md"
            },
            {
              "label": "Aspect ratio",
              "value": "Up to 10:1",
              "source": "https://developers.facebook.com/documentation/threads/posts.md"
            }
          ]
        },
        {
          "type": "Video",
          "limits": [
            {
              "label": "Container",
              "value": "MOV or MP4, moov atom at front",
              "source": "https://developers.facebook.com/documentation/threads/posts.md"
            },
            {
              "label": "Codecs",
              "value": "HEVC or H.264; AAC audio",
              "source": "https://developers.facebook.com/documentation/threads/posts.md"
            },
            {
              "label": "Duration",
              "value": "Up to 5 minutes",
              "source": "https://developers.facebook.com/documentation/threads/posts.md"
            },
            {
              "label": "Max file size",
              "value": "1 GB",
              "source": "https://developers.facebook.com/documentation/threads/posts.md"
            },
            {
              "label": "Resolution",
              "value": "Max 1920 px wide",
              "source": "https://developers.facebook.com/documentation/threads/posts.md"
            },
            {
              "label": "Frame rate",
              "value": "23–60 FPS",
              "source": "https://developers.facebook.com/documentation/threads/posts.md"
            },
            {
              "label": "Aspect ratio",
              "value": "0.01:1 to 10:1 (9:16 recommended)",
              "source": "https://developers.facebook.com/documentation/threads/posts.md"
            },
            {
              "label": "Video bitrate",
              "value": "100 Mbps max (VBR)",
              "source": "https://developers.facebook.com/documentation/threads/posts.md"
            }
          ]
        },
        {
          "type": "Carousel",
          "limits": [
            {
              "label": "Items",
              "value": "2–20 images, videos or a mix",
              "source": "https://developers.facebook.com/documentation/threads/overview.md"
            }
          ]
        }
      ],
      "quotas": [
        {
          "label": "Published posts",
          "value": "250 per 24 hours per profile (carousel counts as 1)",
          "source": "https://developers.facebook.com/documentation/threads/overview.md"
        },
        {
          "label": "Replies",
          "value": "1,000 per 24 hours per profile",
          "source": "https://developers.facebook.com/documentation/threads/overview.md"
        },
        {
          "label": "Deletions",
          "value": "100 per 24 hours per profile",
          "source": "https://developers.facebook.com/documentation/threads/overview.md"
        },
        {
          "label": "API calls",
          "value": "4,800 × impressions per 24 hours (min 10 impressions)",
          "source": "https://developers.facebook.com/documentation/threads/overview.md"
        }
      ],
      "verified": "2026-10-18",
      "notes": [
        "Since December 22, 2025, posts with more than 5 links fail at media creation.",
        "The April 14, 2026 API update added 10,000-character text attachments, ghost posts, spoilers, reply approvals and publish/delete webhooks."
      ]
    },
    {
      "platform": "x",
      "name": "X",
      "turboyap_status": "planned",
      "api": {
        "name": "X API v2 (POST /2/tweets + Media Upload)",
        "docs_url": "https://docs.x.com/x-api/posts/create-post",
        "access": "X developer app on pay-per-use credits. OAuth 2.0 user context with tweet.read, tweet.write, users.read (OAuth 1.0a user token also accepted).",
        "cost": "Pay-per-use: $0.015 per post; $0.20 per post containing a URL; $0.01 per summoned reply; post reads $0.005 per post returned. No subscription."
      },
      "post_types": [
        {
          "type": "Post",
          "limits": [
            {
              "label": "Text",
              "value": "280 weighted characters (emoji and CJK count as 2)",
              "source": "https://docs.x.com/fundamentals/counting-characters.md"
            },
            {
              "label": "URLs",
              "value": "Each counts as 23 characters (t.co)",
              "source": "https://docs.x.com/fundamentals/counting-characters.md"
            }
          ]
        },
        {
          "type": "Media",
          "limits": [
            {
              "label": "Items",
              "value": "Up to 4 photos, or 1 GIF, or 1 video",
              "source": "https://docs.x.com/x-api/media/quickstart/best-practices.md"
            },
            {
              "label": "Image formats",
              "value": "JPG, PNG, GIF, WEBP",
              "source": "https://docs.x.com/x-api/media/quickstart/best-practices.md"
            },
            {
              "label": "Image size",
              "value": "5 MB max",
              "source": "https://docs.x.com/x-api/media/quickstart/best-practices.md"
            },
            {
              "label": "Animated GIF",
              "value": "15 MB, 1280×1080, 350 frames max",
              "source": "https://docs.x.com/x-api/media/quickstart/best-practices.md"
            },
            {
              "label": "Video duration/size",
              "value": "0.5 seconds–20 minutes, 8 GB (Premium: 125 minutes, 16 GB)",
              "source": "https://docs.x.com/x-api/media/quickstart/best-practices.md"
            },
            {
              "label": "Video codecs",
              "value": "H.264 High Profile, AAC-LC, YUV 4:2:0",
              "source": "https://docs.x.com/x-api/media/quickstart/best-practices.md"
            },
            {
              "label": "Video dimensions",
              "value": "32×32 to 1280×1024",
              "source": "https://docs.x.com/x-api/media/quickstart/best-practices.md"
            },
            {
              "label": "Aspect ratio",
              "value": "1:3 to 3:1",
              "source": "https://docs.x.com/x-api/media/quickstart/best-practices.md"
            },
            {
              "label": "Frame rate",
              "value": "60 FPS or less",
              "source": "https://docs.x.com/x-api/media/quickstart/best-practices.md"
            }
          ]
        },
        {
          "type": "Thread",
          "limits": [
            {
              "label": "Method",
              "value": "Chain posts with reply.in_reply_to_tweet_id",
              "source": "https://docs.x.com/x-api/posts/create-post"
            }
          ]
        },
        {
          "type": "Poll",
          "limits": [
            {
              "label": "Options",
              "value": "2–4",
              "source": "https://docs.x.com/x-api/posts/create-post"
            },
            {
              "label": "Option text",
              "value": "1–25 characters",
              "source": "https://docs.x.com/x-api/posts/create-post"
            },
            {
              "label": "Duration",
              "value": "5–10,080 minutes (up to 7 days)",
              "source": "https://docs.x.com/x-api/posts/create-post"
            }
          ]
        }
      ],
      "quotas": [
        {
          "label": "Create post (per user)",
          "value": "100 per 15 minutes",
          "source": "https://docs.x.com/x-api/fundamentals/rate-limits"
        },
        {
          "label": "Create post (per app)",
          "value": "10,000 per 24 hours",
          "source": "https://docs.x.com/x-api/fundamentals/rate-limits"
        },
        {
          "label": "Delete post (per user)",
          "value": "50 per 15 minutes",
          "source": "https://docs.x.com/x-api/fundamentals/rate-limits"
        },
        {
          "label": "Media upload (simple)",
          "value": "500 per 15 minutes per user; 50,000 per 24 hours per app",
          "source": "https://docs.x.com/x-api/fundamentals/rate-limits"
        },
        {
          "label": "Media upload (chunked)",
          "value": "1,875 per 15 minutes per user; 180,000 per 24 hours per app",
          "source": "https://docs.x.com/x-api/fundamentals/rate-limits"
        },
        {
          "label": "Post reads",
          "value": "3 million per monthly billing cycle (pay-per-use cap)",
          "source": "https://docs.x.com/x-api/getting-started/pricing.md"
        }
      ],
      "verified": "2026-10-18",
      "notes": [
        "Since April 20, 2026, a post containing a URL costs $0.20. A standard post is $0.015.",
        "Quote posts require an Enterprise plan.",
        "Media duration and size limits depend on the posting user's Premium status, not the API plan."
      ]
    },
    {
      "platform": "youtube",
      "name": "YouTube",
      "turboyap_status": "planned",
      "api": {
        "name": "YouTube Data API v3 (videos.insert)",
        "docs_url": "https://developers.google.com/youtube/v3/docs/videos/insert?authuser=1",
        "access": "Google Cloud project with OAuth 2.0 user authorization. Scopes: youtube.upload, youtube, youtubepartner or youtube.force-ssl. Extra quota requires passing a YouTube API Services compliance audit.",
        "cost": "No fee listed; usage is governed by daily quota"
      },
      "post_types": [
        {
          "type": "Video",
          "limits": [
            {
              "label": "Max file size",
              "value": "256 GB or 12 hours, whichever is less",
              "source": "https://support.google.com/youtube/answer/71673?hl=en"
            },
            {
              "label": "Max length (unverified channel)",
              "value": "15 minutes; verified accounts can go longer",
              "source": "https://support.google.com/youtube/answer/71673?hl=en"
            },
            {
              "label": "Accepted media",
              "value": "video/* or application/octet-stream",
              "source": "https://developers.google.com/youtube/v3/docs/videos/insert?authuser=1"
            },
            {
              "label": "Title",
              "value": "100 characters (no < or >)",
              "source": "https://developers.google.com/youtube/v3/docs/videos?hl=en"
            },
            {
              "label": "Description",
              "value": "5,000 bytes (no < or >)",
              "source": "https://developers.google.com/youtube/v3/docs/videos?hl=en"
            },
            {
              "label": "Tags",
              "value": "500 characters total",
              "source": "https://developers.google.com/youtube/v3/docs/videos?hl=en"
            }
          ]
        },
        {
          "type": "Shorts",
          "limits": [
            {
              "label": "Duration",
              "value": "Up to 3 minutes",
              "source": "https://support.google.com/youtube/answer/15424877?hl=en"
            },
            {
              "label": "Aspect ratio",
              "value": "Square or vertical",
              "source": "https://support.google.com/youtube/answer/15424877?hl=en"
            },
            {
              "label": "Copyright",
              "value": "Shorts over 1 minute with an active copyright claim are blocked",
              "source": "https://support.google.com/youtube/answer/15424877?hl=en"
            }
          ]
        }
      ],
      "quotas": [
        {
          "label": "Video uploads",
          "value": "100 videos.insert calls per day per project (own quota bucket, 1 unit each)",
          "source": "https://developers.google.com/youtube/v3/determine_quota_cost"
        },
        {
          "label": "Other endpoints",
          "value": "10,000 units per day per project",
          "source": "https://developers.google.com/youtube/v3/determine_quota_cost"
        },
        {
          "label": "thumbnails.set",
          "value": "50 units per call",
          "source": "https://developers.google.com/youtube/v3/determine_quota_cost"
        },
        {
          "label": "videos.update",
          "value": "50 units per call",
          "source": "https://developers.google.com/youtube/v3/determine_quota_cost"
        },
        {
          "label": "Quota increase",
          "value": "Requires passing a compliance audit",
          "source": "https://developers.google.com/youtube/v3/guides/quota_and_compliance_audits?hl=en"
        }
      ],
      "verified": "2026-10-18",
      "notes": [
        "Since June 1, 2026, uploads (videos.insert) have their own quota: 100 per day at 1 unit each, outside the 10,000-unit daily pool. Guides that cite about 1,600 units per upload are out of date.",
        "The docs now say uploads from unverified API projects are not restricted to private viewing.",
        "Thumbnails can be up to 50 MB since September 14, 2026.",
        "There's no Shorts flag. A square or vertical video up to 3 minutes counts as a Short."
      ]
    }
  ],
  "changelog": [
    {
      "date": "2026-10-18",
      "platform": "instagram",
      "change": "Meta's content publishing page gives two daily caps: 100 API-published posts per 24 hours in the rate limit section and 50 in the carousel section. Both are listed until Meta reconciles them."
    },
    {
      "date": "2026-10-18",
      "change": "Tracker launched with 11 platforms: Instagram, Facebook, Threads, TikTok, LinkedIn, X, YouTube, Bluesky, Telegram, Discord and Pinterest, each verified against the platform's developer docs."
    }
  ]
}