{
  "schemaVersion": "2025-06-18",
  "serverInfo": {
    "name": "posterly",
    "version": "0.41.0",
    "title": "posterly",
    "description": "Schedule and publish social media posts across 18 platforms (Instagram, Facebook, TikTok, X, LinkedIn, YouTube, Pinterest, Threads, Google Business, Telegram, Bluesky, Discord, Slack, Mastodon, Dev.to, Hashnode, WordPress, Lemmy) from any MCP-compatible AI client.",
    "vendor": "posterly",
    "homepage": "https://www.poster.ly",
    "documentation": "https://www.poster.ly/mcp",
    "repository": "https://www.npmjs.com/package/posterly-mcp-server"
  },
  "transports": [
    {
      "type": "http",
      "url": "https://www.poster.ly/api/mcp",
      "wire_format": "json-rpc",
      "auth": "bearer",
      "documentation": "https://www.poster.ly/mcp"
    },
    {
      "type": "stdio",
      "install": {
        "command": "npx",
        "args": [
          "-y",
          "posterly-mcp-server@latest"
        ],
        "env": {
          "POSTERLY_API_KEY": {
            "description": "Optional for public signup tools. Required for authenticated tools after the user completes paid signup.",
            "required": false,
            "acquisition_url": "https://www.poster.ly/agents/signup"
          }
        }
      },
      "pre_auth_tools": [
        "get_agent_signup_info",
        "start_signup",
        "get_signup_session",
        "get_mcp_status"
      ],
      "documentation": "https://www.poster.ly/mcp"
    }
  ],
  "auth": {
    "type": "bearer",
    "protected_resource_metadata": "https://www.poster.ly/.well-known/oauth-protected-resource/api/mcp",
    "authorization_server_metadata": "https://www.poster.ly/.well-known/oauth-authorization-server",
    "token_acquisition_url": "https://www.poster.ly/dashboard/api",
    "requires_subscription": true,
    "subscription_url": "https://www.poster.ly/dashboard/api?upgrade=api_addon",
    "oauth": {
      "authorization_endpoint": "https://www.poster.ly/oauth/authorize",
      "token_endpoint": "https://www.poster.ly/api/oauth/token",
      "registration_endpoint": "https://www.poster.ly/api/oauth/register",
      "grant_types_supported": [
        "authorization_code",
        "refresh_token"
      ],
      "code_challenge_methods_supported": [
        "S256"
      ],
      "dynamic_client_registration": true
    }
  },
  "authentication": {
    "required": true,
    "schemes": [
      "oauth2",
      "bearer"
    ]
  },
  "tools": [
    {
      "name": "get_mcp_status",
      "description": "Report the hosted posterly MCP server version, latest npm version for local app clients, MCP endpoint health, API auth health, and update guidance.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "annotations": {
        "title": "Get MCP Status",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "whoami",
      "description": "Return the authenticated user, API key scopes, workspaces, and onboarding next step. Call this first. If onboarding.completed is false, walk About you, Connect, Brand voice, and First post IN THIS conversation. Do not send the user to /onboarding-v2.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "annotations": {
        "title": "Whoami",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "create_api_key",
      "description": "Create a new posterly API key for the authenticated user. SECRET-CREATING WRITE: only use after explicit user confirmation. The new key can only request scopes already present on the calling dashboard-created API key; OAuth and managed assistant tokens cannot mint keys.",
      "inputSchema": {
        "type": "object",
        "required": [
          "confirm"
        ],
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120,
            "description": "Human-readable key name."
          },
          "scopes": {
            "type": "array",
            "minItems": 1,
            "maxItems": 8,
            "items": {
              "type": "string",
              "enum": [
                "accounts:read",
                "accounts:write",
                "posts:read",
                "posts:write",
                "media:write",
                "analytics:read",
                "billing:read",
                "billing:write"
              ]
            },
            "description": "Scopes for the new key. Omit to copy the calling key scopes. Cannot exceed the calling key scopes. billing:read and billing:write allow managing the posterly subscription (cancel/pause/resume/downgrade)."
          },
          "workspace_id": {
            "type": "string",
            "description": "Optional workspace restriction. Workspace-scoped calling keys cannot create keys outside their workspace."
          },
          "expires_in_days": {
            "type": "integer",
            "minimum": 1,
            "maximum": 365,
            "description": "Optional expiry from now, up to 365 days. Omit for no expiry."
          },
          "confirm": {
            "type": "boolean",
            "const": true,
            "description": "Must be true after the user explicitly confirms that a new secret API key should be created."
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "Create API Key",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      }
    },
    {
      "name": "delete_api_key",
      "description": "Revoke a posterly API key owned by the authenticated user. DESTRUCTIVE: show the user the exact key ID/prefix/name if available and get explicit confirmation before calling. Cannot revoke the key currently authenticating this request, OAuth-issued keys, or managed assistant keys.",
      "inputSchema": {
        "type": "object",
        "required": [
          "key_id",
          "confirm"
        ],
        "properties": {
          "key_id": {
            "type": "string",
            "format": "uuid",
            "description": "API key ID to revoke. This is the API key resource ID, not the secret pst_live_ value."
          },
          "confirm": {
            "type": "boolean",
            "const": true,
            "description": "Must be true after the user explicitly confirms API key revocation."
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "Delete API Key",
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "list_accounts",
      "description": "List connected social media accounts. Instagram rows also show whether the account is direct-login or Meta-linked and whether native media tags/collaborators are available. Check this before using Instagram user_tags or collaborators.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "workspace_id": {
            "type": "string",
            "description": "Filter to a specific workspace; omit for all the caller can access."
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "List Accounts",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "disconnect_account",
      "description": "Disconnect a connected social account from posterly. DESTRUCTIVE and IRREVERSIBLE: this removes the account connection, emits account.disconnected webhooks, and may transfer Instagram scheduled posts to a replacement account. Always call list_accounts first, show the user the exact account/platform/workspace, and get explicit confirmation before calling.",
      "inputSchema": {
        "type": "object",
        "required": [
          "account_id",
          "confirm"
        ],
        "properties": {
          "account_id": {
            "type": "string",
            "description": "Connected social account ID from list_accounts."
          },
          "confirm": {
            "type": "boolean",
            "description": "Must be true after the user explicitly confirms the account disconnect."
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "Disconnect Account",
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "get_connect_link",
      "description": "List dashboard handoff links/readiness for connecting accounts, or get one platform connection URL. For a guided user flow with pollable status, call create_connect_session next. Credential-based platforms (telegram, bluesky, discord, wordpress, devto, hashnode, lemmy) can instead be connected headlessly with connect_account; this tool shows their credential_fields.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "platform": {
            "type": "string",
            "enum": [
              "instagram",
              "meta",
              "facebook",
              "youtube",
              "tiktok",
              "linkedin",
              "linkedin_page",
              "threads",
              "google_business",
              "pinterest",
              "twitter",
              "telegram",
              "bluesky",
              "discord",
              "slack",
              "mastodon",
              "devto",
              "hashnode",
              "wordpress",
              "lemmy",
              "reddit",
              "medium",
              "skool",
              "whop"
            ],
            "description": "Optional connection target such as instagram, meta, linkedin_page, twitter, telegram, reddit, or wordpress."
          },
          "workspace_id": {
            "type": "string",
            "description": "Filter connected account counts to a workspace."
          },
          "include_planned": {
            "type": "boolean",
            "description": "Include planned provider expansion targets such as reddit, medium, skool, whop."
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "Get Connect Link",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "connect_account",
      "description": "Connect a credential-based social account (telegram, bluesky, discord, wordpress, devto, hashnode, lemmy) directly, without a browser session. Call get_connect_link first to discover the exact credential fields the platform needs. Prefer scoped secrets: app passwords (Bluesky, WordPress), bot tokens (Telegram), webhook URLs (Discord), and API tokens (Dev.to, Hashnode) over primary passwords. Warn the user that any credential they share passes through this conversation. For OAuth platforms (Instagram, X, LinkedIn, ...) use create_connect_session instead.",
      "inputSchema": {
        "type": "object",
        "required": [
          "platform"
        ],
        "properties": {
          "platform": {
            "type": "string",
            "enum": [
              "telegram",
              "bluesky",
              "discord",
              "wordpress",
              "devto",
              "hashnode",
              "lemmy"
            ],
            "description": "Credential-based connection target: telegram, bluesky, discord, wordpress, devto, hashnode, or lemmy."
          },
          "bot_token": {
            "type": "string",
            "description": "Telegram: bot token from BotFather."
          },
          "chat_id": {
            "type": "string",
            "description": "Telegram: target channel or group chat ID."
          },
          "handle": {
            "type": "string",
            "description": "Bluesky: handle, for example posterly.bsky.social."
          },
          "app_password": {
            "type": "string",
            "description": "Bluesky: app password from account settings. WordPress: application password from wp-admin Users, Profile, Application Passwords."
          },
          "webhook_url": {
            "type": "string",
            "description": "Discord: channel webhook URL from channel settings, Integrations, Webhooks."
          },
          "site_url": {
            "type": "string",
            "description": "WordPress: site URL, e.g. https://blog.example.com."
          },
          "username": {
            "type": "string",
            "description": "WordPress: username the application password belongs to. Lemmy: username or email."
          },
          "password": {
            "type": "string",
            "description": "Lemmy: account password (TOTP-enabled accounts are not supported)."
          },
          "api_key": {
            "type": "string",
            "description": "Dev.to: API key from Settings, Extensions, DEV Community API Keys."
          },
          "pat": {
            "type": "string",
            "description": "Hashnode: personal access token from Account Settings, Developer."
          },
          "instance": {
            "type": "string",
            "description": "Lemmy: instance domain, for example lemmy.world."
          },
          "workspace_id": {
            "type": "string",
            "description": "Workspace to connect the account into. Workspace-scoped API keys ignore this."
          },
          "connect_session_id": {
            "type": "string",
            "description": "Optional connect session ID to mark connected or failed based on the outcome."
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "Connect Account",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "create_connect_session",
      "description": "Create a short-lived dashboard handoff session for connecting a social account. Open connect_session.connect_url for the user, then poll get_connect_session so you can narrate progress.",
      "inputSchema": {
        "type": "object",
        "required": [
          "platform"
        ],
        "properties": {
          "platform": {
            "type": "string",
            "enum": [
              "instagram",
              "meta",
              "facebook",
              "youtube",
              "tiktok",
              "linkedin",
              "linkedin_page",
              "threads",
              "google_business",
              "pinterest",
              "twitter",
              "telegram",
              "bluesky",
              "discord",
              "slack",
              "mastodon",
              "devto",
              "hashnode",
              "wordpress",
              "lemmy",
              "reddit",
              "medium",
              "skool",
              "whop"
            ],
            "description": "Connection target such as instagram, meta, linkedin_page, twitter, telegram, bluesky, discord, slack, mastodon, devto, hashnode, wordpress, or lemmy."
          },
          "workspace_id": {
            "type": "string",
            "description": "Workspace to connect the account into. Workspace-scoped API keys ignore this."
          },
          "auto_start": {
            "type": "boolean",
            "default": true,
            "description": "When true, the posterly dashboard starts the provider flow after the user opens the URL."
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "Create Connect Session",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "get_connect_session",
      "description": "Poll a connect session created by create_connect_session. Read status_message to tell the user what is happening; stop when status is connected, failed, cancelled, or expired.",
      "inputSchema": {
        "type": "object",
        "required": [
          "session_id"
        ],
        "properties": {
          "session_id": {
            "type": "string",
            "description": "Connect session ID returned by create_connect_session."
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "Get Connect Session",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "list_oauth_clients",
      "description": "List self-serve OAuth developer clients owned by the user. These are public PKCE clients for third-party app integrations.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "annotations": {
        "title": "List OAuth Clients",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "create_oauth_client",
      "description": "Create a public OAuth 2.1 + PKCE developer client. WRITE: confirm app name, redirect URIs, and scopes with the user before calling.",
      "inputSchema": {
        "type": "object",
        "required": [
          "client_name",
          "allowed_redirect_uris",
          "default_scopes",
          "confirm"
        ],
        "properties": {
          "client_name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120
          },
          "description": {
            "type": "string",
            "maxLength": 500
          },
          "homepage": {
            "type": "string",
            "format": "uri"
          },
          "allowed_redirect_uris": {
            "type": "array",
            "minItems": 1,
            "maxItems": 10,
            "items": {
              "type": "string",
              "format": "uri"
            }
          },
          "default_scopes": {
            "type": "array",
            "minItems": 1,
            "items": {
              "type": "string",
              "enum": [
                "accounts:read",
                "accounts:write",
                "posts:read",
                "posts:write",
                "media:write",
                "analytics:read"
              ]
            }
          },
          "is_active": {
            "type": "boolean",
            "default": true
          },
          "confirm": {
            "type": "boolean",
            "description": "Must be true after explicit user confirmation."
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "Create OAuth Client",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      }
    },
    {
      "name": "update_oauth_client",
      "description": "Update a self-serve OAuth developer client. WRITE: confirm changed redirect URIs, scopes, and active state before calling.",
      "inputSchema": {
        "type": "object",
        "required": [
          "client_id",
          "confirm"
        ],
        "properties": {
          "client_id": {
            "type": "string"
          },
          "client_name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120
          },
          "description": {
            "type": "string",
            "maxLength": 500
          },
          "homepage": {
            "type": "string",
            "format": "uri"
          },
          "allowed_redirect_uris": {
            "type": "array",
            "minItems": 1,
            "maxItems": 10,
            "items": {
              "type": "string",
              "format": "uri"
            }
          },
          "default_scopes": {
            "type": "array",
            "minItems": 1,
            "items": {
              "type": "string",
              "enum": [
                "accounts:read",
                "accounts:write",
                "posts:read",
                "posts:write",
                "media:write",
                "analytics:read"
              ]
            }
          },
          "is_active": {
            "type": "boolean"
          },
          "confirm": {
            "type": "boolean",
            "description": "Must be true after explicit user confirmation."
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "Update OAuth Client",
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "delete_oauth_client",
      "description": "Delete a self-serve OAuth developer client. DESTRUCTIVE: prevents new authorizations for that client_id; existing access tokens remain revocable as API keys.",
      "inputSchema": {
        "type": "object",
        "required": [
          "client_id",
          "confirm"
        ],
        "properties": {
          "client_id": {
            "type": "string"
          },
          "confirm": {
            "type": "boolean",
            "description": "Must be true after explicit user confirmation."
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "Delete OAuth Client",
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "list_platforms",
      "description": "List posterly platform integrations and their posting capabilities, content limits, media limits, settings schemas, helper tools, and analytics support.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "include_planned": {
            "type": "boolean",
            "description": "Include planned integration possibilities such as reddit, medium, skool, whop."
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "List Platforms",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "get_platform_schema",
      "description": "Get the platform schema for a platform or a specific connected account. Use account_id before Instagram native tags/collaborators so the account-specific connection mode and capabilities are returned.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "account_id": {
            "type": "string",
            "description": "Connected social account ID from list_accounts. Preferred because it returns account context."
          },
          "platform": {
            "type": "string",
            "enum": [
              "instagram",
              "facebook",
              "tiktok",
              "twitter",
              "linkedin",
              "youtube",
              "pinterest",
              "threads",
              "google_business",
              "telegram",
              "bluesky",
              "discord",
              "slack",
              "mastodon",
              "devto",
              "hashnode",
              "wordpress",
              "lemmy",
              "reddit",
              "medium",
              "skool",
              "whop"
            ],
            "description": "Platform ID. Aliases x, gmb, and instagram-standalone are also accepted by the API."
          },
          "include_planned": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "Get Platform Schema",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "trigger_platform_helper",
      "description": "Run a platform helper for account-specific discovery, such as pinterest.boards, tiktok.creator_info, linkedin.recent_mentions, or x.quota.",
      "inputSchema": {
        "type": "object",
        "required": [
          "helper"
        ],
        "properties": {
          "helper": {
            "type": "string",
            "enum": [
              "linkedin.recent_mentions",
              "pinterest.boards",
              "tiktok.creator_info",
              "x.quota"
            ]
          },
          "account_id": {
            "type": "string",
            "description": "Connected social account ID when the helper needs account context."
          },
          "platform": {
            "type": "string",
            "description": "Platform hint when no account_id is supplied."
          },
          "params": {
            "type": "object",
            "additionalProperties": true
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "Trigger Platform Helper",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "list_brands",
      "description": "List brands/clients the caller can access. Returns each brand ID, name, workspace ID, source, and how many social accounts are assigned to it.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "workspace_id": {
            "type": "string",
            "description": "Filter to a specific workspace; omit to list brands across every accessible workspace."
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "List Brands",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "get_brand",
      "description": "Get one brand/client by ID. Returns its workspace, source, linked legacy brand group if present, and the number of social accounts assigned to it.",
      "inputSchema": {
        "type": "object",
        "required": [
          "brand_id"
        ],
        "properties": {
          "brand_id": {
            "type": "string",
            "description": "The brand ID to look up (from list_brands)."
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "Get Brand",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "list_brand_accounts",
      "description": "List the connected social accounts assigned to a brand/client. Use this when the user refers to a brand rather than a raw account handle.",
      "inputSchema": {
        "type": "object",
        "required": [
          "brand_id"
        ],
        "properties": {
          "brand_id": {
            "type": "string",
            "description": "The brand ID to inspect (from list_brands)."
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "List Brand Accounts",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "get_brand_profile",
      "description": "Get the extended brand profile for a brand/client. Returns voice/tone guidance, audience, keywords, dos and don’ts, visual notes, and other saved brand context.",
      "inputSchema": {
        "type": "object",
        "required": [
          "brand_id"
        ],
        "properties": {
          "brand_id": {
            "type": "string",
            "description": "The brand ID to inspect (from list_brands)."
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "Get Brand Profile",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "get_learned_voice",
      "description": "Get the voice posterly has learned from a connected account’s real published captions (the \"learned captions\" shown on the dashboard). Returns a narrative summary, voice traits, style guidelines, and observed posting habits. Keyed by social account ID (from list_accounts or list_brand_accounts). Returns nothing until the account has enough published posts. Read-only; never overwrites the saved brand profile.",
      "inputSchema": {
        "type": "object",
        "required": [
          "account_id"
        ],
        "properties": {
          "account_id": {
            "type": "string",
            "description": "The social account ID to inspect (from list_accounts or list_brand_accounts)."
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "Get Learned Voice",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "get_performance_profile",
      "description": "Get the performance profile posterly has derived for a connected account from the last 90 days of per-post analytics. Returns coaching stats (format, timing, caption-length patterns), an engagement-rate trend, and a narrative summary. Keyed by social account ID (from list_accounts). Returns performance_profile: null with a reason (insufficient_data, platform_not_measurable) when there is no profile yet. Read-only; requires a Pro plan or higher.",
      "inputSchema": {
        "type": "object",
        "required": [
          "account_id"
        ],
        "properties": {
          "account_id": {
            "type": "string",
            "description": "The social account ID to inspect (from list_accounts or list_brand_accounts)."
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "Get Performance Profile",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "get_post_insights",
      "description": "List per-post feedback insights from the posterly performance feedback loop: for recently published posts, the performance tier (great/good/mixed/poor), a diagnosis, a suggested next action, metrics, and the baseline it was compared against. Filter by account_id, post_id, and checkpoint (1h, 6h, 24h, 72h, 7d). Read-only; requires a Pro plan or higher.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "account_id": {
            "type": "string",
            "description": "Filter to one social account ID (from list_accounts)."
          },
          "post_id": {
            "type": "integer",
            "minimum": 1,
            "description": "Filter to one post ID."
          },
          "checkpoint": {
            "type": "string",
            "enum": [
              "1h",
              "6h",
              "24h",
              "72h",
              "7d"
            ],
            "description": "Filter to one checkpoint after publish."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "default": 20
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "Get Post Insights",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "list_post_suggestions",
      "description": "List proactive post suggestions: evidence-based weekly drafts posterly writes in each account's learned voice, each with a rationale tying it back to what has performed well. Filter by account_id and status (pending, scheduled, dismissed; default pending). Read-only; requires a Pro plan or higher. Use dismiss_suggestion to hide one.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "account_id": {
            "type": "string",
            "description": "Filter to one social account ID (from list_accounts)."
          },
          "status": {
            "type": "string",
            "enum": [
              "pending",
              "scheduled",
              "dismissed"
            ],
            "default": "pending"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "default": 20
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "List Post Suggestions",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "dismiss_suggestion",
      "description": "Dismiss a proactive post suggestion so it stops appearing. WRITE: confirm the exact suggestion with the user first. Never dismisses a suggestion that was already turned into a scheduled post.",
      "inputSchema": {
        "type": "object",
        "required": [
          "suggestion_id"
        ],
        "properties": {
          "suggestion_id": {
            "type": "string",
            "format": "uuid",
            "description": "Suggestion ID from list_post_suggestions."
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "Dismiss Suggestion",
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "list_posts",
      "description": "List upcoming or recent posts. Filter by status (scheduled, published, failed, draft), platform, account_id, or workspace_id.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "scheduled",
              "published",
              "failed",
              "draft"
            ]
          },
          "platform": {
            "type": "string"
          },
          "account_id": {
            "type": "string"
          },
          "workspace_id": {
            "type": "string"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "default": 20
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "List Posts",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "get_post",
      "description": "Get details of a specific post by ID. Returns caption, status, scheduled time, media, and platform info.",
      "inputSchema": {
        "type": "object",
        "required": [
          "post_id"
        ],
        "properties": {
          "post_id": {
            "type": "integer",
            "description": "The post ID to look up"
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "Get Post",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "get_post_missing",
      "description": "Inspect whether a post is missing required content, media, account, platform settings, or metadata before it can publish. Use this to repair failed or imported posts.",
      "inputSchema": {
        "type": "object",
        "required": [
          "post_id"
        ],
        "properties": {
          "post_id": {
            "type": "integer",
            "description": "The post ID to inspect."
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "Get Post Missing",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "ask_support",
      "description": "Ask posterly Support AI an authenticated question using posterly docs plus read-only account/post diagnostics for the caller workspace. Requires API auth and accounts:read + posts:read scopes. Human tickets are never opened on the first answer; ticket creation requires a follow-up in a continued conversation with an assistant answer plus request_human=true and confirm_escalation=true after explicit user confirmation.",
      "inputSchema": {
        "type": "object",
        "required": [
          "question"
        ],
        "properties": {
          "question": {
            "type": "string",
            "minLength": 1,
            "maxLength": 4000
          },
          "workspace_id": {
            "type": "string",
            "description": "Workspace to inspect. Omit to use the API-key scoped workspace or personal workspace."
          },
          "conversation_id": {
            "type": "string",
            "description": "Continue a previous support conversation."
          },
          "page_url": {
            "type": "string",
            "maxLength": 2000,
            "description": "Optional posterly page URL for context."
          },
          "post_id": {
            "type": "integer",
            "minimum": 1,
            "description": "Optional post ID to inspect directly."
          },
          "referenced_post_ids": {
            "type": "array",
            "maxItems": 5,
            "items": {
              "type": "integer",
              "minimum": 1
            },
            "description": "Optional post IDs to include in read-only diagnostics."
          },
          "request_human": {
            "type": "boolean",
            "default": false,
            "description": "Ask for human review. Does not create a ticket unless this is a follow-up in a conversation that already has an assistant answer and confirm_escalation is also true."
          },
          "confirm_escalation": {
            "type": "boolean",
            "default": false,
            "description": "Must be true after explicit user confirmation that the previous assistant answer did not solve the issue."
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "Ask Support",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "find_available_slot",
      "description": "Find available time slots for posting. Respects a 1-hour gap between posts and preferred hours. Always pass timezone explicitly (default is America/New_York).",
      "inputSchema": {
        "type": "object",
        "properties": {
          "account_ids": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "timezone": {
            "type": "string",
            "description": "IANA timezone, e.g. Europe/London"
          },
          "workspace_id": {
            "type": "string"
          },
          "count": {
            "type": "integer",
            "minimum": 1,
            "maximum": 10,
            "default": 5
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "Find Available Slot",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "submit_agent_feedback",
      "description": "Submit bounded private operational telemetry after a concrete posterly workflow outcome. This is non-destructive to product content but writes a private feedback event. Never include API keys, prompts, captions, media URLs, personal data, or fabricated outcomes. Requires an authenticated bearer API key and paid API add-on.",
      "inputSchema": {
        "type": "object",
        "required": [
          "source",
          "tool",
          "outcome"
        ],
        "properties": {
          "source": {
            "type": "string",
            "enum": [
              "mcp",
              "cli",
              "rest",
              "skill"
            ]
          },
          "tool": {
            "type": "string",
            "minLength": 1,
            "maxLength": 64,
            "pattern": "^[a-z0-9][a-z0-9_.:-]{0,63}$"
          },
          "outcome": {
            "type": "string",
            "enum": [
              "success",
              "error",
              "abandoned"
            ]
          },
          "error_code": {
            "type": "string",
            "maxLength": 64,
            "pattern": "^[a-z0-9][a-z0-9_.:-]{0,63}$"
          },
          "client": {
            "type": "string",
            "minLength": 1,
            "maxLength": 80
          },
          "comment": {
            "type": "string",
            "minLength": 1,
            "maxLength": 1000
          },
          "context": {
            "type": "object",
            "properties": {
              "request_id": {
                "type": "string",
                "minLength": 8,
                "maxLength": 80,
                "pattern": "^[a-zA-Z0-9_.:-]{8,80}$"
              },
              "http_status": {
                "type": "integer",
                "minimum": 100,
                "maximum": 599
              },
              "latency_ms": {
                "type": "integer",
                "minimum": 0,
                "maximum": 300000
              },
              "attempt": {
                "type": "integer",
                "minimum": 1,
                "maximum": 20
              }
            },
            "additionalProperties": false
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "Submit Agent Feedback",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      }
    },
    {
      "name": "submit_product_feedback",
      "description": "File a product bug, idea, or general feedback on the public posterly feedback board (same board users see in the dashboard). Only call this when the human explicitly asks to report a bug, suggest a feature, or send feedback to posterly. Require confirm=true after they approve the title and category. Never use this for tool failures or retries - use submit_agent_feedback for private operational telemetry. Never include API keys, secrets, captions, media URLs, or personal data about third parties. Requires an authenticated bearer API key and paid API add-on.",
      "inputSchema": {
        "type": "object",
        "required": [
          "category",
          "title",
          "confirm"
        ],
        "properties": {
          "category": {
            "type": "string",
            "enum": [
              "bug",
              "idea",
              "feedback"
            ]
          },
          "title": {
            "type": "string",
            "minLength": 3,
            "maxLength": 120
          },
          "description": {
            "type": "string",
            "minLength": 1,
            "maxLength": 4000
          },
          "client": {
            "type": "string",
            "minLength": 1,
            "maxLength": 80
          },
          "confirm": {
            "type": "boolean",
            "const": true
          },
          "source": {
            "type": "string",
            "enum": [
              "mcp",
              "cli",
              "rest",
              "skill"
            ]
          },
          "context": {
            "type": "object",
            "properties": {
              "request_id": {
                "type": "string",
                "minLength": 8,
                "maxLength": 80,
                "pattern": "^[a-zA-Z0-9_.:-]{8,80}$"
              },
              "related_tool": {
                "type": "string",
                "minLength": 1,
                "maxLength": 64,
                "pattern": "^[a-z0-9][a-z0-9_.:-]{0,63}$"
              }
            },
            "additionalProperties": false
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "Submit Product Feedback",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      }
    },
    {
      "name": "validate_post",
      "description": "Validate and normalize one post without creating it. This is non-destructive: it does not create records, copy remote media, consume post-item/storage quota, reserve X quota, emit webhooks, or enqueue publication. Third-party media may return remote_media_not_materialized because live create performs storage copy and final byte validation. Use this before showing the final preview and asking for confirmation to call create_post.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "account_id": {
            "type": "string",
            "description": "Social account ID from list_accounts."
          },
          "username": {
            "type": "string",
            "description": "Account username; requires platform."
          },
          "platform": {
            "type": "string",
            "enum": [
              "instagram",
              "facebook",
              "tiktok",
              "twitter",
              "linkedin",
              "youtube",
              "pinterest",
              "threads",
              "google_business",
              "telegram",
              "bluesky",
              "discord",
              "slack",
              "mastodon",
              "devto",
              "hashnode",
              "wordpress",
              "lemmy"
            ],
            "description": "Platform name when using username. Supported: instagram, facebook, tiktok, twitter, linkedin, youtube, pinterest, threads, google_business, telegram, bluesky, discord, slack, mastodon, devto, hashnode, wordpress, lemmy. Aliases x, gmb, and instagram-standalone are also accepted by the API."
          },
          "caption": {
            "type": "string",
            "description": "Post caption/text. On Instagram, @username creates a caption mention only; it is not a native media tag or collaborator invitation. Ignored when thread_posts is provided."
          },
          "scheduled_at": {
            "type": "string",
            "description": "ISO 8601 UTC datetime. Omit to publish immediately."
          },
          "media_url": {
            "type": "string",
            "format": "uri",
            "description": "Media URL. Posterly storage URLs are used as-is; third-party HTTP(S) URLs are copied into Posterly storage before the post is saved. Short-lived signed URLs must still be live when this tool runs."
          },
          "media_urls": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uri"
            },
            "description": "Media URLs. Posterly storage URLs are used as-is; third-party HTTP(S) URLs are copied into Posterly storage before the post is saved."
          },
          "post_type": {
            "type": "string",
            "enum": [
              "text",
              "image",
              "document",
              "video",
              "reel",
              "carousel",
              "story",
              "story_series",
              "x_thread",
              "threads_thread",
              "photo",
              "cover_photo",
              "post",
              "feed",
              "feed-post",
              "cover-photo",
              "photos",
              "stories",
              "reels"
            ],
            "description": "Optional post type. Omit for auto-detection from media. Supported semantic values include text, image, video, carousel, reel, story, story_series, document, x_thread, threads_thread, photo, and cover_photo."
          },
          "thread_posts": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "For X or Threads: 2+ entries, one per post in the reply chain."
          },
          "platform_settings": {
            "type": "object",
            "description": "Platform-specific composer controls. Call list_platforms or get_platform_schema for the selected account before sending settings.",
            "oneOf": [
              {
                "title": "Instagram settings",
                "type": "object",
                "properties": {
                  "__type": {
                    "description": "Instagram account type hint.",
                    "enum": [
                      "instagram",
                      "instagram-standalone"
                    ],
                    "type": "string"
                  },
                  "post_type": {
                    "description": "Instagram publishing format.",
                    "enum": [
                      "post",
                      "feed",
                      "story",
                      "reel",
                      "carousel"
                    ],
                    "type": "string"
                  },
                  "is_trial_reel": {
                    "description": "Request an Instagram Trial Reel when the account supports it.",
                    "type": "boolean"
                  },
                  "trial_reel": {
                    "description": "Request an Instagram Trial Reel when the account supports it. Alias for is_trial_reel.",
                    "type": "boolean"
                  },
                  "graduation_strategy": {
                    "description": "Trial Reel graduation strategy.",
                    "enum": [
                      "MANUAL",
                      "SS_PERFORMANCE"
                    ],
                    "type": "string"
                  },
                  "collaborators": {
                    "description": "Native co-author invitations. Meta-linked Instagram accounts only; feed images, Reels, and carousels; maximum 3; not Stories.",
                    "type": "array",
                    "items": {}
                  },
                  "user_tags": {
                    "description": "Native clickable media tags, not caption @mentions. Supported by eligible direct Instagram and Meta-linked connections; feed images, Reels/video, and Stories. Tags apply to each carousel child and the first Story in a Story Series.",
                    "type": "array",
                    "items": {}
                  },
                  "first_comment": {
                    "description": "First comment to publish after the post.",
                    "type": "string"
                  },
                  "reel_cover_url": {
                    "description": "Custom Reel cover image URL.",
                    "type": "string"
                  },
                  "cover_url": {
                    "description": "Custom Reel cover image URL. Alias for reel_cover_url.",
                    "type": "string"
                  },
                  "reel_thumb_offset": {
                    "description": "Video timestamp, in milliseconds, for a generated Reel thumbnail.",
                    "type": "number"
                  },
                  "thumb_offset": {
                    "description": "Video timestamp, in milliseconds, for a generated Reel thumbnail. Alias for reel_thumb_offset.",
                    "type": "number"
                  },
                  "is_ai_generated": {
                    "description": "Label the parent media container as AI-generated (is_ai_generated). For carousels, set this on the parent only, never on child slides.",
                    "type": "boolean"
                  },
                  "instagram_is_ai_generated": {
                    "description": "Label the parent media container as AI-generated (is_ai_generated). For carousels, set this on the parent only, never on child slides. Alias for is_ai_generated.",
                    "type": "boolean"
                  },
                  "ai_generated": {
                    "description": "Label the parent media container as AI-generated (is_ai_generated). For carousels, set this on the parent only, never on child slides. Alias for is_ai_generated.",
                    "type": "boolean"
                  },
                  "audio_id": {
                    "description": "Licensed Instagram audio ID for Reels (audio_configuration.audio_id). Meta-linked Facebook Login accounts only; hidden for Instagram Login.",
                    "type": "string"
                  },
                  "instagram_audio_id": {
                    "description": "Licensed Instagram audio ID for Reels (audio_configuration.audio_id). Meta-linked Facebook Login accounts only; hidden for Instagram Login. Alias for audio_id.",
                    "type": "string"
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "__type": "instagram",
                  "post_type": "reel",
                  "first_comment": "Full details in the caption.",
                  "is_ai_generated": true
                }
              },
              {
                "title": "Facebook settings",
                "type": "object",
                "properties": {
                  "post_type": {
                    "description": "Facebook publishing format. Reel uses the Graph Reels API and must be 90 seconds or shorter; use video for longer clips. A 90.0 second Reel is allowed.",
                    "enum": [
                      "post",
                      "feed",
                      "story",
                      "reel",
                      "cover_photo"
                    ],
                    "type": "string"
                  },
                  "text_format_preset_id": {
                    "description": "Styled text post background preset.",
                    "type": "string"
                  },
                  "background_preset_id": {
                    "description": "Styled text post background preset. Alias for text_format_preset_id.",
                    "type": "string"
                  },
                  "reel_cover_url": {
                    "description": "Custom Reel cover image URL.",
                    "type": "string"
                  },
                  "cover_url": {
                    "description": "Custom Reel cover image URL. Alias for reel_cover_url.",
                    "type": "string"
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "post_type": "reel",
                  "reel_cover_url": "https://example.com/cover.jpg"
                }
              },
              {
                "title": "TikTok settings",
                "type": "object",
                "properties": {
                  "privacy_level": {
                    "description": "TikTok direct-post privacy level from the creator info helper.",
                    "type": "string"
                  },
                  "allow_comment": {
                    "description": "Allow comments when direct posting.",
                    "type": "boolean"
                  },
                  "allow_duet": {
                    "description": "Allow duets when direct posting.",
                    "type": "boolean"
                  },
                  "allow_stitch": {
                    "description": "Allow stitches when direct posting.",
                    "type": "boolean"
                  },
                  "title": {
                    "description": "TikTok title/caption field.",
                    "type": "string"
                  },
                  "media_type": {
                    "description": "Set to PHOTO for TikTok photo posts or multi-photo slideshows.",
                    "enum": [
                      "PHOTO"
                    ],
                    "type": "string"
                  },
                  "photo_cover_index": {
                    "description": "Zero-based cover image index for TikTok photo posts.",
                    "type": "number"
                  },
                  "video_cover_timestamp_ms": {
                    "description": "Millisecond timestamp of the video frame to use as the cover (direct post only).",
                    "type": "number"
                  },
                  "cover_timestamp_ms": {
                    "description": "Millisecond timestamp of the video frame to use as the cover (direct post only). Alias for video_cover_timestamp_ms.",
                    "type": "number"
                  },
                  "auto_add_music": {
                    "description": "Ask TikTok to add recommended music to photo posts when direct posting.",
                    "type": "boolean"
                  },
                  "is_commercial_content": {
                    "description": "TikTok commercial content disclosure.",
                    "type": "boolean"
                  },
                  "is_your_brand": {
                    "description": "TikTok branded content: your own brand.",
                    "type": "boolean"
                  },
                  "is_branded_content": {
                    "description": "TikTok branded content: third-party brand.",
                    "type": "boolean"
                  },
                  "ai_generated": {
                    "description": "Label the post as AI-generated (TikTok is_aigc).",
                    "type": "boolean"
                  },
                  "ai_disclosure": {
                    "description": "Label the post as AI-generated (TikTok is_aigc). Alias for ai_generated.",
                    "type": "boolean"
                  }
                },
                "additionalProperties": true,
                "example": {
                  "privacy_level": "PUBLIC_TO_EVERYONE",
                  "media_type": "PHOTO",
                  "photo_cover_index": 0,
                  "auto_add_music": true,
                  "allow_comment": true,
                  "allow_duet": false,
                  "allow_stitch": false,
                  "video_cover_timestamp_ms": 1500
                }
              },
              {
                "title": "X settings",
                "type": "object",
                "properties": {
                  "reply_settings": {
                    "description": "Who can reply to the post.",
                    "enum": [
                      "everyone",
                      "following",
                      "mentionedUsers",
                      "subscribers",
                      "verified"
                    ],
                    "type": "string"
                  },
                  "x_reply_settings": {
                    "description": "Who can reply to the post. Alias for reply_settings.",
                    "enum": [
                      "everyone",
                      "following",
                      "mentionedUsers",
                      "subscribers",
                      "verified"
                    ],
                    "type": "string"
                  },
                  "poll": {
                    "description": "X poll settings: options and duration_minutes.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "x_poll": {
                    "description": "X poll settings: options and duration_minutes. Alias for poll.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "ai_generated": {
                    "description": "Label the post as AI-generated (X made_with_ai).",
                    "type": "boolean"
                  },
                  "ai_disclosure": {
                    "description": "Label the post as AI-generated (X made_with_ai). Alias for ai_generated.",
                    "type": "boolean"
                  },
                  "made_with_ai": {
                    "description": "Label the post as AI-generated (X made_with_ai). Alias for ai_generated.",
                    "type": "boolean"
                  },
                  "paid_partnership": {
                    "description": "Mark the post as a paid partnership (POST /2/tweets paid_partnership). Existing tweet.write.",
                    "type": "boolean"
                  },
                  "x_paid_partnership": {
                    "description": "Mark the post as a paid partnership (POST /2/tweets paid_partnership). Existing tweet.write. Alias for paid_partnership.",
                    "type": "boolean"
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "reply_settings": "following",
                  "poll": {
                    "options": [
                      "Yes",
                      "No"
                    ],
                    "duration_minutes": 1440
                  },
                  "paid_partnership": true
                }
              },
              {
                "title": "LinkedIn settings",
                "type": "object",
                "properties": {
                  "document_title": {
                    "description": "Title for a LinkedIn PDF/document post.",
                    "type": "string"
                  },
                  "linkedin_document_title": {
                    "description": "Title for a LinkedIn PDF/document post. Alias for document_title.",
                    "type": "string"
                  },
                  "document_filename": {
                    "description": "Filename for a LinkedIn document post.",
                    "type": "string"
                  },
                  "mentions": {
                    "description": "LinkedIn organization mention objects.",
                    "type": "array",
                    "items": {}
                  },
                  "linkedin_mentions": {
                    "description": "LinkedIn organization mention objects. Alias for mentions.",
                    "type": "array",
                    "items": {}
                  },
                  "poll": {
                    "description": "LinkedIn poll: { question, options (2-4), duration (ONE_DAY|THREE_DAYS|SEVEN_DAYS|FOURTEEN_DAYS) }. Mutually exclusive with media.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "linkedin_poll": {
                    "description": "LinkedIn poll: { question, options (2-4), duration (ONE_DAY|THREE_DAYS|SEVEN_DAYS|FOURTEEN_DAYS) }. Mutually exclusive with media. Alias for poll.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "thumbnail_url": {
                    "description": "Custom video thumbnail URL.",
                    "type": "string"
                  },
                  "content_call_to_action_label": {
                    "description": "LinkedIn contentCallToActionLabel, including BUY_NOW and SHOP_NOW (version 202504). Pair with content_landing_page.",
                    "enum": [
                      "APPLY",
                      "DOWNLOAD",
                      "VIEW_QUOTE",
                      "LEARN_MORE",
                      "SIGN_UP",
                      "SUBSCRIBE",
                      "REGISTER",
                      "JOIN",
                      "ATTEND",
                      "REQUEST_DEMO",
                      "SEE_MORE",
                      "BUY_NOW",
                      "SHOP_NOW"
                    ],
                    "type": "string"
                  },
                  "cta_label": {
                    "description": "LinkedIn contentCallToActionLabel, including BUY_NOW and SHOP_NOW (version 202504). Pair with content_landing_page. Alias for content_call_to_action_label.",
                    "enum": [
                      "APPLY",
                      "DOWNLOAD",
                      "VIEW_QUOTE",
                      "LEARN_MORE",
                      "SIGN_UP",
                      "SUBSCRIBE",
                      "REGISTER",
                      "JOIN",
                      "ATTEND",
                      "REQUEST_DEMO",
                      "SEE_MORE",
                      "BUY_NOW",
                      "SHOP_NOW"
                    ],
                    "type": "string"
                  },
                  "linkedin_cta_label": {
                    "description": "LinkedIn contentCallToActionLabel, including BUY_NOW and SHOP_NOW (version 202504). Pair with content_landing_page. Alias for content_call_to_action_label.",
                    "enum": [
                      "APPLY",
                      "DOWNLOAD",
                      "VIEW_QUOTE",
                      "LEARN_MORE",
                      "SIGN_UP",
                      "SUBSCRIBE",
                      "REGISTER",
                      "JOIN",
                      "ATTEND",
                      "REQUEST_DEMO",
                      "SEE_MORE",
                      "BUY_NOW",
                      "SHOP_NOW"
                    ],
                    "type": "string"
                  },
                  "content_landing_page": {
                    "description": "Landing page URL sent as contentLandingPage with the LinkedIn call to action.",
                    "type": "string"
                  },
                  "cta_url": {
                    "description": "Landing page URL sent as contentLandingPage with the LinkedIn call to action. Alias for content_landing_page.",
                    "type": "string"
                  },
                  "linkedin_cta_url": {
                    "description": "Landing page URL sent as contentLandingPage with the LinkedIn call to action. Alias for content_landing_page.",
                    "type": "string"
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "document_title": "Launch plan",
                  "mentions": [
                    {
                      "display_name": "posterly",
                      "urn": "urn:li:organization:123"
                    }
                  ],
                  "poll": {
                    "question": "Which feature next?",
                    "options": [
                      "Polls",
                      "Analytics"
                    ],
                    "duration": "THREE_DAYS"
                  },
                  "content_call_to_action_label": "BUY_NOW",
                  "content_landing_page": "https://www.poster.ly"
                }
              },
              {
                "title": "YouTube settings",
                "type": "object",
                "properties": {
                  "title": {
                    "description": "YouTube video title.",
                    "type": "string"
                  },
                  "youtube_title": {
                    "description": "YouTube video title. Alias for title.",
                    "type": "string"
                  },
                  "thumbnail_url": {
                    "description": "Custom YouTube thumbnail URL.",
                    "type": "string"
                  },
                  "privacy_status": {
                    "description": "YouTube video visibility.",
                    "enum": [
                      "public",
                      "unlisted",
                      "private"
                    ],
                    "type": "string"
                  },
                  "privacy": {
                    "description": "YouTube video visibility. Alias for privacy_status.",
                    "enum": [
                      "public",
                      "unlisted",
                      "private"
                    ],
                    "type": "string"
                  },
                  "made_for_kids": {
                    "description": "YouTube made-for-kids declaration.",
                    "type": "boolean"
                  },
                  "tags": {
                    "description": "YouTube tags.",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "category_id": {
                    "description": "YouTube category ID.",
                    "type": "string"
                  },
                  "notify_subscribers": {
                    "description": "Notify subscribers when the video publishes (default true).",
                    "type": "boolean"
                  },
                  "add_shorts_hashtag": {
                    "description": "Append #Shorts to the description for Shorts-feed eligibility (vertical clips).",
                    "type": "boolean"
                  },
                  "ai_generated": {
                    "description": "Label the video as containing AI/synthetic media (containsSyntheticMedia).",
                    "type": "boolean"
                  },
                  "ai_disclosure": {
                    "description": "Label the video as containing AI/synthetic media (containsSyntheticMedia). Alias for ai_generated.",
                    "type": "boolean"
                  },
                  "brand_partner": {
                    "description": "Optional YouTube brandPartner channel ID (UC…) or handle (@…). Added to videos.insert part=brandPartner when set.",
                    "type": "string"
                  },
                  "brandPartner": {
                    "description": "Optional YouTube brandPartner channel ID (UC…) or handle (@…). Added to videos.insert part=brandPartner when set. Alias for brand_partner.",
                    "type": "string"
                  }
                },
                "required": [
                  "title"
                ],
                "additionalProperties": true,
                "example": {
                  "title": "Launch walkthrough",
                  "privacy_status": "unlisted",
                  "notify_subscribers": false,
                  "add_shorts_hashtag": true,
                  "brand_partner": "@brand"
                }
              },
              {
                "title": "Pinterest settings",
                "type": "object",
                "properties": {
                  "board_id": {
                    "description": "Pinterest board ID from the pinterest.boards helper.",
                    "type": "string"
                  },
                  "pinterest_board_id": {
                    "description": "Pinterest board ID from the pinterest.boards helper. Alias for board_id.",
                    "type": "string"
                  },
                  "title": {
                    "description": "Pinterest Pin title.",
                    "type": "string"
                  },
                  "link": {
                    "description": "Destination URL for the Pin.",
                    "type": "string"
                  },
                  "destination_url": {
                    "description": "Destination URL for the Pin. Alias for link.",
                    "type": "string"
                  },
                  "cover_image_url": {
                    "description": "Required for video Pins: a stored, probe-verified JPEG or PNG cover URL (20 MiB maximum).",
                    "type": "string"
                  },
                  "video_cover_url": {
                    "description": "Required for video Pins: a stored, probe-verified JPEG or PNG cover URL (20 MiB maximum). Alias for cover_image_url.",
                    "type": "string"
                  },
                  "pinterest_cover_image_url": {
                    "description": "Required for video Pins: a stored, probe-verified JPEG or PNG cover URL (20 MiB maximum). Alias for cover_image_url.",
                    "type": "string"
                  },
                  "ai_generated": {
                    "description": "Label the Pin as AI-modified (ai_disclosures).",
                    "type": "boolean"
                  },
                  "ai_disclosure": {
                    "description": "Label the Pin as AI-modified (ai_disclosures). Alias for ai_generated.",
                    "type": "boolean"
                  },
                  "product_tags": {
                    "description": "Optional product tags on POST /v5/pins (product_id, optional x/y). Existing pins:write. Pin note is not written.",
                    "type": "array",
                    "items": {}
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "required": [
                  "board_id"
                ],
                "additionalProperties": true,
                "example": {
                  "board_id": "123456789",
                  "title": "Launch ideas",
                  "link": "https://www.poster.ly",
                  "cover_image_url": "https://assets.poster.ly/users/123/pinterest-video-covers/cover.jpg",
                  "product_tags": [
                    {
                      "product_id": "123"
                    }
                  ]
                }
              },
              {
                "title": "Threads settings",
                "type": "object",
                "properties": {
                  "reply_control": {
                    "description": "Threads reply control setting.",
                    "enum": [
                      "everyone",
                      "accounts_you_follow",
                      "mentioned_only",
                      "followers_only",
                      "parent_post_author_only"
                    ],
                    "type": "string"
                  },
                  "threads_reply_control": {
                    "description": "Threads reply control setting. Alias for reply_control.",
                    "enum": [
                      "everyone",
                      "accounts_you_follow",
                      "mentioned_only",
                      "followers_only",
                      "parent_post_author_only"
                    ],
                    "type": "string"
                  },
                  "poll": {
                    "description": "Threads poll: { options (2-4) }. Text-only, fixed 24h duration.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "threads_poll": {
                    "description": "Threads poll: { options (2-4) }. Text-only, fixed 24h duration. Alias for poll.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "topic_tag": {
                    "description": "A single Threads topic tag (1-50 chars, no periods/ampersands).",
                    "type": "string"
                  },
                  "threads_topic_tag": {
                    "description": "A single Threads topic tag (1-50 chars, no periods/ampersands). Alias for topic_tag.",
                    "type": "string"
                  },
                  "text_attachment": {
                    "description": "Long-form Threads text attachment.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "threads_text_attachment": {
                    "description": "Long-form Threads text attachment. Alias for text_attachment.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "share_to_instagram": {
                    "description": "Also share the published post to the Instagram account linked to the Threads profile as a Story (dark card). Requires Instagram sharing enabled for the Threads profile in the Threads app.",
                    "type": "boolean"
                  },
                  "threads_share_to_instagram": {
                    "description": "Also share the published post to the Instagram account linked to the Threads profile as a Story (dark card). Requires Instagram sharing enabled for the Threads profile in the Threads app. Alias for share_to_instagram.",
                    "type": "boolean"
                  },
                  "is_ghost_post": {
                    "description": "Publish as a Threads ghost post. Text-only.",
                    "type": "boolean"
                  },
                  "threads_is_ghost_post": {
                    "description": "Publish as a Threads ghost post. Text-only. Alias for is_ghost_post.",
                    "type": "boolean"
                  },
                  "is_spoiler": {
                    "description": "Mark the Threads post as a spoiler (full-caption text entity and/or is_spoiler_media).",
                    "type": "boolean"
                  },
                  "threads_is_spoiler": {
                    "description": "Mark the Threads post as a spoiler (full-caption text entity and/or is_spoiler_media). Alias for is_spoiler.",
                    "type": "boolean"
                  },
                  "is_spoiler_media": {
                    "description": "Set is_spoiler_media on the Threads container when media is attached.",
                    "type": "boolean"
                  },
                  "threads_is_spoiler_media": {
                    "description": "Set is_spoiler_media on the Threads container when media is attached. Alias for is_spoiler_media.",
                    "type": "boolean"
                  },
                  "text_entities": {
                    "description": "Threads text_entities, for example spoiler ranges with entity_type, offset, and length.",
                    "type": "array",
                    "items": {}
                  },
                  "threads_text_entities": {
                    "description": "Threads text_entities, for example spoiler ranges with entity_type, offset, and length. Alias for text_entities.",
                    "type": "array",
                    "items": {}
                  },
                  "enable_reply_approvals": {
                    "description": "Require approval before replies appear (enable_reply_approvals).",
                    "type": "boolean"
                  },
                  "threads_enable_reply_approvals": {
                    "description": "Require approval before replies appear (enable_reply_approvals). Alias for enable_reply_approvals.",
                    "type": "boolean"
                  },
                  "gif_attachment": {
                    "description": "GIPHY gif_attachment: { gif_id, provider: \"GIPHY\" }. Tenor is not supported.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "threads_gif_attachment": {
                    "description": "GIPHY gif_attachment: { gif_id, provider: \"GIPHY\" }. Tenor is not supported. Alias for gif_attachment.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "reply_control": "everyone",
                  "poll": {
                    "options": [
                      "Polls",
                      "Analytics"
                    ]
                  },
                  "topic_tag": "producthunt",
                  "is_ghost_post": false,
                  "enable_reply_approvals": true
                }
              },
              {
                "title": "Google Business settings",
                "type": "object",
                "properties": {
                  "post_type": {
                    "description": "Google Business Profile post type.",
                    "enum": [
                      "STANDARD",
                      "EVENT",
                      "OFFER"
                    ],
                    "type": "string"
                  },
                  "topic_type": {
                    "description": "Google Business Profile post type. Alias for post_type.",
                    "enum": [
                      "STANDARD",
                      "EVENT",
                      "OFFER"
                    ],
                    "type": "string"
                  },
                  "event": {
                    "description": "Event title and start/end date/time.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "offer": {
                    "description": "Offer coupon, redeem URL, and terms.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "cta": {
                    "description": "CTA type and URL.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "recurrence": {
                    "description": "EVENT/OFFER recurrenceInfo: { type: DAILY|WEEKLY|MONTHLY, series_end_time? }. Keeps one-off scheduledTime.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "recurrenceInfo": {
                    "description": "EVENT/OFFER recurrenceInfo: { type: DAILY|WEEKLY|MONTHLY, series_end_time? }. Keeps one-off scheduledTime. Alias for recurrence.",
                    "type": "object",
                    "additionalProperties": true
                  }
                },
                "additionalProperties": true,
                "example": {
                  "post_type": "EVENT",
                  "event": {
                    "title": "Launch night",
                    "start_date": "2026-09-01"
                  },
                  "recurrence": {
                    "type": "WEEKLY",
                    "series_end_time": "2026-12-01T00:00:00Z"
                  },
                  "cta": {
                    "type": "LEARN_MORE",
                    "url": "https://www.poster.ly"
                  }
                }
              },
              {
                "title": "Telegram settings",
                "type": "object",
                "properties": {
                  "parse_mode": {
                    "description": "Telegram caption parse mode when supported.",
                    "enum": [
                      "HTML",
                      "MarkdownV2"
                    ],
                    "type": "string"
                  },
                  "disable_web_page_preview": {
                    "description": "Disable link previews for text posts.",
                    "type": "boolean"
                  },
                  "poll": {
                    "description": "Telegram native poll: { question, options (2-10), allows_multiple_answers? }.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "telegram_poll": {
                    "description": "Telegram native poll: { question, options (2-10), allows_multiple_answers? }. Alias for poll.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "buttons": {
                    "description": "Inline CTA buttons: [{ text, url }] (up to 3).",
                    "type": "array",
                    "items": {}
                  },
                  "telegram_buttons": {
                    "description": "Inline CTA buttons: [{ text, url }] (up to 3). Alias for buttons.",
                    "type": "array",
                    "items": {}
                  },
                  "video_cover_url": {
                    "description": "Cover image URL for sendVideo (Bot API cover).",
                    "type": "string"
                  },
                  "cover_url": {
                    "description": "Cover image URL for sendVideo (Bot API cover). Alias for video_cover_url.",
                    "type": "string"
                  },
                  "telegram_video_cover_url": {
                    "description": "Cover image URL for sendVideo (Bot API cover). Alias for video_cover_url.",
                    "type": "string"
                  },
                  "start_timestamp": {
                    "description": "Video start timestamp in seconds for sendVideo (Bot API start_timestamp).",
                    "type": "number"
                  },
                  "telegram_start_timestamp": {
                    "description": "Video start timestamp in seconds for sendVideo (Bot API start_timestamp). Alias for start_timestamp.",
                    "type": "number"
                  },
                  "is_live_photo": {
                    "description": "Send as sendLivePhoto when both a still image and a video are attached.",
                    "type": "boolean"
                  },
                  "telegram_is_live_photo": {
                    "description": "Send as sendLivePhoto when both a still image and a video are attached. Alias for is_live_photo.",
                    "type": "boolean"
                  }
                },
                "additionalProperties": true,
                "example": {
                  "poll": {
                    "question": "Which feature next?",
                    "options": [
                      "Polls",
                      "Analytics"
                    ]
                  },
                  "buttons": [
                    {
                      "text": "Read more",
                      "url": "https://www.poster.ly"
                    }
                  ],
                  "video_cover_url": "https://example.com/cover.jpg"
                }
              },
              {
                "title": "Bluesky settings",
                "type": "object",
                "properties": {
                  "langs": {
                    "description": "Language tags for the Bluesky post.",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "content_label": {
                    "description": "Self-applied content warning (tap-to-reveal).",
                    "enum": [
                      "sexual",
                      "nudity",
                      "porn",
                      "graphic-media"
                    ],
                    "type": "string"
                  },
                  "content_warning": {
                    "description": "Self-applied content warning (tap-to-reveal). Alias for content_label.",
                    "enum": [
                      "sexual",
                      "nudity",
                      "porn",
                      "graphic-media"
                    ],
                    "type": "string"
                  },
                  "tags": {
                    "description": "Up to 8 hidden discovery tags (separate from in-text hashtags).",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "bluesky_tags": {
                    "description": "Up to 8 hidden discovery tags (separate from in-text hashtags). Alias for tags.",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "quote_url": {
                    "description": "A Bluesky post URL (or AT-URI) to quote.",
                    "type": "string"
                  },
                  "quote": {
                    "description": "A Bluesky post URL (or AT-URI) to quote. Alias for quote_url.",
                    "type": "string"
                  },
                  "bluesky_quote_url": {
                    "description": "A Bluesky post URL (or AT-URI) to quote. Alias for quote_url.",
                    "type": "string"
                  },
                  "disable_quotes": {
                    "description": "Prevent others from quote-posting this post (postgate).",
                    "type": "boolean"
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "langs": [
                    "en"
                  ],
                  "tags": [
                    "producthunt",
                    "launch"
                  ],
                  "quote_url": "https://bsky.app/profile/poster.ly/post/abc123"
                }
              },
              {
                "title": "Discord settings",
                "type": "object",
                "properties": {
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "media_alt_texts": {
                    "https://example.com/chart.png": "Q2 revenue chart"
                  }
                }
              },
              {
                "title": "Slack settings",
                "type": "object",
                "properties": {
                  "markdown": {
                    "description": "Send the caption as a Block Kit markdown block on chat.postMessage.",
                    "type": "boolean"
                  },
                  "slack_markdown": {
                    "description": "Send the caption as a Block Kit markdown block on chat.postMessage. Alias for markdown.",
                    "type": "boolean"
                  },
                  "blocks": {
                    "description": "Optional Block Kit blocks (markdown, card, or carousel) passed to chat.postMessage. File upload still uses getUploadURLExternal.",
                    "type": "array",
                    "items": {}
                  },
                  "slack_blocks": {
                    "description": "Optional Block Kit blocks (markdown, card, or carousel) passed to chat.postMessage. File upload still uses getUploadURLExternal. Alias for blocks.",
                    "type": "array",
                    "items": {}
                  }
                },
                "additionalProperties": true,
                "example": {
                  "markdown": true
                }
              },
              {
                "title": "Mastodon settings",
                "type": "object",
                "properties": {
                  "visibility": {
                    "description": "Status visibility (private means followers only).",
                    "enum": [
                      "public",
                      "unlisted",
                      "private"
                    ],
                    "type": "string"
                  },
                  "mastodon_visibility": {
                    "description": "Status visibility (private means followers only). Alias for visibility.",
                    "enum": [
                      "public",
                      "unlisted",
                      "private"
                    ],
                    "type": "string"
                  },
                  "spoiler_text": {
                    "description": "Content warning shown before the post is revealed (marks media sensitive).",
                    "type": "string"
                  },
                  "content_warning": {
                    "description": "Content warning shown before the post is revealed (marks media sensitive). Alias for spoiler_text.",
                    "type": "string"
                  },
                  "mastodon_spoiler_text": {
                    "description": "Content warning shown before the post is revealed (marks media sensitive). Alias for spoiler_text.",
                    "type": "string"
                  },
                  "language": {
                    "description": "ISO 639 language code for the status.",
                    "type": "string"
                  },
                  "mastodon_language": {
                    "description": "ISO 639 language code for the status. Alias for language.",
                    "type": "string"
                  },
                  "quoted_status_id": {
                    "description": "Mastodon status ID to quote (4.5+ quoted_status_id).",
                    "type": "string"
                  },
                  "quote_id": {
                    "description": "Mastodon status ID to quote (4.5+ quoted_status_id). Alias for quoted_status_id.",
                    "type": "string"
                  },
                  "mastodon_quoted_status_id": {
                    "description": "Mastodon status ID to quote (4.5+ quoted_status_id). Alias for quoted_status_id.",
                    "type": "string"
                  },
                  "poll": {
                    "description": "Mastodon poll: { options (2-4), expires_in seconds, multiple? }. Media and a poll can be combined on Mastodon 4.6+.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "mastodon_poll": {
                    "description": "Mastodon poll: { options (2-4), expires_in seconds, multiple? }. Media and a poll can be combined on Mastodon 4.6+. Alias for poll.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "visibility": "public",
                  "spoiler_text": "Launch spoilers",
                  "language": "en",
                  "quoted_status_id": "123",
                  "poll": {
                    "options": [
                      "Yes",
                      "No"
                    ],
                    "expires_in": 86400
                  }
                }
              },
              {
                "title": "Dev.to settings",
                "type": "object",
                "properties": {
                  "title": {
                    "description": "Article title. Falls back to the first line of the caption.",
                    "type": "string"
                  },
                  "devto_title": {
                    "description": "Article title. Falls back to the first line of the caption. Alias for title.",
                    "type": "string"
                  },
                  "tags": {
                    "description": "Up to 4 tags (lowercase alphanumeric).",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "devto_tags": {
                    "description": "Up to 4 tags (lowercase alphanumeric). Alias for tags.",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "canonical_url": {
                    "description": "Canonical URL when cross-posting from your own blog.",
                    "type": "string"
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "title": "How we ship 18 platforms",
                  "tags": [
                    "webdev",
                    "saas"
                  ]
                }
              },
              {
                "title": "Hashnode settings",
                "type": "object",
                "properties": {
                  "title": {
                    "description": "Post title. Falls back to the first line of the caption.",
                    "type": "string"
                  },
                  "hashnode_title": {
                    "description": "Post title. Falls back to the first line of the caption. Alias for title.",
                    "type": "string"
                  },
                  "tags": {
                    "description": "Up to 4 tags (lowercase alphanumeric).",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "hashnode_tags": {
                    "description": "Up to 4 tags (lowercase alphanumeric). Alias for tags.",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "publication_id": {
                    "description": "Target publication. Defaults to the account blog captured at connect time.",
                    "type": "string"
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "title": "How we ship 18 platforms",
                  "tags": [
                    "webdev",
                    "saas"
                  ]
                }
              },
              {
                "title": "WordPress settings",
                "type": "object",
                "properties": {
                  "title": {
                    "description": "Post title. Falls back to the first line of the caption.",
                    "type": "string"
                  },
                  "wordpress_title": {
                    "description": "Post title. Falls back to the first line of the caption. Alias for title.",
                    "type": "string"
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "title": "How we ship 18 platforms"
                }
              },
              {
                "title": "Lemmy settings",
                "type": "object",
                "properties": {
                  "community": {
                    "description": "Target community, e.g. technology or technology@lemmy.world.",
                    "type": "string"
                  },
                  "lemmy_community": {
                    "description": "Target community, e.g. technology or technology@lemmy.world. Alias for community.",
                    "type": "string"
                  },
                  "title": {
                    "description": "Post title. Falls back to the first line of the caption.",
                    "type": "string"
                  },
                  "lemmy_title": {
                    "description": "Post title. Falls back to the first line of the caption. Alias for title.",
                    "type": "string"
                  },
                  "url": {
                    "description": "Link post URL. Defaults to the first attached image.",
                    "type": "string"
                  },
                  "lemmy_url": {
                    "description": "Link post URL. Defaults to the first attached image. Alias for url.",
                    "type": "string"
                  },
                  "nsfw": {
                    "description": "Mark the post NSFW.",
                    "type": "boolean"
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "required": [
                  "community"
                ],
                "additionalProperties": true,
                "example": {
                  "community": "selfhosted@lemmy.world",
                  "title": "posterly now posts to Lemmy"
                }
              }
            ],
            "additionalProperties": true
          },
          "instagram_settings": {
            "type": "object",
            "description": "Platform-specific composer controls. Call list_platforms or get_platform_schema for the selected account before sending settings.",
            "oneOf": [
              {
                "title": "Instagram settings",
                "type": "object",
                "properties": {
                  "__type": {
                    "description": "Instagram account type hint.",
                    "enum": [
                      "instagram",
                      "instagram-standalone"
                    ],
                    "type": "string"
                  },
                  "post_type": {
                    "description": "Instagram publishing format.",
                    "enum": [
                      "post",
                      "feed",
                      "story",
                      "reel",
                      "carousel"
                    ],
                    "type": "string"
                  },
                  "is_trial_reel": {
                    "description": "Request an Instagram Trial Reel when the account supports it.",
                    "type": "boolean"
                  },
                  "trial_reel": {
                    "description": "Request an Instagram Trial Reel when the account supports it. Alias for is_trial_reel.",
                    "type": "boolean"
                  },
                  "graduation_strategy": {
                    "description": "Trial Reel graduation strategy.",
                    "enum": [
                      "MANUAL",
                      "SS_PERFORMANCE"
                    ],
                    "type": "string"
                  },
                  "collaborators": {
                    "description": "Native co-author invitations. Meta-linked Instagram accounts only; feed images, Reels, and carousels; maximum 3; not Stories.",
                    "type": "array",
                    "items": {}
                  },
                  "user_tags": {
                    "description": "Native clickable media tags, not caption @mentions. Supported by eligible direct Instagram and Meta-linked connections; feed images, Reels/video, and Stories. Tags apply to each carousel child and the first Story in a Story Series.",
                    "type": "array",
                    "items": {}
                  },
                  "first_comment": {
                    "description": "First comment to publish after the post.",
                    "type": "string"
                  },
                  "reel_cover_url": {
                    "description": "Custom Reel cover image URL.",
                    "type": "string"
                  },
                  "cover_url": {
                    "description": "Custom Reel cover image URL. Alias for reel_cover_url.",
                    "type": "string"
                  },
                  "reel_thumb_offset": {
                    "description": "Video timestamp, in milliseconds, for a generated Reel thumbnail.",
                    "type": "number"
                  },
                  "thumb_offset": {
                    "description": "Video timestamp, in milliseconds, for a generated Reel thumbnail. Alias for reel_thumb_offset.",
                    "type": "number"
                  },
                  "is_ai_generated": {
                    "description": "Label the parent media container as AI-generated (is_ai_generated). For carousels, set this on the parent only, never on child slides.",
                    "type": "boolean"
                  },
                  "instagram_is_ai_generated": {
                    "description": "Label the parent media container as AI-generated (is_ai_generated). For carousels, set this on the parent only, never on child slides. Alias for is_ai_generated.",
                    "type": "boolean"
                  },
                  "ai_generated": {
                    "description": "Label the parent media container as AI-generated (is_ai_generated). For carousels, set this on the parent only, never on child slides. Alias for is_ai_generated.",
                    "type": "boolean"
                  },
                  "audio_id": {
                    "description": "Licensed Instagram audio ID for Reels (audio_configuration.audio_id). Meta-linked Facebook Login accounts only; hidden for Instagram Login.",
                    "type": "string"
                  },
                  "instagram_audio_id": {
                    "description": "Licensed Instagram audio ID for Reels (audio_configuration.audio_id). Meta-linked Facebook Login accounts only; hidden for Instagram Login. Alias for audio_id.",
                    "type": "string"
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "__type": "instagram",
                  "post_type": "reel",
                  "first_comment": "Full details in the caption.",
                  "is_ai_generated": true
                }
              },
              {
                "title": "Facebook settings",
                "type": "object",
                "properties": {
                  "post_type": {
                    "description": "Facebook publishing format. Reel uses the Graph Reels API and must be 90 seconds or shorter; use video for longer clips. A 90.0 second Reel is allowed.",
                    "enum": [
                      "post",
                      "feed",
                      "story",
                      "reel",
                      "cover_photo"
                    ],
                    "type": "string"
                  },
                  "text_format_preset_id": {
                    "description": "Styled text post background preset.",
                    "type": "string"
                  },
                  "background_preset_id": {
                    "description": "Styled text post background preset. Alias for text_format_preset_id.",
                    "type": "string"
                  },
                  "reel_cover_url": {
                    "description": "Custom Reel cover image URL.",
                    "type": "string"
                  },
                  "cover_url": {
                    "description": "Custom Reel cover image URL. Alias for reel_cover_url.",
                    "type": "string"
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "post_type": "reel",
                  "reel_cover_url": "https://example.com/cover.jpg"
                }
              },
              {
                "title": "TikTok settings",
                "type": "object",
                "properties": {
                  "privacy_level": {
                    "description": "TikTok direct-post privacy level from the creator info helper.",
                    "type": "string"
                  },
                  "allow_comment": {
                    "description": "Allow comments when direct posting.",
                    "type": "boolean"
                  },
                  "allow_duet": {
                    "description": "Allow duets when direct posting.",
                    "type": "boolean"
                  },
                  "allow_stitch": {
                    "description": "Allow stitches when direct posting.",
                    "type": "boolean"
                  },
                  "title": {
                    "description": "TikTok title/caption field.",
                    "type": "string"
                  },
                  "media_type": {
                    "description": "Set to PHOTO for TikTok photo posts or multi-photo slideshows.",
                    "enum": [
                      "PHOTO"
                    ],
                    "type": "string"
                  },
                  "photo_cover_index": {
                    "description": "Zero-based cover image index for TikTok photo posts.",
                    "type": "number"
                  },
                  "video_cover_timestamp_ms": {
                    "description": "Millisecond timestamp of the video frame to use as the cover (direct post only).",
                    "type": "number"
                  },
                  "cover_timestamp_ms": {
                    "description": "Millisecond timestamp of the video frame to use as the cover (direct post only). Alias for video_cover_timestamp_ms.",
                    "type": "number"
                  },
                  "auto_add_music": {
                    "description": "Ask TikTok to add recommended music to photo posts when direct posting.",
                    "type": "boolean"
                  },
                  "is_commercial_content": {
                    "description": "TikTok commercial content disclosure.",
                    "type": "boolean"
                  },
                  "is_your_brand": {
                    "description": "TikTok branded content: your own brand.",
                    "type": "boolean"
                  },
                  "is_branded_content": {
                    "description": "TikTok branded content: third-party brand.",
                    "type": "boolean"
                  },
                  "ai_generated": {
                    "description": "Label the post as AI-generated (TikTok is_aigc).",
                    "type": "boolean"
                  },
                  "ai_disclosure": {
                    "description": "Label the post as AI-generated (TikTok is_aigc). Alias for ai_generated.",
                    "type": "boolean"
                  }
                },
                "additionalProperties": true,
                "example": {
                  "privacy_level": "PUBLIC_TO_EVERYONE",
                  "media_type": "PHOTO",
                  "photo_cover_index": 0,
                  "auto_add_music": true,
                  "allow_comment": true,
                  "allow_duet": false,
                  "allow_stitch": false,
                  "video_cover_timestamp_ms": 1500
                }
              },
              {
                "title": "X settings",
                "type": "object",
                "properties": {
                  "reply_settings": {
                    "description": "Who can reply to the post.",
                    "enum": [
                      "everyone",
                      "following",
                      "mentionedUsers",
                      "subscribers",
                      "verified"
                    ],
                    "type": "string"
                  },
                  "x_reply_settings": {
                    "description": "Who can reply to the post. Alias for reply_settings.",
                    "enum": [
                      "everyone",
                      "following",
                      "mentionedUsers",
                      "subscribers",
                      "verified"
                    ],
                    "type": "string"
                  },
                  "poll": {
                    "description": "X poll settings: options and duration_minutes.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "x_poll": {
                    "description": "X poll settings: options and duration_minutes. Alias for poll.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "ai_generated": {
                    "description": "Label the post as AI-generated (X made_with_ai).",
                    "type": "boolean"
                  },
                  "ai_disclosure": {
                    "description": "Label the post as AI-generated (X made_with_ai). Alias for ai_generated.",
                    "type": "boolean"
                  },
                  "made_with_ai": {
                    "description": "Label the post as AI-generated (X made_with_ai). Alias for ai_generated.",
                    "type": "boolean"
                  },
                  "paid_partnership": {
                    "description": "Mark the post as a paid partnership (POST /2/tweets paid_partnership). Existing tweet.write.",
                    "type": "boolean"
                  },
                  "x_paid_partnership": {
                    "description": "Mark the post as a paid partnership (POST /2/tweets paid_partnership). Existing tweet.write. Alias for paid_partnership.",
                    "type": "boolean"
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "reply_settings": "following",
                  "poll": {
                    "options": [
                      "Yes",
                      "No"
                    ],
                    "duration_minutes": 1440
                  },
                  "paid_partnership": true
                }
              },
              {
                "title": "LinkedIn settings",
                "type": "object",
                "properties": {
                  "document_title": {
                    "description": "Title for a LinkedIn PDF/document post.",
                    "type": "string"
                  },
                  "linkedin_document_title": {
                    "description": "Title for a LinkedIn PDF/document post. Alias for document_title.",
                    "type": "string"
                  },
                  "document_filename": {
                    "description": "Filename for a LinkedIn document post.",
                    "type": "string"
                  },
                  "mentions": {
                    "description": "LinkedIn organization mention objects.",
                    "type": "array",
                    "items": {}
                  },
                  "linkedin_mentions": {
                    "description": "LinkedIn organization mention objects. Alias for mentions.",
                    "type": "array",
                    "items": {}
                  },
                  "poll": {
                    "description": "LinkedIn poll: { question, options (2-4), duration (ONE_DAY|THREE_DAYS|SEVEN_DAYS|FOURTEEN_DAYS) }. Mutually exclusive with media.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "linkedin_poll": {
                    "description": "LinkedIn poll: { question, options (2-4), duration (ONE_DAY|THREE_DAYS|SEVEN_DAYS|FOURTEEN_DAYS) }. Mutually exclusive with media. Alias for poll.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "thumbnail_url": {
                    "description": "Custom video thumbnail URL.",
                    "type": "string"
                  },
                  "content_call_to_action_label": {
                    "description": "LinkedIn contentCallToActionLabel, including BUY_NOW and SHOP_NOW (version 202504). Pair with content_landing_page.",
                    "enum": [
                      "APPLY",
                      "DOWNLOAD",
                      "VIEW_QUOTE",
                      "LEARN_MORE",
                      "SIGN_UP",
                      "SUBSCRIBE",
                      "REGISTER",
                      "JOIN",
                      "ATTEND",
                      "REQUEST_DEMO",
                      "SEE_MORE",
                      "BUY_NOW",
                      "SHOP_NOW"
                    ],
                    "type": "string"
                  },
                  "cta_label": {
                    "description": "LinkedIn contentCallToActionLabel, including BUY_NOW and SHOP_NOW (version 202504). Pair with content_landing_page. Alias for content_call_to_action_label.",
                    "enum": [
                      "APPLY",
                      "DOWNLOAD",
                      "VIEW_QUOTE",
                      "LEARN_MORE",
                      "SIGN_UP",
                      "SUBSCRIBE",
                      "REGISTER",
                      "JOIN",
                      "ATTEND",
                      "REQUEST_DEMO",
                      "SEE_MORE",
                      "BUY_NOW",
                      "SHOP_NOW"
                    ],
                    "type": "string"
                  },
                  "linkedin_cta_label": {
                    "description": "LinkedIn contentCallToActionLabel, including BUY_NOW and SHOP_NOW (version 202504). Pair with content_landing_page. Alias for content_call_to_action_label.",
                    "enum": [
                      "APPLY",
                      "DOWNLOAD",
                      "VIEW_QUOTE",
                      "LEARN_MORE",
                      "SIGN_UP",
                      "SUBSCRIBE",
                      "REGISTER",
                      "JOIN",
                      "ATTEND",
                      "REQUEST_DEMO",
                      "SEE_MORE",
                      "BUY_NOW",
                      "SHOP_NOW"
                    ],
                    "type": "string"
                  },
                  "content_landing_page": {
                    "description": "Landing page URL sent as contentLandingPage with the LinkedIn call to action.",
                    "type": "string"
                  },
                  "cta_url": {
                    "description": "Landing page URL sent as contentLandingPage with the LinkedIn call to action. Alias for content_landing_page.",
                    "type": "string"
                  },
                  "linkedin_cta_url": {
                    "description": "Landing page URL sent as contentLandingPage with the LinkedIn call to action. Alias for content_landing_page.",
                    "type": "string"
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "document_title": "Launch plan",
                  "mentions": [
                    {
                      "display_name": "posterly",
                      "urn": "urn:li:organization:123"
                    }
                  ],
                  "poll": {
                    "question": "Which feature next?",
                    "options": [
                      "Polls",
                      "Analytics"
                    ],
                    "duration": "THREE_DAYS"
                  },
                  "content_call_to_action_label": "BUY_NOW",
                  "content_landing_page": "https://www.poster.ly"
                }
              },
              {
                "title": "YouTube settings",
                "type": "object",
                "properties": {
                  "title": {
                    "description": "YouTube video title.",
                    "type": "string"
                  },
                  "youtube_title": {
                    "description": "YouTube video title. Alias for title.",
                    "type": "string"
                  },
                  "thumbnail_url": {
                    "description": "Custom YouTube thumbnail URL.",
                    "type": "string"
                  },
                  "privacy_status": {
                    "description": "YouTube video visibility.",
                    "enum": [
                      "public",
                      "unlisted",
                      "private"
                    ],
                    "type": "string"
                  },
                  "privacy": {
                    "description": "YouTube video visibility. Alias for privacy_status.",
                    "enum": [
                      "public",
                      "unlisted",
                      "private"
                    ],
                    "type": "string"
                  },
                  "made_for_kids": {
                    "description": "YouTube made-for-kids declaration.",
                    "type": "boolean"
                  },
                  "tags": {
                    "description": "YouTube tags.",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "category_id": {
                    "description": "YouTube category ID.",
                    "type": "string"
                  },
                  "notify_subscribers": {
                    "description": "Notify subscribers when the video publishes (default true).",
                    "type": "boolean"
                  },
                  "add_shorts_hashtag": {
                    "description": "Append #Shorts to the description for Shorts-feed eligibility (vertical clips).",
                    "type": "boolean"
                  },
                  "ai_generated": {
                    "description": "Label the video as containing AI/synthetic media (containsSyntheticMedia).",
                    "type": "boolean"
                  },
                  "ai_disclosure": {
                    "description": "Label the video as containing AI/synthetic media (containsSyntheticMedia). Alias for ai_generated.",
                    "type": "boolean"
                  },
                  "brand_partner": {
                    "description": "Optional YouTube brandPartner channel ID (UC…) or handle (@…). Added to videos.insert part=brandPartner when set.",
                    "type": "string"
                  },
                  "brandPartner": {
                    "description": "Optional YouTube brandPartner channel ID (UC…) or handle (@…). Added to videos.insert part=brandPartner when set. Alias for brand_partner.",
                    "type": "string"
                  }
                },
                "required": [
                  "title"
                ],
                "additionalProperties": true,
                "example": {
                  "title": "Launch walkthrough",
                  "privacy_status": "unlisted",
                  "notify_subscribers": false,
                  "add_shorts_hashtag": true,
                  "brand_partner": "@brand"
                }
              },
              {
                "title": "Pinterest settings",
                "type": "object",
                "properties": {
                  "board_id": {
                    "description": "Pinterest board ID from the pinterest.boards helper.",
                    "type": "string"
                  },
                  "pinterest_board_id": {
                    "description": "Pinterest board ID from the pinterest.boards helper. Alias for board_id.",
                    "type": "string"
                  },
                  "title": {
                    "description": "Pinterest Pin title.",
                    "type": "string"
                  },
                  "link": {
                    "description": "Destination URL for the Pin.",
                    "type": "string"
                  },
                  "destination_url": {
                    "description": "Destination URL for the Pin. Alias for link.",
                    "type": "string"
                  },
                  "cover_image_url": {
                    "description": "Required for video Pins: a stored, probe-verified JPEG or PNG cover URL (20 MiB maximum).",
                    "type": "string"
                  },
                  "video_cover_url": {
                    "description": "Required for video Pins: a stored, probe-verified JPEG or PNG cover URL (20 MiB maximum). Alias for cover_image_url.",
                    "type": "string"
                  },
                  "pinterest_cover_image_url": {
                    "description": "Required for video Pins: a stored, probe-verified JPEG or PNG cover URL (20 MiB maximum). Alias for cover_image_url.",
                    "type": "string"
                  },
                  "ai_generated": {
                    "description": "Label the Pin as AI-modified (ai_disclosures).",
                    "type": "boolean"
                  },
                  "ai_disclosure": {
                    "description": "Label the Pin as AI-modified (ai_disclosures). Alias for ai_generated.",
                    "type": "boolean"
                  },
                  "product_tags": {
                    "description": "Optional product tags on POST /v5/pins (product_id, optional x/y). Existing pins:write. Pin note is not written.",
                    "type": "array",
                    "items": {}
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "required": [
                  "board_id"
                ],
                "additionalProperties": true,
                "example": {
                  "board_id": "123456789",
                  "title": "Launch ideas",
                  "link": "https://www.poster.ly",
                  "cover_image_url": "https://assets.poster.ly/users/123/pinterest-video-covers/cover.jpg",
                  "product_tags": [
                    {
                      "product_id": "123"
                    }
                  ]
                }
              },
              {
                "title": "Threads settings",
                "type": "object",
                "properties": {
                  "reply_control": {
                    "description": "Threads reply control setting.",
                    "enum": [
                      "everyone",
                      "accounts_you_follow",
                      "mentioned_only",
                      "followers_only",
                      "parent_post_author_only"
                    ],
                    "type": "string"
                  },
                  "threads_reply_control": {
                    "description": "Threads reply control setting. Alias for reply_control.",
                    "enum": [
                      "everyone",
                      "accounts_you_follow",
                      "mentioned_only",
                      "followers_only",
                      "parent_post_author_only"
                    ],
                    "type": "string"
                  },
                  "poll": {
                    "description": "Threads poll: { options (2-4) }. Text-only, fixed 24h duration.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "threads_poll": {
                    "description": "Threads poll: { options (2-4) }. Text-only, fixed 24h duration. Alias for poll.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "topic_tag": {
                    "description": "A single Threads topic tag (1-50 chars, no periods/ampersands).",
                    "type": "string"
                  },
                  "threads_topic_tag": {
                    "description": "A single Threads topic tag (1-50 chars, no periods/ampersands). Alias for topic_tag.",
                    "type": "string"
                  },
                  "text_attachment": {
                    "description": "Long-form Threads text attachment.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "threads_text_attachment": {
                    "description": "Long-form Threads text attachment. Alias for text_attachment.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "share_to_instagram": {
                    "description": "Also share the published post to the Instagram account linked to the Threads profile as a Story (dark card). Requires Instagram sharing enabled for the Threads profile in the Threads app.",
                    "type": "boolean"
                  },
                  "threads_share_to_instagram": {
                    "description": "Also share the published post to the Instagram account linked to the Threads profile as a Story (dark card). Requires Instagram sharing enabled for the Threads profile in the Threads app. Alias for share_to_instagram.",
                    "type": "boolean"
                  },
                  "is_ghost_post": {
                    "description": "Publish as a Threads ghost post. Text-only.",
                    "type": "boolean"
                  },
                  "threads_is_ghost_post": {
                    "description": "Publish as a Threads ghost post. Text-only. Alias for is_ghost_post.",
                    "type": "boolean"
                  },
                  "is_spoiler": {
                    "description": "Mark the Threads post as a spoiler (full-caption text entity and/or is_spoiler_media).",
                    "type": "boolean"
                  },
                  "threads_is_spoiler": {
                    "description": "Mark the Threads post as a spoiler (full-caption text entity and/or is_spoiler_media). Alias for is_spoiler.",
                    "type": "boolean"
                  },
                  "is_spoiler_media": {
                    "description": "Set is_spoiler_media on the Threads container when media is attached.",
                    "type": "boolean"
                  },
                  "threads_is_spoiler_media": {
                    "description": "Set is_spoiler_media on the Threads container when media is attached. Alias for is_spoiler_media.",
                    "type": "boolean"
                  },
                  "text_entities": {
                    "description": "Threads text_entities, for example spoiler ranges with entity_type, offset, and length.",
                    "type": "array",
                    "items": {}
                  },
                  "threads_text_entities": {
                    "description": "Threads text_entities, for example spoiler ranges with entity_type, offset, and length. Alias for text_entities.",
                    "type": "array",
                    "items": {}
                  },
                  "enable_reply_approvals": {
                    "description": "Require approval before replies appear (enable_reply_approvals).",
                    "type": "boolean"
                  },
                  "threads_enable_reply_approvals": {
                    "description": "Require approval before replies appear (enable_reply_approvals). Alias for enable_reply_approvals.",
                    "type": "boolean"
                  },
                  "gif_attachment": {
                    "description": "GIPHY gif_attachment: { gif_id, provider: \"GIPHY\" }. Tenor is not supported.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "threads_gif_attachment": {
                    "description": "GIPHY gif_attachment: { gif_id, provider: \"GIPHY\" }. Tenor is not supported. Alias for gif_attachment.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "reply_control": "everyone",
                  "poll": {
                    "options": [
                      "Polls",
                      "Analytics"
                    ]
                  },
                  "topic_tag": "producthunt",
                  "is_ghost_post": false,
                  "enable_reply_approvals": true
                }
              },
              {
                "title": "Google Business settings",
                "type": "object",
                "properties": {
                  "post_type": {
                    "description": "Google Business Profile post type.",
                    "enum": [
                      "STANDARD",
                      "EVENT",
                      "OFFER"
                    ],
                    "type": "string"
                  },
                  "topic_type": {
                    "description": "Google Business Profile post type. Alias for post_type.",
                    "enum": [
                      "STANDARD",
                      "EVENT",
                      "OFFER"
                    ],
                    "type": "string"
                  },
                  "event": {
                    "description": "Event title and start/end date/time.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "offer": {
                    "description": "Offer coupon, redeem URL, and terms.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "cta": {
                    "description": "CTA type and URL.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "recurrence": {
                    "description": "EVENT/OFFER recurrenceInfo: { type: DAILY|WEEKLY|MONTHLY, series_end_time? }. Keeps one-off scheduledTime.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "recurrenceInfo": {
                    "description": "EVENT/OFFER recurrenceInfo: { type: DAILY|WEEKLY|MONTHLY, series_end_time? }. Keeps one-off scheduledTime. Alias for recurrence.",
                    "type": "object",
                    "additionalProperties": true
                  }
                },
                "additionalProperties": true,
                "example": {
                  "post_type": "EVENT",
                  "event": {
                    "title": "Launch night",
                    "start_date": "2026-09-01"
                  },
                  "recurrence": {
                    "type": "WEEKLY",
                    "series_end_time": "2026-12-01T00:00:00Z"
                  },
                  "cta": {
                    "type": "LEARN_MORE",
                    "url": "https://www.poster.ly"
                  }
                }
              },
              {
                "title": "Telegram settings",
                "type": "object",
                "properties": {
                  "parse_mode": {
                    "description": "Telegram caption parse mode when supported.",
                    "enum": [
                      "HTML",
                      "MarkdownV2"
                    ],
                    "type": "string"
                  },
                  "disable_web_page_preview": {
                    "description": "Disable link previews for text posts.",
                    "type": "boolean"
                  },
                  "poll": {
                    "description": "Telegram native poll: { question, options (2-10), allows_multiple_answers? }.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "telegram_poll": {
                    "description": "Telegram native poll: { question, options (2-10), allows_multiple_answers? }. Alias for poll.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "buttons": {
                    "description": "Inline CTA buttons: [{ text, url }] (up to 3).",
                    "type": "array",
                    "items": {}
                  },
                  "telegram_buttons": {
                    "description": "Inline CTA buttons: [{ text, url }] (up to 3). Alias for buttons.",
                    "type": "array",
                    "items": {}
                  },
                  "video_cover_url": {
                    "description": "Cover image URL for sendVideo (Bot API cover).",
                    "type": "string"
                  },
                  "cover_url": {
                    "description": "Cover image URL for sendVideo (Bot API cover). Alias for video_cover_url.",
                    "type": "string"
                  },
                  "telegram_video_cover_url": {
                    "description": "Cover image URL for sendVideo (Bot API cover). Alias for video_cover_url.",
                    "type": "string"
                  },
                  "start_timestamp": {
                    "description": "Video start timestamp in seconds for sendVideo (Bot API start_timestamp).",
                    "type": "number"
                  },
                  "telegram_start_timestamp": {
                    "description": "Video start timestamp in seconds for sendVideo (Bot API start_timestamp). Alias for start_timestamp.",
                    "type": "number"
                  },
                  "is_live_photo": {
                    "description": "Send as sendLivePhoto when both a still image and a video are attached.",
                    "type": "boolean"
                  },
                  "telegram_is_live_photo": {
                    "description": "Send as sendLivePhoto when both a still image and a video are attached. Alias for is_live_photo.",
                    "type": "boolean"
                  }
                },
                "additionalProperties": true,
                "example": {
                  "poll": {
                    "question": "Which feature next?",
                    "options": [
                      "Polls",
                      "Analytics"
                    ]
                  },
                  "buttons": [
                    {
                      "text": "Read more",
                      "url": "https://www.poster.ly"
                    }
                  ],
                  "video_cover_url": "https://example.com/cover.jpg"
                }
              },
              {
                "title": "Bluesky settings",
                "type": "object",
                "properties": {
                  "langs": {
                    "description": "Language tags for the Bluesky post.",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "content_label": {
                    "description": "Self-applied content warning (tap-to-reveal).",
                    "enum": [
                      "sexual",
                      "nudity",
                      "porn",
                      "graphic-media"
                    ],
                    "type": "string"
                  },
                  "content_warning": {
                    "description": "Self-applied content warning (tap-to-reveal). Alias for content_label.",
                    "enum": [
                      "sexual",
                      "nudity",
                      "porn",
                      "graphic-media"
                    ],
                    "type": "string"
                  },
                  "tags": {
                    "description": "Up to 8 hidden discovery tags (separate from in-text hashtags).",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "bluesky_tags": {
                    "description": "Up to 8 hidden discovery tags (separate from in-text hashtags). Alias for tags.",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "quote_url": {
                    "description": "A Bluesky post URL (or AT-URI) to quote.",
                    "type": "string"
                  },
                  "quote": {
                    "description": "A Bluesky post URL (or AT-URI) to quote. Alias for quote_url.",
                    "type": "string"
                  },
                  "bluesky_quote_url": {
                    "description": "A Bluesky post URL (or AT-URI) to quote. Alias for quote_url.",
                    "type": "string"
                  },
                  "disable_quotes": {
                    "description": "Prevent others from quote-posting this post (postgate).",
                    "type": "boolean"
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "langs": [
                    "en"
                  ],
                  "tags": [
                    "producthunt",
                    "launch"
                  ],
                  "quote_url": "https://bsky.app/profile/poster.ly/post/abc123"
                }
              },
              {
                "title": "Discord settings",
                "type": "object",
                "properties": {
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "media_alt_texts": {
                    "https://example.com/chart.png": "Q2 revenue chart"
                  }
                }
              },
              {
                "title": "Slack settings",
                "type": "object",
                "properties": {
                  "markdown": {
                    "description": "Send the caption as a Block Kit markdown block on chat.postMessage.",
                    "type": "boolean"
                  },
                  "slack_markdown": {
                    "description": "Send the caption as a Block Kit markdown block on chat.postMessage. Alias for markdown.",
                    "type": "boolean"
                  },
                  "blocks": {
                    "description": "Optional Block Kit blocks (markdown, card, or carousel) passed to chat.postMessage. File upload still uses getUploadURLExternal.",
                    "type": "array",
                    "items": {}
                  },
                  "slack_blocks": {
                    "description": "Optional Block Kit blocks (markdown, card, or carousel) passed to chat.postMessage. File upload still uses getUploadURLExternal. Alias for blocks.",
                    "type": "array",
                    "items": {}
                  }
                },
                "additionalProperties": true,
                "example": {
                  "markdown": true
                }
              },
              {
                "title": "Mastodon settings",
                "type": "object",
                "properties": {
                  "visibility": {
                    "description": "Status visibility (private means followers only).",
                    "enum": [
                      "public",
                      "unlisted",
                      "private"
                    ],
                    "type": "string"
                  },
                  "mastodon_visibility": {
                    "description": "Status visibility (private means followers only). Alias for visibility.",
                    "enum": [
                      "public",
                      "unlisted",
                      "private"
                    ],
                    "type": "string"
                  },
                  "spoiler_text": {
                    "description": "Content warning shown before the post is revealed (marks media sensitive).",
                    "type": "string"
                  },
                  "content_warning": {
                    "description": "Content warning shown before the post is revealed (marks media sensitive). Alias for spoiler_text.",
                    "type": "string"
                  },
                  "mastodon_spoiler_text": {
                    "description": "Content warning shown before the post is revealed (marks media sensitive). Alias for spoiler_text.",
                    "type": "string"
                  },
                  "language": {
                    "description": "ISO 639 language code for the status.",
                    "type": "string"
                  },
                  "mastodon_language": {
                    "description": "ISO 639 language code for the status. Alias for language.",
                    "type": "string"
                  },
                  "quoted_status_id": {
                    "description": "Mastodon status ID to quote (4.5+ quoted_status_id).",
                    "type": "string"
                  },
                  "quote_id": {
                    "description": "Mastodon status ID to quote (4.5+ quoted_status_id). Alias for quoted_status_id.",
                    "type": "string"
                  },
                  "mastodon_quoted_status_id": {
                    "description": "Mastodon status ID to quote (4.5+ quoted_status_id). Alias for quoted_status_id.",
                    "type": "string"
                  },
                  "poll": {
                    "description": "Mastodon poll: { options (2-4), expires_in seconds, multiple? }. Media and a poll can be combined on Mastodon 4.6+.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "mastodon_poll": {
                    "description": "Mastodon poll: { options (2-4), expires_in seconds, multiple? }. Media and a poll can be combined on Mastodon 4.6+. Alias for poll.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "visibility": "public",
                  "spoiler_text": "Launch spoilers",
                  "language": "en",
                  "quoted_status_id": "123",
                  "poll": {
                    "options": [
                      "Yes",
                      "No"
                    ],
                    "expires_in": 86400
                  }
                }
              },
              {
                "title": "Dev.to settings",
                "type": "object",
                "properties": {
                  "title": {
                    "description": "Article title. Falls back to the first line of the caption.",
                    "type": "string"
                  },
                  "devto_title": {
                    "description": "Article title. Falls back to the first line of the caption. Alias for title.",
                    "type": "string"
                  },
                  "tags": {
                    "description": "Up to 4 tags (lowercase alphanumeric).",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "devto_tags": {
                    "description": "Up to 4 tags (lowercase alphanumeric). Alias for tags.",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "canonical_url": {
                    "description": "Canonical URL when cross-posting from your own blog.",
                    "type": "string"
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "title": "How we ship 18 platforms",
                  "tags": [
                    "webdev",
                    "saas"
                  ]
                }
              },
              {
                "title": "Hashnode settings",
                "type": "object",
                "properties": {
                  "title": {
                    "description": "Post title. Falls back to the first line of the caption.",
                    "type": "string"
                  },
                  "hashnode_title": {
                    "description": "Post title. Falls back to the first line of the caption. Alias for title.",
                    "type": "string"
                  },
                  "tags": {
                    "description": "Up to 4 tags (lowercase alphanumeric).",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "hashnode_tags": {
                    "description": "Up to 4 tags (lowercase alphanumeric). Alias for tags.",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "publication_id": {
                    "description": "Target publication. Defaults to the account blog captured at connect time.",
                    "type": "string"
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "title": "How we ship 18 platforms",
                  "tags": [
                    "webdev",
                    "saas"
                  ]
                }
              },
              {
                "title": "WordPress settings",
                "type": "object",
                "properties": {
                  "title": {
                    "description": "Post title. Falls back to the first line of the caption.",
                    "type": "string"
                  },
                  "wordpress_title": {
                    "description": "Post title. Falls back to the first line of the caption. Alias for title.",
                    "type": "string"
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "title": "How we ship 18 platforms"
                }
              },
              {
                "title": "Lemmy settings",
                "type": "object",
                "properties": {
                  "community": {
                    "description": "Target community, e.g. technology or technology@lemmy.world.",
                    "type": "string"
                  },
                  "lemmy_community": {
                    "description": "Target community, e.g. technology or technology@lemmy.world. Alias for community.",
                    "type": "string"
                  },
                  "title": {
                    "description": "Post title. Falls back to the first line of the caption.",
                    "type": "string"
                  },
                  "lemmy_title": {
                    "description": "Post title. Falls back to the first line of the caption. Alias for title.",
                    "type": "string"
                  },
                  "url": {
                    "description": "Link post URL. Defaults to the first attached image.",
                    "type": "string"
                  },
                  "lemmy_url": {
                    "description": "Link post URL. Defaults to the first attached image. Alias for url.",
                    "type": "string"
                  },
                  "nsfw": {
                    "description": "Mark the post NSFW.",
                    "type": "boolean"
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "required": [
                  "community"
                ],
                "additionalProperties": true,
                "example": {
                  "community": "selfhosted@lemmy.world",
                  "title": "posterly now posts to Lemmy"
                }
              }
            ],
            "additionalProperties": true
          },
          "settings": {
            "type": "object",
            "description": "Platform-specific composer controls. Call list_platforms or get_platform_schema for the selected account before sending settings.",
            "oneOf": [
              {
                "title": "Instagram settings",
                "type": "object",
                "properties": {
                  "__type": {
                    "description": "Instagram account type hint.",
                    "enum": [
                      "instagram",
                      "instagram-standalone"
                    ],
                    "type": "string"
                  },
                  "post_type": {
                    "description": "Instagram publishing format.",
                    "enum": [
                      "post",
                      "feed",
                      "story",
                      "reel",
                      "carousel"
                    ],
                    "type": "string"
                  },
                  "is_trial_reel": {
                    "description": "Request an Instagram Trial Reel when the account supports it.",
                    "type": "boolean"
                  },
                  "trial_reel": {
                    "description": "Request an Instagram Trial Reel when the account supports it. Alias for is_trial_reel.",
                    "type": "boolean"
                  },
                  "graduation_strategy": {
                    "description": "Trial Reel graduation strategy.",
                    "enum": [
                      "MANUAL",
                      "SS_PERFORMANCE"
                    ],
                    "type": "string"
                  },
                  "collaborators": {
                    "description": "Native co-author invitations. Meta-linked Instagram accounts only; feed images, Reels, and carousels; maximum 3; not Stories.",
                    "type": "array",
                    "items": {}
                  },
                  "user_tags": {
                    "description": "Native clickable media tags, not caption @mentions. Supported by eligible direct Instagram and Meta-linked connections; feed images, Reels/video, and Stories. Tags apply to each carousel child and the first Story in a Story Series.",
                    "type": "array",
                    "items": {}
                  },
                  "first_comment": {
                    "description": "First comment to publish after the post.",
                    "type": "string"
                  },
                  "reel_cover_url": {
                    "description": "Custom Reel cover image URL.",
                    "type": "string"
                  },
                  "cover_url": {
                    "description": "Custom Reel cover image URL. Alias for reel_cover_url.",
                    "type": "string"
                  },
                  "reel_thumb_offset": {
                    "description": "Video timestamp, in milliseconds, for a generated Reel thumbnail.",
                    "type": "number"
                  },
                  "thumb_offset": {
                    "description": "Video timestamp, in milliseconds, for a generated Reel thumbnail. Alias for reel_thumb_offset.",
                    "type": "number"
                  },
                  "is_ai_generated": {
                    "description": "Label the parent media container as AI-generated (is_ai_generated). For carousels, set this on the parent only, never on child slides.",
                    "type": "boolean"
                  },
                  "instagram_is_ai_generated": {
                    "description": "Label the parent media container as AI-generated (is_ai_generated). For carousels, set this on the parent only, never on child slides. Alias for is_ai_generated.",
                    "type": "boolean"
                  },
                  "ai_generated": {
                    "description": "Label the parent media container as AI-generated (is_ai_generated). For carousels, set this on the parent only, never on child slides. Alias for is_ai_generated.",
                    "type": "boolean"
                  },
                  "audio_id": {
                    "description": "Licensed Instagram audio ID for Reels (audio_configuration.audio_id). Meta-linked Facebook Login accounts only; hidden for Instagram Login.",
                    "type": "string"
                  },
                  "instagram_audio_id": {
                    "description": "Licensed Instagram audio ID for Reels (audio_configuration.audio_id). Meta-linked Facebook Login accounts only; hidden for Instagram Login. Alias for audio_id.",
                    "type": "string"
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "__type": "instagram",
                  "post_type": "reel",
                  "first_comment": "Full details in the caption.",
                  "is_ai_generated": true
                }
              },
              {
                "title": "Facebook settings",
                "type": "object",
                "properties": {
                  "post_type": {
                    "description": "Facebook publishing format. Reel uses the Graph Reels API and must be 90 seconds or shorter; use video for longer clips. A 90.0 second Reel is allowed.",
                    "enum": [
                      "post",
                      "feed",
                      "story",
                      "reel",
                      "cover_photo"
                    ],
                    "type": "string"
                  },
                  "text_format_preset_id": {
                    "description": "Styled text post background preset.",
                    "type": "string"
                  },
                  "background_preset_id": {
                    "description": "Styled text post background preset. Alias for text_format_preset_id.",
                    "type": "string"
                  },
                  "reel_cover_url": {
                    "description": "Custom Reel cover image URL.",
                    "type": "string"
                  },
                  "cover_url": {
                    "description": "Custom Reel cover image URL. Alias for reel_cover_url.",
                    "type": "string"
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "post_type": "reel",
                  "reel_cover_url": "https://example.com/cover.jpg"
                }
              },
              {
                "title": "TikTok settings",
                "type": "object",
                "properties": {
                  "privacy_level": {
                    "description": "TikTok direct-post privacy level from the creator info helper.",
                    "type": "string"
                  },
                  "allow_comment": {
                    "description": "Allow comments when direct posting.",
                    "type": "boolean"
                  },
                  "allow_duet": {
                    "description": "Allow duets when direct posting.",
                    "type": "boolean"
                  },
                  "allow_stitch": {
                    "description": "Allow stitches when direct posting.",
                    "type": "boolean"
                  },
                  "title": {
                    "description": "TikTok title/caption field.",
                    "type": "string"
                  },
                  "media_type": {
                    "description": "Set to PHOTO for TikTok photo posts or multi-photo slideshows.",
                    "enum": [
                      "PHOTO"
                    ],
                    "type": "string"
                  },
                  "photo_cover_index": {
                    "description": "Zero-based cover image index for TikTok photo posts.",
                    "type": "number"
                  },
                  "video_cover_timestamp_ms": {
                    "description": "Millisecond timestamp of the video frame to use as the cover (direct post only).",
                    "type": "number"
                  },
                  "cover_timestamp_ms": {
                    "description": "Millisecond timestamp of the video frame to use as the cover (direct post only). Alias for video_cover_timestamp_ms.",
                    "type": "number"
                  },
                  "auto_add_music": {
                    "description": "Ask TikTok to add recommended music to photo posts when direct posting.",
                    "type": "boolean"
                  },
                  "is_commercial_content": {
                    "description": "TikTok commercial content disclosure.",
                    "type": "boolean"
                  },
                  "is_your_brand": {
                    "description": "TikTok branded content: your own brand.",
                    "type": "boolean"
                  },
                  "is_branded_content": {
                    "description": "TikTok branded content: third-party brand.",
                    "type": "boolean"
                  },
                  "ai_generated": {
                    "description": "Label the post as AI-generated (TikTok is_aigc).",
                    "type": "boolean"
                  },
                  "ai_disclosure": {
                    "description": "Label the post as AI-generated (TikTok is_aigc). Alias for ai_generated.",
                    "type": "boolean"
                  }
                },
                "additionalProperties": true,
                "example": {
                  "privacy_level": "PUBLIC_TO_EVERYONE",
                  "media_type": "PHOTO",
                  "photo_cover_index": 0,
                  "auto_add_music": true,
                  "allow_comment": true,
                  "allow_duet": false,
                  "allow_stitch": false,
                  "video_cover_timestamp_ms": 1500
                }
              },
              {
                "title": "X settings",
                "type": "object",
                "properties": {
                  "reply_settings": {
                    "description": "Who can reply to the post.",
                    "enum": [
                      "everyone",
                      "following",
                      "mentionedUsers",
                      "subscribers",
                      "verified"
                    ],
                    "type": "string"
                  },
                  "x_reply_settings": {
                    "description": "Who can reply to the post. Alias for reply_settings.",
                    "enum": [
                      "everyone",
                      "following",
                      "mentionedUsers",
                      "subscribers",
                      "verified"
                    ],
                    "type": "string"
                  },
                  "poll": {
                    "description": "X poll settings: options and duration_minutes.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "x_poll": {
                    "description": "X poll settings: options and duration_minutes. Alias for poll.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "ai_generated": {
                    "description": "Label the post as AI-generated (X made_with_ai).",
                    "type": "boolean"
                  },
                  "ai_disclosure": {
                    "description": "Label the post as AI-generated (X made_with_ai). Alias for ai_generated.",
                    "type": "boolean"
                  },
                  "made_with_ai": {
                    "description": "Label the post as AI-generated (X made_with_ai). Alias for ai_generated.",
                    "type": "boolean"
                  },
                  "paid_partnership": {
                    "description": "Mark the post as a paid partnership (POST /2/tweets paid_partnership). Existing tweet.write.",
                    "type": "boolean"
                  },
                  "x_paid_partnership": {
                    "description": "Mark the post as a paid partnership (POST /2/tweets paid_partnership). Existing tweet.write. Alias for paid_partnership.",
                    "type": "boolean"
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "reply_settings": "following",
                  "poll": {
                    "options": [
                      "Yes",
                      "No"
                    ],
                    "duration_minutes": 1440
                  },
                  "paid_partnership": true
                }
              },
              {
                "title": "LinkedIn settings",
                "type": "object",
                "properties": {
                  "document_title": {
                    "description": "Title for a LinkedIn PDF/document post.",
                    "type": "string"
                  },
                  "linkedin_document_title": {
                    "description": "Title for a LinkedIn PDF/document post. Alias for document_title.",
                    "type": "string"
                  },
                  "document_filename": {
                    "description": "Filename for a LinkedIn document post.",
                    "type": "string"
                  },
                  "mentions": {
                    "description": "LinkedIn organization mention objects.",
                    "type": "array",
                    "items": {}
                  },
                  "linkedin_mentions": {
                    "description": "LinkedIn organization mention objects. Alias for mentions.",
                    "type": "array",
                    "items": {}
                  },
                  "poll": {
                    "description": "LinkedIn poll: { question, options (2-4), duration (ONE_DAY|THREE_DAYS|SEVEN_DAYS|FOURTEEN_DAYS) }. Mutually exclusive with media.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "linkedin_poll": {
                    "description": "LinkedIn poll: { question, options (2-4), duration (ONE_DAY|THREE_DAYS|SEVEN_DAYS|FOURTEEN_DAYS) }. Mutually exclusive with media. Alias for poll.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "thumbnail_url": {
                    "description": "Custom video thumbnail URL.",
                    "type": "string"
                  },
                  "content_call_to_action_label": {
                    "description": "LinkedIn contentCallToActionLabel, including BUY_NOW and SHOP_NOW (version 202504). Pair with content_landing_page.",
                    "enum": [
                      "APPLY",
                      "DOWNLOAD",
                      "VIEW_QUOTE",
                      "LEARN_MORE",
                      "SIGN_UP",
                      "SUBSCRIBE",
                      "REGISTER",
                      "JOIN",
                      "ATTEND",
                      "REQUEST_DEMO",
                      "SEE_MORE",
                      "BUY_NOW",
                      "SHOP_NOW"
                    ],
                    "type": "string"
                  },
                  "cta_label": {
                    "description": "LinkedIn contentCallToActionLabel, including BUY_NOW and SHOP_NOW (version 202504). Pair with content_landing_page. Alias for content_call_to_action_label.",
                    "enum": [
                      "APPLY",
                      "DOWNLOAD",
                      "VIEW_QUOTE",
                      "LEARN_MORE",
                      "SIGN_UP",
                      "SUBSCRIBE",
                      "REGISTER",
                      "JOIN",
                      "ATTEND",
                      "REQUEST_DEMO",
                      "SEE_MORE",
                      "BUY_NOW",
                      "SHOP_NOW"
                    ],
                    "type": "string"
                  },
                  "linkedin_cta_label": {
                    "description": "LinkedIn contentCallToActionLabel, including BUY_NOW and SHOP_NOW (version 202504). Pair with content_landing_page. Alias for content_call_to_action_label.",
                    "enum": [
                      "APPLY",
                      "DOWNLOAD",
                      "VIEW_QUOTE",
                      "LEARN_MORE",
                      "SIGN_UP",
                      "SUBSCRIBE",
                      "REGISTER",
                      "JOIN",
                      "ATTEND",
                      "REQUEST_DEMO",
                      "SEE_MORE",
                      "BUY_NOW",
                      "SHOP_NOW"
                    ],
                    "type": "string"
                  },
                  "content_landing_page": {
                    "description": "Landing page URL sent as contentLandingPage with the LinkedIn call to action.",
                    "type": "string"
                  },
                  "cta_url": {
                    "description": "Landing page URL sent as contentLandingPage with the LinkedIn call to action. Alias for content_landing_page.",
                    "type": "string"
                  },
                  "linkedin_cta_url": {
                    "description": "Landing page URL sent as contentLandingPage with the LinkedIn call to action. Alias for content_landing_page.",
                    "type": "string"
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "document_title": "Launch plan",
                  "mentions": [
                    {
                      "display_name": "posterly",
                      "urn": "urn:li:organization:123"
                    }
                  ],
                  "poll": {
                    "question": "Which feature next?",
                    "options": [
                      "Polls",
                      "Analytics"
                    ],
                    "duration": "THREE_DAYS"
                  },
                  "content_call_to_action_label": "BUY_NOW",
                  "content_landing_page": "https://www.poster.ly"
                }
              },
              {
                "title": "YouTube settings",
                "type": "object",
                "properties": {
                  "title": {
                    "description": "YouTube video title.",
                    "type": "string"
                  },
                  "youtube_title": {
                    "description": "YouTube video title. Alias for title.",
                    "type": "string"
                  },
                  "thumbnail_url": {
                    "description": "Custom YouTube thumbnail URL.",
                    "type": "string"
                  },
                  "privacy_status": {
                    "description": "YouTube video visibility.",
                    "enum": [
                      "public",
                      "unlisted",
                      "private"
                    ],
                    "type": "string"
                  },
                  "privacy": {
                    "description": "YouTube video visibility. Alias for privacy_status.",
                    "enum": [
                      "public",
                      "unlisted",
                      "private"
                    ],
                    "type": "string"
                  },
                  "made_for_kids": {
                    "description": "YouTube made-for-kids declaration.",
                    "type": "boolean"
                  },
                  "tags": {
                    "description": "YouTube tags.",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "category_id": {
                    "description": "YouTube category ID.",
                    "type": "string"
                  },
                  "notify_subscribers": {
                    "description": "Notify subscribers when the video publishes (default true).",
                    "type": "boolean"
                  },
                  "add_shorts_hashtag": {
                    "description": "Append #Shorts to the description for Shorts-feed eligibility (vertical clips).",
                    "type": "boolean"
                  },
                  "ai_generated": {
                    "description": "Label the video as containing AI/synthetic media (containsSyntheticMedia).",
                    "type": "boolean"
                  },
                  "ai_disclosure": {
                    "description": "Label the video as containing AI/synthetic media (containsSyntheticMedia). Alias for ai_generated.",
                    "type": "boolean"
                  },
                  "brand_partner": {
                    "description": "Optional YouTube brandPartner channel ID (UC…) or handle (@…). Added to videos.insert part=brandPartner when set.",
                    "type": "string"
                  },
                  "brandPartner": {
                    "description": "Optional YouTube brandPartner channel ID (UC…) or handle (@…). Added to videos.insert part=brandPartner when set. Alias for brand_partner.",
                    "type": "string"
                  }
                },
                "required": [
                  "title"
                ],
                "additionalProperties": true,
                "example": {
                  "title": "Launch walkthrough",
                  "privacy_status": "unlisted",
                  "notify_subscribers": false,
                  "add_shorts_hashtag": true,
                  "brand_partner": "@brand"
                }
              },
              {
                "title": "Pinterest settings",
                "type": "object",
                "properties": {
                  "board_id": {
                    "description": "Pinterest board ID from the pinterest.boards helper.",
                    "type": "string"
                  },
                  "pinterest_board_id": {
                    "description": "Pinterest board ID from the pinterest.boards helper. Alias for board_id.",
                    "type": "string"
                  },
                  "title": {
                    "description": "Pinterest Pin title.",
                    "type": "string"
                  },
                  "link": {
                    "description": "Destination URL for the Pin.",
                    "type": "string"
                  },
                  "destination_url": {
                    "description": "Destination URL for the Pin. Alias for link.",
                    "type": "string"
                  },
                  "cover_image_url": {
                    "description": "Required for video Pins: a stored, probe-verified JPEG or PNG cover URL (20 MiB maximum).",
                    "type": "string"
                  },
                  "video_cover_url": {
                    "description": "Required for video Pins: a stored, probe-verified JPEG or PNG cover URL (20 MiB maximum). Alias for cover_image_url.",
                    "type": "string"
                  },
                  "pinterest_cover_image_url": {
                    "description": "Required for video Pins: a stored, probe-verified JPEG or PNG cover URL (20 MiB maximum). Alias for cover_image_url.",
                    "type": "string"
                  },
                  "ai_generated": {
                    "description": "Label the Pin as AI-modified (ai_disclosures).",
                    "type": "boolean"
                  },
                  "ai_disclosure": {
                    "description": "Label the Pin as AI-modified (ai_disclosures). Alias for ai_generated.",
                    "type": "boolean"
                  },
                  "product_tags": {
                    "description": "Optional product tags on POST /v5/pins (product_id, optional x/y). Existing pins:write. Pin note is not written.",
                    "type": "array",
                    "items": {}
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "required": [
                  "board_id"
                ],
                "additionalProperties": true,
                "example": {
                  "board_id": "123456789",
                  "title": "Launch ideas",
                  "link": "https://www.poster.ly",
                  "cover_image_url": "https://assets.poster.ly/users/123/pinterest-video-covers/cover.jpg",
                  "product_tags": [
                    {
                      "product_id": "123"
                    }
                  ]
                }
              },
              {
                "title": "Threads settings",
                "type": "object",
                "properties": {
                  "reply_control": {
                    "description": "Threads reply control setting.",
                    "enum": [
                      "everyone",
                      "accounts_you_follow",
                      "mentioned_only",
                      "followers_only",
                      "parent_post_author_only"
                    ],
                    "type": "string"
                  },
                  "threads_reply_control": {
                    "description": "Threads reply control setting. Alias for reply_control.",
                    "enum": [
                      "everyone",
                      "accounts_you_follow",
                      "mentioned_only",
                      "followers_only",
                      "parent_post_author_only"
                    ],
                    "type": "string"
                  },
                  "poll": {
                    "description": "Threads poll: { options (2-4) }. Text-only, fixed 24h duration.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "threads_poll": {
                    "description": "Threads poll: { options (2-4) }. Text-only, fixed 24h duration. Alias for poll.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "topic_tag": {
                    "description": "A single Threads topic tag (1-50 chars, no periods/ampersands).",
                    "type": "string"
                  },
                  "threads_topic_tag": {
                    "description": "A single Threads topic tag (1-50 chars, no periods/ampersands). Alias for topic_tag.",
                    "type": "string"
                  },
                  "text_attachment": {
                    "description": "Long-form Threads text attachment.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "threads_text_attachment": {
                    "description": "Long-form Threads text attachment. Alias for text_attachment.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "share_to_instagram": {
                    "description": "Also share the published post to the Instagram account linked to the Threads profile as a Story (dark card). Requires Instagram sharing enabled for the Threads profile in the Threads app.",
                    "type": "boolean"
                  },
                  "threads_share_to_instagram": {
                    "description": "Also share the published post to the Instagram account linked to the Threads profile as a Story (dark card). Requires Instagram sharing enabled for the Threads profile in the Threads app. Alias for share_to_instagram.",
                    "type": "boolean"
                  },
                  "is_ghost_post": {
                    "description": "Publish as a Threads ghost post. Text-only.",
                    "type": "boolean"
                  },
                  "threads_is_ghost_post": {
                    "description": "Publish as a Threads ghost post. Text-only. Alias for is_ghost_post.",
                    "type": "boolean"
                  },
                  "is_spoiler": {
                    "description": "Mark the Threads post as a spoiler (full-caption text entity and/or is_spoiler_media).",
                    "type": "boolean"
                  },
                  "threads_is_spoiler": {
                    "description": "Mark the Threads post as a spoiler (full-caption text entity and/or is_spoiler_media). Alias for is_spoiler.",
                    "type": "boolean"
                  },
                  "is_spoiler_media": {
                    "description": "Set is_spoiler_media on the Threads container when media is attached.",
                    "type": "boolean"
                  },
                  "threads_is_spoiler_media": {
                    "description": "Set is_spoiler_media on the Threads container when media is attached. Alias for is_spoiler_media.",
                    "type": "boolean"
                  },
                  "text_entities": {
                    "description": "Threads text_entities, for example spoiler ranges with entity_type, offset, and length.",
                    "type": "array",
                    "items": {}
                  },
                  "threads_text_entities": {
                    "description": "Threads text_entities, for example spoiler ranges with entity_type, offset, and length. Alias for text_entities.",
                    "type": "array",
                    "items": {}
                  },
                  "enable_reply_approvals": {
                    "description": "Require approval before replies appear (enable_reply_approvals).",
                    "type": "boolean"
                  },
                  "threads_enable_reply_approvals": {
                    "description": "Require approval before replies appear (enable_reply_approvals). Alias for enable_reply_approvals.",
                    "type": "boolean"
                  },
                  "gif_attachment": {
                    "description": "GIPHY gif_attachment: { gif_id, provider: \"GIPHY\" }. Tenor is not supported.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "threads_gif_attachment": {
                    "description": "GIPHY gif_attachment: { gif_id, provider: \"GIPHY\" }. Tenor is not supported. Alias for gif_attachment.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "reply_control": "everyone",
                  "poll": {
                    "options": [
                      "Polls",
                      "Analytics"
                    ]
                  },
                  "topic_tag": "producthunt",
                  "is_ghost_post": false,
                  "enable_reply_approvals": true
                }
              },
              {
                "title": "Google Business settings",
                "type": "object",
                "properties": {
                  "post_type": {
                    "description": "Google Business Profile post type.",
                    "enum": [
                      "STANDARD",
                      "EVENT",
                      "OFFER"
                    ],
                    "type": "string"
                  },
                  "topic_type": {
                    "description": "Google Business Profile post type. Alias for post_type.",
                    "enum": [
                      "STANDARD",
                      "EVENT",
                      "OFFER"
                    ],
                    "type": "string"
                  },
                  "event": {
                    "description": "Event title and start/end date/time.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "offer": {
                    "description": "Offer coupon, redeem URL, and terms.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "cta": {
                    "description": "CTA type and URL.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "recurrence": {
                    "description": "EVENT/OFFER recurrenceInfo: { type: DAILY|WEEKLY|MONTHLY, series_end_time? }. Keeps one-off scheduledTime.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "recurrenceInfo": {
                    "description": "EVENT/OFFER recurrenceInfo: { type: DAILY|WEEKLY|MONTHLY, series_end_time? }. Keeps one-off scheduledTime. Alias for recurrence.",
                    "type": "object",
                    "additionalProperties": true
                  }
                },
                "additionalProperties": true,
                "example": {
                  "post_type": "EVENT",
                  "event": {
                    "title": "Launch night",
                    "start_date": "2026-09-01"
                  },
                  "recurrence": {
                    "type": "WEEKLY",
                    "series_end_time": "2026-12-01T00:00:00Z"
                  },
                  "cta": {
                    "type": "LEARN_MORE",
                    "url": "https://www.poster.ly"
                  }
                }
              },
              {
                "title": "Telegram settings",
                "type": "object",
                "properties": {
                  "parse_mode": {
                    "description": "Telegram caption parse mode when supported.",
                    "enum": [
                      "HTML",
                      "MarkdownV2"
                    ],
                    "type": "string"
                  },
                  "disable_web_page_preview": {
                    "description": "Disable link previews for text posts.",
                    "type": "boolean"
                  },
                  "poll": {
                    "description": "Telegram native poll: { question, options (2-10), allows_multiple_answers? }.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "telegram_poll": {
                    "description": "Telegram native poll: { question, options (2-10), allows_multiple_answers? }. Alias for poll.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "buttons": {
                    "description": "Inline CTA buttons: [{ text, url }] (up to 3).",
                    "type": "array",
                    "items": {}
                  },
                  "telegram_buttons": {
                    "description": "Inline CTA buttons: [{ text, url }] (up to 3). Alias for buttons.",
                    "type": "array",
                    "items": {}
                  },
                  "video_cover_url": {
                    "description": "Cover image URL for sendVideo (Bot API cover).",
                    "type": "string"
                  },
                  "cover_url": {
                    "description": "Cover image URL for sendVideo (Bot API cover). Alias for video_cover_url.",
                    "type": "string"
                  },
                  "telegram_video_cover_url": {
                    "description": "Cover image URL for sendVideo (Bot API cover). Alias for video_cover_url.",
                    "type": "string"
                  },
                  "start_timestamp": {
                    "description": "Video start timestamp in seconds for sendVideo (Bot API start_timestamp).",
                    "type": "number"
                  },
                  "telegram_start_timestamp": {
                    "description": "Video start timestamp in seconds for sendVideo (Bot API start_timestamp). Alias for start_timestamp.",
                    "type": "number"
                  },
                  "is_live_photo": {
                    "description": "Send as sendLivePhoto when both a still image and a video are attached.",
                    "type": "boolean"
                  },
                  "telegram_is_live_photo": {
                    "description": "Send as sendLivePhoto when both a still image and a video are attached. Alias for is_live_photo.",
                    "type": "boolean"
                  }
                },
                "additionalProperties": true,
                "example": {
                  "poll": {
                    "question": "Which feature next?",
                    "options": [
                      "Polls",
                      "Analytics"
                    ]
                  },
                  "buttons": [
                    {
                      "text": "Read more",
                      "url": "https://www.poster.ly"
                    }
                  ],
                  "video_cover_url": "https://example.com/cover.jpg"
                }
              },
              {
                "title": "Bluesky settings",
                "type": "object",
                "properties": {
                  "langs": {
                    "description": "Language tags for the Bluesky post.",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "content_label": {
                    "description": "Self-applied content warning (tap-to-reveal).",
                    "enum": [
                      "sexual",
                      "nudity",
                      "porn",
                      "graphic-media"
                    ],
                    "type": "string"
                  },
                  "content_warning": {
                    "description": "Self-applied content warning (tap-to-reveal). Alias for content_label.",
                    "enum": [
                      "sexual",
                      "nudity",
                      "porn",
                      "graphic-media"
                    ],
                    "type": "string"
                  },
                  "tags": {
                    "description": "Up to 8 hidden discovery tags (separate from in-text hashtags).",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "bluesky_tags": {
                    "description": "Up to 8 hidden discovery tags (separate from in-text hashtags). Alias for tags.",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "quote_url": {
                    "description": "A Bluesky post URL (or AT-URI) to quote.",
                    "type": "string"
                  },
                  "quote": {
                    "description": "A Bluesky post URL (or AT-URI) to quote. Alias for quote_url.",
                    "type": "string"
                  },
                  "bluesky_quote_url": {
                    "description": "A Bluesky post URL (or AT-URI) to quote. Alias for quote_url.",
                    "type": "string"
                  },
                  "disable_quotes": {
                    "description": "Prevent others from quote-posting this post (postgate).",
                    "type": "boolean"
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "langs": [
                    "en"
                  ],
                  "tags": [
                    "producthunt",
                    "launch"
                  ],
                  "quote_url": "https://bsky.app/profile/poster.ly/post/abc123"
                }
              },
              {
                "title": "Discord settings",
                "type": "object",
                "properties": {
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "media_alt_texts": {
                    "https://example.com/chart.png": "Q2 revenue chart"
                  }
                }
              },
              {
                "title": "Slack settings",
                "type": "object",
                "properties": {
                  "markdown": {
                    "description": "Send the caption as a Block Kit markdown block on chat.postMessage.",
                    "type": "boolean"
                  },
                  "slack_markdown": {
                    "description": "Send the caption as a Block Kit markdown block on chat.postMessage. Alias for markdown.",
                    "type": "boolean"
                  },
                  "blocks": {
                    "description": "Optional Block Kit blocks (markdown, card, or carousel) passed to chat.postMessage. File upload still uses getUploadURLExternal.",
                    "type": "array",
                    "items": {}
                  },
                  "slack_blocks": {
                    "description": "Optional Block Kit blocks (markdown, card, or carousel) passed to chat.postMessage. File upload still uses getUploadURLExternal. Alias for blocks.",
                    "type": "array",
                    "items": {}
                  }
                },
                "additionalProperties": true,
                "example": {
                  "markdown": true
                }
              },
              {
                "title": "Mastodon settings",
                "type": "object",
                "properties": {
                  "visibility": {
                    "description": "Status visibility (private means followers only).",
                    "enum": [
                      "public",
                      "unlisted",
                      "private"
                    ],
                    "type": "string"
                  },
                  "mastodon_visibility": {
                    "description": "Status visibility (private means followers only). Alias for visibility.",
                    "enum": [
                      "public",
                      "unlisted",
                      "private"
                    ],
                    "type": "string"
                  },
                  "spoiler_text": {
                    "description": "Content warning shown before the post is revealed (marks media sensitive).",
                    "type": "string"
                  },
                  "content_warning": {
                    "description": "Content warning shown before the post is revealed (marks media sensitive). Alias for spoiler_text.",
                    "type": "string"
                  },
                  "mastodon_spoiler_text": {
                    "description": "Content warning shown before the post is revealed (marks media sensitive). Alias for spoiler_text.",
                    "type": "string"
                  },
                  "language": {
                    "description": "ISO 639 language code for the status.",
                    "type": "string"
                  },
                  "mastodon_language": {
                    "description": "ISO 639 language code for the status. Alias for language.",
                    "type": "string"
                  },
                  "quoted_status_id": {
                    "description": "Mastodon status ID to quote (4.5+ quoted_status_id).",
                    "type": "string"
                  },
                  "quote_id": {
                    "description": "Mastodon status ID to quote (4.5+ quoted_status_id). Alias for quoted_status_id.",
                    "type": "string"
                  },
                  "mastodon_quoted_status_id": {
                    "description": "Mastodon status ID to quote (4.5+ quoted_status_id). Alias for quoted_status_id.",
                    "type": "string"
                  },
                  "poll": {
                    "description": "Mastodon poll: { options (2-4), expires_in seconds, multiple? }. Media and a poll can be combined on Mastodon 4.6+.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "mastodon_poll": {
                    "description": "Mastodon poll: { options (2-4), expires_in seconds, multiple? }. Media and a poll can be combined on Mastodon 4.6+. Alias for poll.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "visibility": "public",
                  "spoiler_text": "Launch spoilers",
                  "language": "en",
                  "quoted_status_id": "123",
                  "poll": {
                    "options": [
                      "Yes",
                      "No"
                    ],
                    "expires_in": 86400
                  }
                }
              },
              {
                "title": "Dev.to settings",
                "type": "object",
                "properties": {
                  "title": {
                    "description": "Article title. Falls back to the first line of the caption.",
                    "type": "string"
                  },
                  "devto_title": {
                    "description": "Article title. Falls back to the first line of the caption. Alias for title.",
                    "type": "string"
                  },
                  "tags": {
                    "description": "Up to 4 tags (lowercase alphanumeric).",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "devto_tags": {
                    "description": "Up to 4 tags (lowercase alphanumeric). Alias for tags.",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "canonical_url": {
                    "description": "Canonical URL when cross-posting from your own blog.",
                    "type": "string"
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "title": "How we ship 18 platforms",
                  "tags": [
                    "webdev",
                    "saas"
                  ]
                }
              },
              {
                "title": "Hashnode settings",
                "type": "object",
                "properties": {
                  "title": {
                    "description": "Post title. Falls back to the first line of the caption.",
                    "type": "string"
                  },
                  "hashnode_title": {
                    "description": "Post title. Falls back to the first line of the caption. Alias for title.",
                    "type": "string"
                  },
                  "tags": {
                    "description": "Up to 4 tags (lowercase alphanumeric).",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "hashnode_tags": {
                    "description": "Up to 4 tags (lowercase alphanumeric). Alias for tags.",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "publication_id": {
                    "description": "Target publication. Defaults to the account blog captured at connect time.",
                    "type": "string"
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "title": "How we ship 18 platforms",
                  "tags": [
                    "webdev",
                    "saas"
                  ]
                }
              },
              {
                "title": "WordPress settings",
                "type": "object",
                "properties": {
                  "title": {
                    "description": "Post title. Falls back to the first line of the caption.",
                    "type": "string"
                  },
                  "wordpress_title": {
                    "description": "Post title. Falls back to the first line of the caption. Alias for title.",
                    "type": "string"
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "title": "How we ship 18 platforms"
                }
              },
              {
                "title": "Lemmy settings",
                "type": "object",
                "properties": {
                  "community": {
                    "description": "Target community, e.g. technology or technology@lemmy.world.",
                    "type": "string"
                  },
                  "lemmy_community": {
                    "description": "Target community, e.g. technology or technology@lemmy.world. Alias for community.",
                    "type": "string"
                  },
                  "title": {
                    "description": "Post title. Falls back to the first line of the caption.",
                    "type": "string"
                  },
                  "lemmy_title": {
                    "description": "Post title. Falls back to the first line of the caption. Alias for title.",
                    "type": "string"
                  },
                  "url": {
                    "description": "Link post URL. Defaults to the first attached image.",
                    "type": "string"
                  },
                  "lemmy_url": {
                    "description": "Link post URL. Defaults to the first attached image. Alias for url.",
                    "type": "string"
                  },
                  "nsfw": {
                    "description": "Mark the post NSFW.",
                    "type": "boolean"
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "required": [
                  "community"
                ],
                "additionalProperties": true,
                "example": {
                  "community": "selfhosted@lemmy.world",
                  "title": "posterly now posts to Lemmy"
                }
              }
            ],
            "additionalProperties": true
          },
          "workspace_id": {
            "type": "string",
            "description": "Workspace ID from whoami."
          },
          "metadata": {
            "type": "object",
            "additionalProperties": true
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "Validate Post",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "create_post",
      "description": "Schedule or immediately publish one social media post. DESTRUCTIVE WRITE that creates content on the user's connected social account. Always confirm caption + scheduled_at + account_id/workspace with the user before calling. For Instagram, distinguish caption @mentions from native settings.user_tags and co-author settings.collaborators; call get_platform_schema(account_id) before either native feature. Native media tags work with eligible direct or Meta-linked accounts; collaborators require an eligible Meta-linked account. Third-party media URLs are copied into Posterly storage before the post is saved; short-lived signed URLs must still be live when this tool runs. For multiple posts, prefer create_posts_batch after confirming every item.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "account_id": {
            "type": "string",
            "description": "Social account ID from list_accounts."
          },
          "username": {
            "type": "string",
            "description": "Account username; requires platform."
          },
          "platform": {
            "type": "string",
            "enum": [
              "instagram",
              "facebook",
              "tiktok",
              "twitter",
              "linkedin",
              "youtube",
              "pinterest",
              "threads",
              "google_business",
              "telegram",
              "bluesky",
              "discord",
              "slack",
              "mastodon",
              "devto",
              "hashnode",
              "wordpress",
              "lemmy"
            ],
            "description": "Platform name when using username. Supported: instagram, facebook, tiktok, twitter, linkedin, youtube, pinterest, threads, google_business, telegram, bluesky, discord, slack, mastodon, devto, hashnode, wordpress, lemmy. Aliases x, gmb, and instagram-standalone are also accepted by the API."
          },
          "caption": {
            "type": "string",
            "description": "Post caption/text. On Instagram, @username creates a caption mention only; it is not a native media tag or collaborator invitation. Ignored when thread_posts is provided."
          },
          "scheduled_at": {
            "type": "string",
            "description": "ISO 8601 UTC datetime. Omit to publish immediately."
          },
          "media_url": {
            "type": "string",
            "format": "uri",
            "description": "Media URL. Posterly storage URLs are used as-is; third-party HTTP(S) URLs are copied into Posterly storage before the post is saved. Short-lived signed URLs must still be live when this tool runs."
          },
          "media_urls": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uri"
            },
            "description": "Media URLs. Posterly storage URLs are used as-is; third-party HTTP(S) URLs are copied into Posterly storage before the post is saved."
          },
          "post_type": {
            "type": "string",
            "enum": [
              "text",
              "image",
              "document",
              "video",
              "reel",
              "carousel",
              "story",
              "story_series",
              "x_thread",
              "threads_thread",
              "photo",
              "cover_photo",
              "post",
              "feed",
              "feed-post",
              "cover-photo",
              "photos",
              "stories",
              "reels"
            ],
            "description": "Optional post type. Omit for auto-detection from media. Supported semantic values include text, image, video, carousel, reel, story, story_series, document, x_thread, threads_thread, photo, and cover_photo."
          },
          "thread_posts": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "For X or Threads: 2+ entries, one per post in the reply chain."
          },
          "platform_settings": {
            "type": "object",
            "description": "Platform-specific composer controls. Call list_platforms or get_platform_schema for the selected account before sending settings.",
            "oneOf": [
              {
                "title": "Instagram settings",
                "type": "object",
                "properties": {
                  "__type": {
                    "description": "Instagram account type hint.",
                    "enum": [
                      "instagram",
                      "instagram-standalone"
                    ],
                    "type": "string"
                  },
                  "post_type": {
                    "description": "Instagram publishing format.",
                    "enum": [
                      "post",
                      "feed",
                      "story",
                      "reel",
                      "carousel"
                    ],
                    "type": "string"
                  },
                  "is_trial_reel": {
                    "description": "Request an Instagram Trial Reel when the account supports it.",
                    "type": "boolean"
                  },
                  "trial_reel": {
                    "description": "Request an Instagram Trial Reel when the account supports it. Alias for is_trial_reel.",
                    "type": "boolean"
                  },
                  "graduation_strategy": {
                    "description": "Trial Reel graduation strategy.",
                    "enum": [
                      "MANUAL",
                      "SS_PERFORMANCE"
                    ],
                    "type": "string"
                  },
                  "collaborators": {
                    "description": "Native co-author invitations. Meta-linked Instagram accounts only; feed images, Reels, and carousels; maximum 3; not Stories.",
                    "type": "array",
                    "items": {}
                  },
                  "user_tags": {
                    "description": "Native clickable media tags, not caption @mentions. Supported by eligible direct Instagram and Meta-linked connections; feed images, Reels/video, and Stories. Tags apply to each carousel child and the first Story in a Story Series.",
                    "type": "array",
                    "items": {}
                  },
                  "first_comment": {
                    "description": "First comment to publish after the post.",
                    "type": "string"
                  },
                  "reel_cover_url": {
                    "description": "Custom Reel cover image URL.",
                    "type": "string"
                  },
                  "cover_url": {
                    "description": "Custom Reel cover image URL. Alias for reel_cover_url.",
                    "type": "string"
                  },
                  "reel_thumb_offset": {
                    "description": "Video timestamp, in milliseconds, for a generated Reel thumbnail.",
                    "type": "number"
                  },
                  "thumb_offset": {
                    "description": "Video timestamp, in milliseconds, for a generated Reel thumbnail. Alias for reel_thumb_offset.",
                    "type": "number"
                  },
                  "is_ai_generated": {
                    "description": "Label the parent media container as AI-generated (is_ai_generated). For carousels, set this on the parent only, never on child slides.",
                    "type": "boolean"
                  },
                  "instagram_is_ai_generated": {
                    "description": "Label the parent media container as AI-generated (is_ai_generated). For carousels, set this on the parent only, never on child slides. Alias for is_ai_generated.",
                    "type": "boolean"
                  },
                  "ai_generated": {
                    "description": "Label the parent media container as AI-generated (is_ai_generated). For carousels, set this on the parent only, never on child slides. Alias for is_ai_generated.",
                    "type": "boolean"
                  },
                  "audio_id": {
                    "description": "Licensed Instagram audio ID for Reels (audio_configuration.audio_id). Meta-linked Facebook Login accounts only; hidden for Instagram Login.",
                    "type": "string"
                  },
                  "instagram_audio_id": {
                    "description": "Licensed Instagram audio ID for Reels (audio_configuration.audio_id). Meta-linked Facebook Login accounts only; hidden for Instagram Login. Alias for audio_id.",
                    "type": "string"
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "__type": "instagram",
                  "post_type": "reel",
                  "first_comment": "Full details in the caption.",
                  "is_ai_generated": true
                }
              },
              {
                "title": "Facebook settings",
                "type": "object",
                "properties": {
                  "post_type": {
                    "description": "Facebook publishing format. Reel uses the Graph Reels API and must be 90 seconds or shorter; use video for longer clips. A 90.0 second Reel is allowed.",
                    "enum": [
                      "post",
                      "feed",
                      "story",
                      "reel",
                      "cover_photo"
                    ],
                    "type": "string"
                  },
                  "text_format_preset_id": {
                    "description": "Styled text post background preset.",
                    "type": "string"
                  },
                  "background_preset_id": {
                    "description": "Styled text post background preset. Alias for text_format_preset_id.",
                    "type": "string"
                  },
                  "reel_cover_url": {
                    "description": "Custom Reel cover image URL.",
                    "type": "string"
                  },
                  "cover_url": {
                    "description": "Custom Reel cover image URL. Alias for reel_cover_url.",
                    "type": "string"
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "post_type": "reel",
                  "reel_cover_url": "https://example.com/cover.jpg"
                }
              },
              {
                "title": "TikTok settings",
                "type": "object",
                "properties": {
                  "privacy_level": {
                    "description": "TikTok direct-post privacy level from the creator info helper.",
                    "type": "string"
                  },
                  "allow_comment": {
                    "description": "Allow comments when direct posting.",
                    "type": "boolean"
                  },
                  "allow_duet": {
                    "description": "Allow duets when direct posting.",
                    "type": "boolean"
                  },
                  "allow_stitch": {
                    "description": "Allow stitches when direct posting.",
                    "type": "boolean"
                  },
                  "title": {
                    "description": "TikTok title/caption field.",
                    "type": "string"
                  },
                  "media_type": {
                    "description": "Set to PHOTO for TikTok photo posts or multi-photo slideshows.",
                    "enum": [
                      "PHOTO"
                    ],
                    "type": "string"
                  },
                  "photo_cover_index": {
                    "description": "Zero-based cover image index for TikTok photo posts.",
                    "type": "number"
                  },
                  "video_cover_timestamp_ms": {
                    "description": "Millisecond timestamp of the video frame to use as the cover (direct post only).",
                    "type": "number"
                  },
                  "cover_timestamp_ms": {
                    "description": "Millisecond timestamp of the video frame to use as the cover (direct post only). Alias for video_cover_timestamp_ms.",
                    "type": "number"
                  },
                  "auto_add_music": {
                    "description": "Ask TikTok to add recommended music to photo posts when direct posting.",
                    "type": "boolean"
                  },
                  "is_commercial_content": {
                    "description": "TikTok commercial content disclosure.",
                    "type": "boolean"
                  },
                  "is_your_brand": {
                    "description": "TikTok branded content: your own brand.",
                    "type": "boolean"
                  },
                  "is_branded_content": {
                    "description": "TikTok branded content: third-party brand.",
                    "type": "boolean"
                  },
                  "ai_generated": {
                    "description": "Label the post as AI-generated (TikTok is_aigc).",
                    "type": "boolean"
                  },
                  "ai_disclosure": {
                    "description": "Label the post as AI-generated (TikTok is_aigc). Alias for ai_generated.",
                    "type": "boolean"
                  }
                },
                "additionalProperties": true,
                "example": {
                  "privacy_level": "PUBLIC_TO_EVERYONE",
                  "media_type": "PHOTO",
                  "photo_cover_index": 0,
                  "auto_add_music": true,
                  "allow_comment": true,
                  "allow_duet": false,
                  "allow_stitch": false,
                  "video_cover_timestamp_ms": 1500
                }
              },
              {
                "title": "X settings",
                "type": "object",
                "properties": {
                  "reply_settings": {
                    "description": "Who can reply to the post.",
                    "enum": [
                      "everyone",
                      "following",
                      "mentionedUsers",
                      "subscribers",
                      "verified"
                    ],
                    "type": "string"
                  },
                  "x_reply_settings": {
                    "description": "Who can reply to the post. Alias for reply_settings.",
                    "enum": [
                      "everyone",
                      "following",
                      "mentionedUsers",
                      "subscribers",
                      "verified"
                    ],
                    "type": "string"
                  },
                  "poll": {
                    "description": "X poll settings: options and duration_minutes.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "x_poll": {
                    "description": "X poll settings: options and duration_minutes. Alias for poll.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "ai_generated": {
                    "description": "Label the post as AI-generated (X made_with_ai).",
                    "type": "boolean"
                  },
                  "ai_disclosure": {
                    "description": "Label the post as AI-generated (X made_with_ai). Alias for ai_generated.",
                    "type": "boolean"
                  },
                  "made_with_ai": {
                    "description": "Label the post as AI-generated (X made_with_ai). Alias for ai_generated.",
                    "type": "boolean"
                  },
                  "paid_partnership": {
                    "description": "Mark the post as a paid partnership (POST /2/tweets paid_partnership). Existing tweet.write.",
                    "type": "boolean"
                  },
                  "x_paid_partnership": {
                    "description": "Mark the post as a paid partnership (POST /2/tweets paid_partnership). Existing tweet.write. Alias for paid_partnership.",
                    "type": "boolean"
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "reply_settings": "following",
                  "poll": {
                    "options": [
                      "Yes",
                      "No"
                    ],
                    "duration_minutes": 1440
                  },
                  "paid_partnership": true
                }
              },
              {
                "title": "LinkedIn settings",
                "type": "object",
                "properties": {
                  "document_title": {
                    "description": "Title for a LinkedIn PDF/document post.",
                    "type": "string"
                  },
                  "linkedin_document_title": {
                    "description": "Title for a LinkedIn PDF/document post. Alias for document_title.",
                    "type": "string"
                  },
                  "document_filename": {
                    "description": "Filename for a LinkedIn document post.",
                    "type": "string"
                  },
                  "mentions": {
                    "description": "LinkedIn organization mention objects.",
                    "type": "array",
                    "items": {}
                  },
                  "linkedin_mentions": {
                    "description": "LinkedIn organization mention objects. Alias for mentions.",
                    "type": "array",
                    "items": {}
                  },
                  "poll": {
                    "description": "LinkedIn poll: { question, options (2-4), duration (ONE_DAY|THREE_DAYS|SEVEN_DAYS|FOURTEEN_DAYS) }. Mutually exclusive with media.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "linkedin_poll": {
                    "description": "LinkedIn poll: { question, options (2-4), duration (ONE_DAY|THREE_DAYS|SEVEN_DAYS|FOURTEEN_DAYS) }. Mutually exclusive with media. Alias for poll.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "thumbnail_url": {
                    "description": "Custom video thumbnail URL.",
                    "type": "string"
                  },
                  "content_call_to_action_label": {
                    "description": "LinkedIn contentCallToActionLabel, including BUY_NOW and SHOP_NOW (version 202504). Pair with content_landing_page.",
                    "enum": [
                      "APPLY",
                      "DOWNLOAD",
                      "VIEW_QUOTE",
                      "LEARN_MORE",
                      "SIGN_UP",
                      "SUBSCRIBE",
                      "REGISTER",
                      "JOIN",
                      "ATTEND",
                      "REQUEST_DEMO",
                      "SEE_MORE",
                      "BUY_NOW",
                      "SHOP_NOW"
                    ],
                    "type": "string"
                  },
                  "cta_label": {
                    "description": "LinkedIn contentCallToActionLabel, including BUY_NOW and SHOP_NOW (version 202504). Pair with content_landing_page. Alias for content_call_to_action_label.",
                    "enum": [
                      "APPLY",
                      "DOWNLOAD",
                      "VIEW_QUOTE",
                      "LEARN_MORE",
                      "SIGN_UP",
                      "SUBSCRIBE",
                      "REGISTER",
                      "JOIN",
                      "ATTEND",
                      "REQUEST_DEMO",
                      "SEE_MORE",
                      "BUY_NOW",
                      "SHOP_NOW"
                    ],
                    "type": "string"
                  },
                  "linkedin_cta_label": {
                    "description": "LinkedIn contentCallToActionLabel, including BUY_NOW and SHOP_NOW (version 202504). Pair with content_landing_page. Alias for content_call_to_action_label.",
                    "enum": [
                      "APPLY",
                      "DOWNLOAD",
                      "VIEW_QUOTE",
                      "LEARN_MORE",
                      "SIGN_UP",
                      "SUBSCRIBE",
                      "REGISTER",
                      "JOIN",
                      "ATTEND",
                      "REQUEST_DEMO",
                      "SEE_MORE",
                      "BUY_NOW",
                      "SHOP_NOW"
                    ],
                    "type": "string"
                  },
                  "content_landing_page": {
                    "description": "Landing page URL sent as contentLandingPage with the LinkedIn call to action.",
                    "type": "string"
                  },
                  "cta_url": {
                    "description": "Landing page URL sent as contentLandingPage with the LinkedIn call to action. Alias for content_landing_page.",
                    "type": "string"
                  },
                  "linkedin_cta_url": {
                    "description": "Landing page URL sent as contentLandingPage with the LinkedIn call to action. Alias for content_landing_page.",
                    "type": "string"
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "document_title": "Launch plan",
                  "mentions": [
                    {
                      "display_name": "posterly",
                      "urn": "urn:li:organization:123"
                    }
                  ],
                  "poll": {
                    "question": "Which feature next?",
                    "options": [
                      "Polls",
                      "Analytics"
                    ],
                    "duration": "THREE_DAYS"
                  },
                  "content_call_to_action_label": "BUY_NOW",
                  "content_landing_page": "https://www.poster.ly"
                }
              },
              {
                "title": "YouTube settings",
                "type": "object",
                "properties": {
                  "title": {
                    "description": "YouTube video title.",
                    "type": "string"
                  },
                  "youtube_title": {
                    "description": "YouTube video title. Alias for title.",
                    "type": "string"
                  },
                  "thumbnail_url": {
                    "description": "Custom YouTube thumbnail URL.",
                    "type": "string"
                  },
                  "privacy_status": {
                    "description": "YouTube video visibility.",
                    "enum": [
                      "public",
                      "unlisted",
                      "private"
                    ],
                    "type": "string"
                  },
                  "privacy": {
                    "description": "YouTube video visibility. Alias for privacy_status.",
                    "enum": [
                      "public",
                      "unlisted",
                      "private"
                    ],
                    "type": "string"
                  },
                  "made_for_kids": {
                    "description": "YouTube made-for-kids declaration.",
                    "type": "boolean"
                  },
                  "tags": {
                    "description": "YouTube tags.",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "category_id": {
                    "description": "YouTube category ID.",
                    "type": "string"
                  },
                  "notify_subscribers": {
                    "description": "Notify subscribers when the video publishes (default true).",
                    "type": "boolean"
                  },
                  "add_shorts_hashtag": {
                    "description": "Append #Shorts to the description for Shorts-feed eligibility (vertical clips).",
                    "type": "boolean"
                  },
                  "ai_generated": {
                    "description": "Label the video as containing AI/synthetic media (containsSyntheticMedia).",
                    "type": "boolean"
                  },
                  "ai_disclosure": {
                    "description": "Label the video as containing AI/synthetic media (containsSyntheticMedia). Alias for ai_generated.",
                    "type": "boolean"
                  },
                  "brand_partner": {
                    "description": "Optional YouTube brandPartner channel ID (UC…) or handle (@…). Added to videos.insert part=brandPartner when set.",
                    "type": "string"
                  },
                  "brandPartner": {
                    "description": "Optional YouTube brandPartner channel ID (UC…) or handle (@…). Added to videos.insert part=brandPartner when set. Alias for brand_partner.",
                    "type": "string"
                  }
                },
                "required": [
                  "title"
                ],
                "additionalProperties": true,
                "example": {
                  "title": "Launch walkthrough",
                  "privacy_status": "unlisted",
                  "notify_subscribers": false,
                  "add_shorts_hashtag": true,
                  "brand_partner": "@brand"
                }
              },
              {
                "title": "Pinterest settings",
                "type": "object",
                "properties": {
                  "board_id": {
                    "description": "Pinterest board ID from the pinterest.boards helper.",
                    "type": "string"
                  },
                  "pinterest_board_id": {
                    "description": "Pinterest board ID from the pinterest.boards helper. Alias for board_id.",
                    "type": "string"
                  },
                  "title": {
                    "description": "Pinterest Pin title.",
                    "type": "string"
                  },
                  "link": {
                    "description": "Destination URL for the Pin.",
                    "type": "string"
                  },
                  "destination_url": {
                    "description": "Destination URL for the Pin. Alias for link.",
                    "type": "string"
                  },
                  "cover_image_url": {
                    "description": "Required for video Pins: a stored, probe-verified JPEG or PNG cover URL (20 MiB maximum).",
                    "type": "string"
                  },
                  "video_cover_url": {
                    "description": "Required for video Pins: a stored, probe-verified JPEG or PNG cover URL (20 MiB maximum). Alias for cover_image_url.",
                    "type": "string"
                  },
                  "pinterest_cover_image_url": {
                    "description": "Required for video Pins: a stored, probe-verified JPEG or PNG cover URL (20 MiB maximum). Alias for cover_image_url.",
                    "type": "string"
                  },
                  "ai_generated": {
                    "description": "Label the Pin as AI-modified (ai_disclosures).",
                    "type": "boolean"
                  },
                  "ai_disclosure": {
                    "description": "Label the Pin as AI-modified (ai_disclosures). Alias for ai_generated.",
                    "type": "boolean"
                  },
                  "product_tags": {
                    "description": "Optional product tags on POST /v5/pins (product_id, optional x/y). Existing pins:write. Pin note is not written.",
                    "type": "array",
                    "items": {}
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "required": [
                  "board_id"
                ],
                "additionalProperties": true,
                "example": {
                  "board_id": "123456789",
                  "title": "Launch ideas",
                  "link": "https://www.poster.ly",
                  "cover_image_url": "https://assets.poster.ly/users/123/pinterest-video-covers/cover.jpg",
                  "product_tags": [
                    {
                      "product_id": "123"
                    }
                  ]
                }
              },
              {
                "title": "Threads settings",
                "type": "object",
                "properties": {
                  "reply_control": {
                    "description": "Threads reply control setting.",
                    "enum": [
                      "everyone",
                      "accounts_you_follow",
                      "mentioned_only",
                      "followers_only",
                      "parent_post_author_only"
                    ],
                    "type": "string"
                  },
                  "threads_reply_control": {
                    "description": "Threads reply control setting. Alias for reply_control.",
                    "enum": [
                      "everyone",
                      "accounts_you_follow",
                      "mentioned_only",
                      "followers_only",
                      "parent_post_author_only"
                    ],
                    "type": "string"
                  },
                  "poll": {
                    "description": "Threads poll: { options (2-4) }. Text-only, fixed 24h duration.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "threads_poll": {
                    "description": "Threads poll: { options (2-4) }. Text-only, fixed 24h duration. Alias for poll.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "topic_tag": {
                    "description": "A single Threads topic tag (1-50 chars, no periods/ampersands).",
                    "type": "string"
                  },
                  "threads_topic_tag": {
                    "description": "A single Threads topic tag (1-50 chars, no periods/ampersands). Alias for topic_tag.",
                    "type": "string"
                  },
                  "text_attachment": {
                    "description": "Long-form Threads text attachment.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "threads_text_attachment": {
                    "description": "Long-form Threads text attachment. Alias for text_attachment.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "share_to_instagram": {
                    "description": "Also share the published post to the Instagram account linked to the Threads profile as a Story (dark card). Requires Instagram sharing enabled for the Threads profile in the Threads app.",
                    "type": "boolean"
                  },
                  "threads_share_to_instagram": {
                    "description": "Also share the published post to the Instagram account linked to the Threads profile as a Story (dark card). Requires Instagram sharing enabled for the Threads profile in the Threads app. Alias for share_to_instagram.",
                    "type": "boolean"
                  },
                  "is_ghost_post": {
                    "description": "Publish as a Threads ghost post. Text-only.",
                    "type": "boolean"
                  },
                  "threads_is_ghost_post": {
                    "description": "Publish as a Threads ghost post. Text-only. Alias for is_ghost_post.",
                    "type": "boolean"
                  },
                  "is_spoiler": {
                    "description": "Mark the Threads post as a spoiler (full-caption text entity and/or is_spoiler_media).",
                    "type": "boolean"
                  },
                  "threads_is_spoiler": {
                    "description": "Mark the Threads post as a spoiler (full-caption text entity and/or is_spoiler_media). Alias for is_spoiler.",
                    "type": "boolean"
                  },
                  "is_spoiler_media": {
                    "description": "Set is_spoiler_media on the Threads container when media is attached.",
                    "type": "boolean"
                  },
                  "threads_is_spoiler_media": {
                    "description": "Set is_spoiler_media on the Threads container when media is attached. Alias for is_spoiler_media.",
                    "type": "boolean"
                  },
                  "text_entities": {
                    "description": "Threads text_entities, for example spoiler ranges with entity_type, offset, and length.",
                    "type": "array",
                    "items": {}
                  },
                  "threads_text_entities": {
                    "description": "Threads text_entities, for example spoiler ranges with entity_type, offset, and length. Alias for text_entities.",
                    "type": "array",
                    "items": {}
                  },
                  "enable_reply_approvals": {
                    "description": "Require approval before replies appear (enable_reply_approvals).",
                    "type": "boolean"
                  },
                  "threads_enable_reply_approvals": {
                    "description": "Require approval before replies appear (enable_reply_approvals). Alias for enable_reply_approvals.",
                    "type": "boolean"
                  },
                  "gif_attachment": {
                    "description": "GIPHY gif_attachment: { gif_id, provider: \"GIPHY\" }. Tenor is not supported.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "threads_gif_attachment": {
                    "description": "GIPHY gif_attachment: { gif_id, provider: \"GIPHY\" }. Tenor is not supported. Alias for gif_attachment.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "reply_control": "everyone",
                  "poll": {
                    "options": [
                      "Polls",
                      "Analytics"
                    ]
                  },
                  "topic_tag": "producthunt",
                  "is_ghost_post": false,
                  "enable_reply_approvals": true
                }
              },
              {
                "title": "Google Business settings",
                "type": "object",
                "properties": {
                  "post_type": {
                    "description": "Google Business Profile post type.",
                    "enum": [
                      "STANDARD",
                      "EVENT",
                      "OFFER"
                    ],
                    "type": "string"
                  },
                  "topic_type": {
                    "description": "Google Business Profile post type. Alias for post_type.",
                    "enum": [
                      "STANDARD",
                      "EVENT",
                      "OFFER"
                    ],
                    "type": "string"
                  },
                  "event": {
                    "description": "Event title and start/end date/time.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "offer": {
                    "description": "Offer coupon, redeem URL, and terms.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "cta": {
                    "description": "CTA type and URL.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "recurrence": {
                    "description": "EVENT/OFFER recurrenceInfo: { type: DAILY|WEEKLY|MONTHLY, series_end_time? }. Keeps one-off scheduledTime.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "recurrenceInfo": {
                    "description": "EVENT/OFFER recurrenceInfo: { type: DAILY|WEEKLY|MONTHLY, series_end_time? }. Keeps one-off scheduledTime. Alias for recurrence.",
                    "type": "object",
                    "additionalProperties": true
                  }
                },
                "additionalProperties": true,
                "example": {
                  "post_type": "EVENT",
                  "event": {
                    "title": "Launch night",
                    "start_date": "2026-09-01"
                  },
                  "recurrence": {
                    "type": "WEEKLY",
                    "series_end_time": "2026-12-01T00:00:00Z"
                  },
                  "cta": {
                    "type": "LEARN_MORE",
                    "url": "https://www.poster.ly"
                  }
                }
              },
              {
                "title": "Telegram settings",
                "type": "object",
                "properties": {
                  "parse_mode": {
                    "description": "Telegram caption parse mode when supported.",
                    "enum": [
                      "HTML",
                      "MarkdownV2"
                    ],
                    "type": "string"
                  },
                  "disable_web_page_preview": {
                    "description": "Disable link previews for text posts.",
                    "type": "boolean"
                  },
                  "poll": {
                    "description": "Telegram native poll: { question, options (2-10), allows_multiple_answers? }.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "telegram_poll": {
                    "description": "Telegram native poll: { question, options (2-10), allows_multiple_answers? }. Alias for poll.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "buttons": {
                    "description": "Inline CTA buttons: [{ text, url }] (up to 3).",
                    "type": "array",
                    "items": {}
                  },
                  "telegram_buttons": {
                    "description": "Inline CTA buttons: [{ text, url }] (up to 3). Alias for buttons.",
                    "type": "array",
                    "items": {}
                  },
                  "video_cover_url": {
                    "description": "Cover image URL for sendVideo (Bot API cover).",
                    "type": "string"
                  },
                  "cover_url": {
                    "description": "Cover image URL for sendVideo (Bot API cover). Alias for video_cover_url.",
                    "type": "string"
                  },
                  "telegram_video_cover_url": {
                    "description": "Cover image URL for sendVideo (Bot API cover). Alias for video_cover_url.",
                    "type": "string"
                  },
                  "start_timestamp": {
                    "description": "Video start timestamp in seconds for sendVideo (Bot API start_timestamp).",
                    "type": "number"
                  },
                  "telegram_start_timestamp": {
                    "description": "Video start timestamp in seconds for sendVideo (Bot API start_timestamp). Alias for start_timestamp.",
                    "type": "number"
                  },
                  "is_live_photo": {
                    "description": "Send as sendLivePhoto when both a still image and a video are attached.",
                    "type": "boolean"
                  },
                  "telegram_is_live_photo": {
                    "description": "Send as sendLivePhoto when both a still image and a video are attached. Alias for is_live_photo.",
                    "type": "boolean"
                  }
                },
                "additionalProperties": true,
                "example": {
                  "poll": {
                    "question": "Which feature next?",
                    "options": [
                      "Polls",
                      "Analytics"
                    ]
                  },
                  "buttons": [
                    {
                      "text": "Read more",
                      "url": "https://www.poster.ly"
                    }
                  ],
                  "video_cover_url": "https://example.com/cover.jpg"
                }
              },
              {
                "title": "Bluesky settings",
                "type": "object",
                "properties": {
                  "langs": {
                    "description": "Language tags for the Bluesky post.",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "content_label": {
                    "description": "Self-applied content warning (tap-to-reveal).",
                    "enum": [
                      "sexual",
                      "nudity",
                      "porn",
                      "graphic-media"
                    ],
                    "type": "string"
                  },
                  "content_warning": {
                    "description": "Self-applied content warning (tap-to-reveal). Alias for content_label.",
                    "enum": [
                      "sexual",
                      "nudity",
                      "porn",
                      "graphic-media"
                    ],
                    "type": "string"
                  },
                  "tags": {
                    "description": "Up to 8 hidden discovery tags (separate from in-text hashtags).",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "bluesky_tags": {
                    "description": "Up to 8 hidden discovery tags (separate from in-text hashtags). Alias for tags.",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "quote_url": {
                    "description": "A Bluesky post URL (or AT-URI) to quote.",
                    "type": "string"
                  },
                  "quote": {
                    "description": "A Bluesky post URL (or AT-URI) to quote. Alias for quote_url.",
                    "type": "string"
                  },
                  "bluesky_quote_url": {
                    "description": "A Bluesky post URL (or AT-URI) to quote. Alias for quote_url.",
                    "type": "string"
                  },
                  "disable_quotes": {
                    "description": "Prevent others from quote-posting this post (postgate).",
                    "type": "boolean"
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "langs": [
                    "en"
                  ],
                  "tags": [
                    "producthunt",
                    "launch"
                  ],
                  "quote_url": "https://bsky.app/profile/poster.ly/post/abc123"
                }
              },
              {
                "title": "Discord settings",
                "type": "object",
                "properties": {
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "media_alt_texts": {
                    "https://example.com/chart.png": "Q2 revenue chart"
                  }
                }
              },
              {
                "title": "Slack settings",
                "type": "object",
                "properties": {
                  "markdown": {
                    "description": "Send the caption as a Block Kit markdown block on chat.postMessage.",
                    "type": "boolean"
                  },
                  "slack_markdown": {
                    "description": "Send the caption as a Block Kit markdown block on chat.postMessage. Alias for markdown.",
                    "type": "boolean"
                  },
                  "blocks": {
                    "description": "Optional Block Kit blocks (markdown, card, or carousel) passed to chat.postMessage. File upload still uses getUploadURLExternal.",
                    "type": "array",
                    "items": {}
                  },
                  "slack_blocks": {
                    "description": "Optional Block Kit blocks (markdown, card, or carousel) passed to chat.postMessage. File upload still uses getUploadURLExternal. Alias for blocks.",
                    "type": "array",
                    "items": {}
                  }
                },
                "additionalProperties": true,
                "example": {
                  "markdown": true
                }
              },
              {
                "title": "Mastodon settings",
                "type": "object",
                "properties": {
                  "visibility": {
                    "description": "Status visibility (private means followers only).",
                    "enum": [
                      "public",
                      "unlisted",
                      "private"
                    ],
                    "type": "string"
                  },
                  "mastodon_visibility": {
                    "description": "Status visibility (private means followers only). Alias for visibility.",
                    "enum": [
                      "public",
                      "unlisted",
                      "private"
                    ],
                    "type": "string"
                  },
                  "spoiler_text": {
                    "description": "Content warning shown before the post is revealed (marks media sensitive).",
                    "type": "string"
                  },
                  "content_warning": {
                    "description": "Content warning shown before the post is revealed (marks media sensitive). Alias for spoiler_text.",
                    "type": "string"
                  },
                  "mastodon_spoiler_text": {
                    "description": "Content warning shown before the post is revealed (marks media sensitive). Alias for spoiler_text.",
                    "type": "string"
                  },
                  "language": {
                    "description": "ISO 639 language code for the status.",
                    "type": "string"
                  },
                  "mastodon_language": {
                    "description": "ISO 639 language code for the status. Alias for language.",
                    "type": "string"
                  },
                  "quoted_status_id": {
                    "description": "Mastodon status ID to quote (4.5+ quoted_status_id).",
                    "type": "string"
                  },
                  "quote_id": {
                    "description": "Mastodon status ID to quote (4.5+ quoted_status_id). Alias for quoted_status_id.",
                    "type": "string"
                  },
                  "mastodon_quoted_status_id": {
                    "description": "Mastodon status ID to quote (4.5+ quoted_status_id). Alias for quoted_status_id.",
                    "type": "string"
                  },
                  "poll": {
                    "description": "Mastodon poll: { options (2-4), expires_in seconds, multiple? }. Media and a poll can be combined on Mastodon 4.6+.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "mastodon_poll": {
                    "description": "Mastodon poll: { options (2-4), expires_in seconds, multiple? }. Media and a poll can be combined on Mastodon 4.6+. Alias for poll.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "visibility": "public",
                  "spoiler_text": "Launch spoilers",
                  "language": "en",
                  "quoted_status_id": "123",
                  "poll": {
                    "options": [
                      "Yes",
                      "No"
                    ],
                    "expires_in": 86400
                  }
                }
              },
              {
                "title": "Dev.to settings",
                "type": "object",
                "properties": {
                  "title": {
                    "description": "Article title. Falls back to the first line of the caption.",
                    "type": "string"
                  },
                  "devto_title": {
                    "description": "Article title. Falls back to the first line of the caption. Alias for title.",
                    "type": "string"
                  },
                  "tags": {
                    "description": "Up to 4 tags (lowercase alphanumeric).",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "devto_tags": {
                    "description": "Up to 4 tags (lowercase alphanumeric). Alias for tags.",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "canonical_url": {
                    "description": "Canonical URL when cross-posting from your own blog.",
                    "type": "string"
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "title": "How we ship 18 platforms",
                  "tags": [
                    "webdev",
                    "saas"
                  ]
                }
              },
              {
                "title": "Hashnode settings",
                "type": "object",
                "properties": {
                  "title": {
                    "description": "Post title. Falls back to the first line of the caption.",
                    "type": "string"
                  },
                  "hashnode_title": {
                    "description": "Post title. Falls back to the first line of the caption. Alias for title.",
                    "type": "string"
                  },
                  "tags": {
                    "description": "Up to 4 tags (lowercase alphanumeric).",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "hashnode_tags": {
                    "description": "Up to 4 tags (lowercase alphanumeric). Alias for tags.",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "publication_id": {
                    "description": "Target publication. Defaults to the account blog captured at connect time.",
                    "type": "string"
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "title": "How we ship 18 platforms",
                  "tags": [
                    "webdev",
                    "saas"
                  ]
                }
              },
              {
                "title": "WordPress settings",
                "type": "object",
                "properties": {
                  "title": {
                    "description": "Post title. Falls back to the first line of the caption.",
                    "type": "string"
                  },
                  "wordpress_title": {
                    "description": "Post title. Falls back to the first line of the caption. Alias for title.",
                    "type": "string"
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "title": "How we ship 18 platforms"
                }
              },
              {
                "title": "Lemmy settings",
                "type": "object",
                "properties": {
                  "community": {
                    "description": "Target community, e.g. technology or technology@lemmy.world.",
                    "type": "string"
                  },
                  "lemmy_community": {
                    "description": "Target community, e.g. technology or technology@lemmy.world. Alias for community.",
                    "type": "string"
                  },
                  "title": {
                    "description": "Post title. Falls back to the first line of the caption.",
                    "type": "string"
                  },
                  "lemmy_title": {
                    "description": "Post title. Falls back to the first line of the caption. Alias for title.",
                    "type": "string"
                  },
                  "url": {
                    "description": "Link post URL. Defaults to the first attached image.",
                    "type": "string"
                  },
                  "lemmy_url": {
                    "description": "Link post URL. Defaults to the first attached image. Alias for url.",
                    "type": "string"
                  },
                  "nsfw": {
                    "description": "Mark the post NSFW.",
                    "type": "boolean"
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "required": [
                  "community"
                ],
                "additionalProperties": true,
                "example": {
                  "community": "selfhosted@lemmy.world",
                  "title": "posterly now posts to Lemmy"
                }
              }
            ],
            "additionalProperties": true
          },
          "instagram_settings": {
            "type": "object",
            "description": "Platform-specific composer controls. Call list_platforms or get_platform_schema for the selected account before sending settings.",
            "oneOf": [
              {
                "title": "Instagram settings",
                "type": "object",
                "properties": {
                  "__type": {
                    "description": "Instagram account type hint.",
                    "enum": [
                      "instagram",
                      "instagram-standalone"
                    ],
                    "type": "string"
                  },
                  "post_type": {
                    "description": "Instagram publishing format.",
                    "enum": [
                      "post",
                      "feed",
                      "story",
                      "reel",
                      "carousel"
                    ],
                    "type": "string"
                  },
                  "is_trial_reel": {
                    "description": "Request an Instagram Trial Reel when the account supports it.",
                    "type": "boolean"
                  },
                  "trial_reel": {
                    "description": "Request an Instagram Trial Reel when the account supports it. Alias for is_trial_reel.",
                    "type": "boolean"
                  },
                  "graduation_strategy": {
                    "description": "Trial Reel graduation strategy.",
                    "enum": [
                      "MANUAL",
                      "SS_PERFORMANCE"
                    ],
                    "type": "string"
                  },
                  "collaborators": {
                    "description": "Native co-author invitations. Meta-linked Instagram accounts only; feed images, Reels, and carousels; maximum 3; not Stories.",
                    "type": "array",
                    "items": {}
                  },
                  "user_tags": {
                    "description": "Native clickable media tags, not caption @mentions. Supported by eligible direct Instagram and Meta-linked connections; feed images, Reels/video, and Stories. Tags apply to each carousel child and the first Story in a Story Series.",
                    "type": "array",
                    "items": {}
                  },
                  "first_comment": {
                    "description": "First comment to publish after the post.",
                    "type": "string"
                  },
                  "reel_cover_url": {
                    "description": "Custom Reel cover image URL.",
                    "type": "string"
                  },
                  "cover_url": {
                    "description": "Custom Reel cover image URL. Alias for reel_cover_url.",
                    "type": "string"
                  },
                  "reel_thumb_offset": {
                    "description": "Video timestamp, in milliseconds, for a generated Reel thumbnail.",
                    "type": "number"
                  },
                  "thumb_offset": {
                    "description": "Video timestamp, in milliseconds, for a generated Reel thumbnail. Alias for reel_thumb_offset.",
                    "type": "number"
                  },
                  "is_ai_generated": {
                    "description": "Label the parent media container as AI-generated (is_ai_generated). For carousels, set this on the parent only, never on child slides.",
                    "type": "boolean"
                  },
                  "instagram_is_ai_generated": {
                    "description": "Label the parent media container as AI-generated (is_ai_generated). For carousels, set this on the parent only, never on child slides. Alias for is_ai_generated.",
                    "type": "boolean"
                  },
                  "ai_generated": {
                    "description": "Label the parent media container as AI-generated (is_ai_generated). For carousels, set this on the parent only, never on child slides. Alias for is_ai_generated.",
                    "type": "boolean"
                  },
                  "audio_id": {
                    "description": "Licensed Instagram audio ID for Reels (audio_configuration.audio_id). Meta-linked Facebook Login accounts only; hidden for Instagram Login.",
                    "type": "string"
                  },
                  "instagram_audio_id": {
                    "description": "Licensed Instagram audio ID for Reels (audio_configuration.audio_id). Meta-linked Facebook Login accounts only; hidden for Instagram Login. Alias for audio_id.",
                    "type": "string"
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "__type": "instagram",
                  "post_type": "reel",
                  "first_comment": "Full details in the caption.",
                  "is_ai_generated": true
                }
              },
              {
                "title": "Facebook settings",
                "type": "object",
                "properties": {
                  "post_type": {
                    "description": "Facebook publishing format. Reel uses the Graph Reels API and must be 90 seconds or shorter; use video for longer clips. A 90.0 second Reel is allowed.",
                    "enum": [
                      "post",
                      "feed",
                      "story",
                      "reel",
                      "cover_photo"
                    ],
                    "type": "string"
                  },
                  "text_format_preset_id": {
                    "description": "Styled text post background preset.",
                    "type": "string"
                  },
                  "background_preset_id": {
                    "description": "Styled text post background preset. Alias for text_format_preset_id.",
                    "type": "string"
                  },
                  "reel_cover_url": {
                    "description": "Custom Reel cover image URL.",
                    "type": "string"
                  },
                  "cover_url": {
                    "description": "Custom Reel cover image URL. Alias for reel_cover_url.",
                    "type": "string"
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "post_type": "reel",
                  "reel_cover_url": "https://example.com/cover.jpg"
                }
              },
              {
                "title": "TikTok settings",
                "type": "object",
                "properties": {
                  "privacy_level": {
                    "description": "TikTok direct-post privacy level from the creator info helper.",
                    "type": "string"
                  },
                  "allow_comment": {
                    "description": "Allow comments when direct posting.",
                    "type": "boolean"
                  },
                  "allow_duet": {
                    "description": "Allow duets when direct posting.",
                    "type": "boolean"
                  },
                  "allow_stitch": {
                    "description": "Allow stitches when direct posting.",
                    "type": "boolean"
                  },
                  "title": {
                    "description": "TikTok title/caption field.",
                    "type": "string"
                  },
                  "media_type": {
                    "description": "Set to PHOTO for TikTok photo posts or multi-photo slideshows.",
                    "enum": [
                      "PHOTO"
                    ],
                    "type": "string"
                  },
                  "photo_cover_index": {
                    "description": "Zero-based cover image index for TikTok photo posts.",
                    "type": "number"
                  },
                  "video_cover_timestamp_ms": {
                    "description": "Millisecond timestamp of the video frame to use as the cover (direct post only).",
                    "type": "number"
                  },
                  "cover_timestamp_ms": {
                    "description": "Millisecond timestamp of the video frame to use as the cover (direct post only). Alias for video_cover_timestamp_ms.",
                    "type": "number"
                  },
                  "auto_add_music": {
                    "description": "Ask TikTok to add recommended music to photo posts when direct posting.",
                    "type": "boolean"
                  },
                  "is_commercial_content": {
                    "description": "TikTok commercial content disclosure.",
                    "type": "boolean"
                  },
                  "is_your_brand": {
                    "description": "TikTok branded content: your own brand.",
                    "type": "boolean"
                  },
                  "is_branded_content": {
                    "description": "TikTok branded content: third-party brand.",
                    "type": "boolean"
                  },
                  "ai_generated": {
                    "description": "Label the post as AI-generated (TikTok is_aigc).",
                    "type": "boolean"
                  },
                  "ai_disclosure": {
                    "description": "Label the post as AI-generated (TikTok is_aigc). Alias for ai_generated.",
                    "type": "boolean"
                  }
                },
                "additionalProperties": true,
                "example": {
                  "privacy_level": "PUBLIC_TO_EVERYONE",
                  "media_type": "PHOTO",
                  "photo_cover_index": 0,
                  "auto_add_music": true,
                  "allow_comment": true,
                  "allow_duet": false,
                  "allow_stitch": false,
                  "video_cover_timestamp_ms": 1500
                }
              },
              {
                "title": "X settings",
                "type": "object",
                "properties": {
                  "reply_settings": {
                    "description": "Who can reply to the post.",
                    "enum": [
                      "everyone",
                      "following",
                      "mentionedUsers",
                      "subscribers",
                      "verified"
                    ],
                    "type": "string"
                  },
                  "x_reply_settings": {
                    "description": "Who can reply to the post. Alias for reply_settings.",
                    "enum": [
                      "everyone",
                      "following",
                      "mentionedUsers",
                      "subscribers",
                      "verified"
                    ],
                    "type": "string"
                  },
                  "poll": {
                    "description": "X poll settings: options and duration_minutes.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "x_poll": {
                    "description": "X poll settings: options and duration_minutes. Alias for poll.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "ai_generated": {
                    "description": "Label the post as AI-generated (X made_with_ai).",
                    "type": "boolean"
                  },
                  "ai_disclosure": {
                    "description": "Label the post as AI-generated (X made_with_ai). Alias for ai_generated.",
                    "type": "boolean"
                  },
                  "made_with_ai": {
                    "description": "Label the post as AI-generated (X made_with_ai). Alias for ai_generated.",
                    "type": "boolean"
                  },
                  "paid_partnership": {
                    "description": "Mark the post as a paid partnership (POST /2/tweets paid_partnership). Existing tweet.write.",
                    "type": "boolean"
                  },
                  "x_paid_partnership": {
                    "description": "Mark the post as a paid partnership (POST /2/tweets paid_partnership). Existing tweet.write. Alias for paid_partnership.",
                    "type": "boolean"
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "reply_settings": "following",
                  "poll": {
                    "options": [
                      "Yes",
                      "No"
                    ],
                    "duration_minutes": 1440
                  },
                  "paid_partnership": true
                }
              },
              {
                "title": "LinkedIn settings",
                "type": "object",
                "properties": {
                  "document_title": {
                    "description": "Title for a LinkedIn PDF/document post.",
                    "type": "string"
                  },
                  "linkedin_document_title": {
                    "description": "Title for a LinkedIn PDF/document post. Alias for document_title.",
                    "type": "string"
                  },
                  "document_filename": {
                    "description": "Filename for a LinkedIn document post.",
                    "type": "string"
                  },
                  "mentions": {
                    "description": "LinkedIn organization mention objects.",
                    "type": "array",
                    "items": {}
                  },
                  "linkedin_mentions": {
                    "description": "LinkedIn organization mention objects. Alias for mentions.",
                    "type": "array",
                    "items": {}
                  },
                  "poll": {
                    "description": "LinkedIn poll: { question, options (2-4), duration (ONE_DAY|THREE_DAYS|SEVEN_DAYS|FOURTEEN_DAYS) }. Mutually exclusive with media.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "linkedin_poll": {
                    "description": "LinkedIn poll: { question, options (2-4), duration (ONE_DAY|THREE_DAYS|SEVEN_DAYS|FOURTEEN_DAYS) }. Mutually exclusive with media. Alias for poll.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "thumbnail_url": {
                    "description": "Custom video thumbnail URL.",
                    "type": "string"
                  },
                  "content_call_to_action_label": {
                    "description": "LinkedIn contentCallToActionLabel, including BUY_NOW and SHOP_NOW (version 202504). Pair with content_landing_page.",
                    "enum": [
                      "APPLY",
                      "DOWNLOAD",
                      "VIEW_QUOTE",
                      "LEARN_MORE",
                      "SIGN_UP",
                      "SUBSCRIBE",
                      "REGISTER",
                      "JOIN",
                      "ATTEND",
                      "REQUEST_DEMO",
                      "SEE_MORE",
                      "BUY_NOW",
                      "SHOP_NOW"
                    ],
                    "type": "string"
                  },
                  "cta_label": {
                    "description": "LinkedIn contentCallToActionLabel, including BUY_NOW and SHOP_NOW (version 202504). Pair with content_landing_page. Alias for content_call_to_action_label.",
                    "enum": [
                      "APPLY",
                      "DOWNLOAD",
                      "VIEW_QUOTE",
                      "LEARN_MORE",
                      "SIGN_UP",
                      "SUBSCRIBE",
                      "REGISTER",
                      "JOIN",
                      "ATTEND",
                      "REQUEST_DEMO",
                      "SEE_MORE",
                      "BUY_NOW",
                      "SHOP_NOW"
                    ],
                    "type": "string"
                  },
                  "linkedin_cta_label": {
                    "description": "LinkedIn contentCallToActionLabel, including BUY_NOW and SHOP_NOW (version 202504). Pair with content_landing_page. Alias for content_call_to_action_label.",
                    "enum": [
                      "APPLY",
                      "DOWNLOAD",
                      "VIEW_QUOTE",
                      "LEARN_MORE",
                      "SIGN_UP",
                      "SUBSCRIBE",
                      "REGISTER",
                      "JOIN",
                      "ATTEND",
                      "REQUEST_DEMO",
                      "SEE_MORE",
                      "BUY_NOW",
                      "SHOP_NOW"
                    ],
                    "type": "string"
                  },
                  "content_landing_page": {
                    "description": "Landing page URL sent as contentLandingPage with the LinkedIn call to action.",
                    "type": "string"
                  },
                  "cta_url": {
                    "description": "Landing page URL sent as contentLandingPage with the LinkedIn call to action. Alias for content_landing_page.",
                    "type": "string"
                  },
                  "linkedin_cta_url": {
                    "description": "Landing page URL sent as contentLandingPage with the LinkedIn call to action. Alias for content_landing_page.",
                    "type": "string"
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "document_title": "Launch plan",
                  "mentions": [
                    {
                      "display_name": "posterly",
                      "urn": "urn:li:organization:123"
                    }
                  ],
                  "poll": {
                    "question": "Which feature next?",
                    "options": [
                      "Polls",
                      "Analytics"
                    ],
                    "duration": "THREE_DAYS"
                  },
                  "content_call_to_action_label": "BUY_NOW",
                  "content_landing_page": "https://www.poster.ly"
                }
              },
              {
                "title": "YouTube settings",
                "type": "object",
                "properties": {
                  "title": {
                    "description": "YouTube video title.",
                    "type": "string"
                  },
                  "youtube_title": {
                    "description": "YouTube video title. Alias for title.",
                    "type": "string"
                  },
                  "thumbnail_url": {
                    "description": "Custom YouTube thumbnail URL.",
                    "type": "string"
                  },
                  "privacy_status": {
                    "description": "YouTube video visibility.",
                    "enum": [
                      "public",
                      "unlisted",
                      "private"
                    ],
                    "type": "string"
                  },
                  "privacy": {
                    "description": "YouTube video visibility. Alias for privacy_status.",
                    "enum": [
                      "public",
                      "unlisted",
                      "private"
                    ],
                    "type": "string"
                  },
                  "made_for_kids": {
                    "description": "YouTube made-for-kids declaration.",
                    "type": "boolean"
                  },
                  "tags": {
                    "description": "YouTube tags.",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "category_id": {
                    "description": "YouTube category ID.",
                    "type": "string"
                  },
                  "notify_subscribers": {
                    "description": "Notify subscribers when the video publishes (default true).",
                    "type": "boolean"
                  },
                  "add_shorts_hashtag": {
                    "description": "Append #Shorts to the description for Shorts-feed eligibility (vertical clips).",
                    "type": "boolean"
                  },
                  "ai_generated": {
                    "description": "Label the video as containing AI/synthetic media (containsSyntheticMedia).",
                    "type": "boolean"
                  },
                  "ai_disclosure": {
                    "description": "Label the video as containing AI/synthetic media (containsSyntheticMedia). Alias for ai_generated.",
                    "type": "boolean"
                  },
                  "brand_partner": {
                    "description": "Optional YouTube brandPartner channel ID (UC…) or handle (@…). Added to videos.insert part=brandPartner when set.",
                    "type": "string"
                  },
                  "brandPartner": {
                    "description": "Optional YouTube brandPartner channel ID (UC…) or handle (@…). Added to videos.insert part=brandPartner when set. Alias for brand_partner.",
                    "type": "string"
                  }
                },
                "required": [
                  "title"
                ],
                "additionalProperties": true,
                "example": {
                  "title": "Launch walkthrough",
                  "privacy_status": "unlisted",
                  "notify_subscribers": false,
                  "add_shorts_hashtag": true,
                  "brand_partner": "@brand"
                }
              },
              {
                "title": "Pinterest settings",
                "type": "object",
                "properties": {
                  "board_id": {
                    "description": "Pinterest board ID from the pinterest.boards helper.",
                    "type": "string"
                  },
                  "pinterest_board_id": {
                    "description": "Pinterest board ID from the pinterest.boards helper. Alias for board_id.",
                    "type": "string"
                  },
                  "title": {
                    "description": "Pinterest Pin title.",
                    "type": "string"
                  },
                  "link": {
                    "description": "Destination URL for the Pin.",
                    "type": "string"
                  },
                  "destination_url": {
                    "description": "Destination URL for the Pin. Alias for link.",
                    "type": "string"
                  },
                  "cover_image_url": {
                    "description": "Required for video Pins: a stored, probe-verified JPEG or PNG cover URL (20 MiB maximum).",
                    "type": "string"
                  },
                  "video_cover_url": {
                    "description": "Required for video Pins: a stored, probe-verified JPEG or PNG cover URL (20 MiB maximum). Alias for cover_image_url.",
                    "type": "string"
                  },
                  "pinterest_cover_image_url": {
                    "description": "Required for video Pins: a stored, probe-verified JPEG or PNG cover URL (20 MiB maximum). Alias for cover_image_url.",
                    "type": "string"
                  },
                  "ai_generated": {
                    "description": "Label the Pin as AI-modified (ai_disclosures).",
                    "type": "boolean"
                  },
                  "ai_disclosure": {
                    "description": "Label the Pin as AI-modified (ai_disclosures). Alias for ai_generated.",
                    "type": "boolean"
                  },
                  "product_tags": {
                    "description": "Optional product tags on POST /v5/pins (product_id, optional x/y). Existing pins:write. Pin note is not written.",
                    "type": "array",
                    "items": {}
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "required": [
                  "board_id"
                ],
                "additionalProperties": true,
                "example": {
                  "board_id": "123456789",
                  "title": "Launch ideas",
                  "link": "https://www.poster.ly",
                  "cover_image_url": "https://assets.poster.ly/users/123/pinterest-video-covers/cover.jpg",
                  "product_tags": [
                    {
                      "product_id": "123"
                    }
                  ]
                }
              },
              {
                "title": "Threads settings",
                "type": "object",
                "properties": {
                  "reply_control": {
                    "description": "Threads reply control setting.",
                    "enum": [
                      "everyone",
                      "accounts_you_follow",
                      "mentioned_only",
                      "followers_only",
                      "parent_post_author_only"
                    ],
                    "type": "string"
                  },
                  "threads_reply_control": {
                    "description": "Threads reply control setting. Alias for reply_control.",
                    "enum": [
                      "everyone",
                      "accounts_you_follow",
                      "mentioned_only",
                      "followers_only",
                      "parent_post_author_only"
                    ],
                    "type": "string"
                  },
                  "poll": {
                    "description": "Threads poll: { options (2-4) }. Text-only, fixed 24h duration.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "threads_poll": {
                    "description": "Threads poll: { options (2-4) }. Text-only, fixed 24h duration. Alias for poll.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "topic_tag": {
                    "description": "A single Threads topic tag (1-50 chars, no periods/ampersands).",
                    "type": "string"
                  },
                  "threads_topic_tag": {
                    "description": "A single Threads topic tag (1-50 chars, no periods/ampersands). Alias for topic_tag.",
                    "type": "string"
                  },
                  "text_attachment": {
                    "description": "Long-form Threads text attachment.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "threads_text_attachment": {
                    "description": "Long-form Threads text attachment. Alias for text_attachment.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "share_to_instagram": {
                    "description": "Also share the published post to the Instagram account linked to the Threads profile as a Story (dark card). Requires Instagram sharing enabled for the Threads profile in the Threads app.",
                    "type": "boolean"
                  },
                  "threads_share_to_instagram": {
                    "description": "Also share the published post to the Instagram account linked to the Threads profile as a Story (dark card). Requires Instagram sharing enabled for the Threads profile in the Threads app. Alias for share_to_instagram.",
                    "type": "boolean"
                  },
                  "is_ghost_post": {
                    "description": "Publish as a Threads ghost post. Text-only.",
                    "type": "boolean"
                  },
                  "threads_is_ghost_post": {
                    "description": "Publish as a Threads ghost post. Text-only. Alias for is_ghost_post.",
                    "type": "boolean"
                  },
                  "is_spoiler": {
                    "description": "Mark the Threads post as a spoiler (full-caption text entity and/or is_spoiler_media).",
                    "type": "boolean"
                  },
                  "threads_is_spoiler": {
                    "description": "Mark the Threads post as a spoiler (full-caption text entity and/or is_spoiler_media). Alias for is_spoiler.",
                    "type": "boolean"
                  },
                  "is_spoiler_media": {
                    "description": "Set is_spoiler_media on the Threads container when media is attached.",
                    "type": "boolean"
                  },
                  "threads_is_spoiler_media": {
                    "description": "Set is_spoiler_media on the Threads container when media is attached. Alias for is_spoiler_media.",
                    "type": "boolean"
                  },
                  "text_entities": {
                    "description": "Threads text_entities, for example spoiler ranges with entity_type, offset, and length.",
                    "type": "array",
                    "items": {}
                  },
                  "threads_text_entities": {
                    "description": "Threads text_entities, for example spoiler ranges with entity_type, offset, and length. Alias for text_entities.",
                    "type": "array",
                    "items": {}
                  },
                  "enable_reply_approvals": {
                    "description": "Require approval before replies appear (enable_reply_approvals).",
                    "type": "boolean"
                  },
                  "threads_enable_reply_approvals": {
                    "description": "Require approval before replies appear (enable_reply_approvals). Alias for enable_reply_approvals.",
                    "type": "boolean"
                  },
                  "gif_attachment": {
                    "description": "GIPHY gif_attachment: { gif_id, provider: \"GIPHY\" }. Tenor is not supported.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "threads_gif_attachment": {
                    "description": "GIPHY gif_attachment: { gif_id, provider: \"GIPHY\" }. Tenor is not supported. Alias for gif_attachment.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "reply_control": "everyone",
                  "poll": {
                    "options": [
                      "Polls",
                      "Analytics"
                    ]
                  },
                  "topic_tag": "producthunt",
                  "is_ghost_post": false,
                  "enable_reply_approvals": true
                }
              },
              {
                "title": "Google Business settings",
                "type": "object",
                "properties": {
                  "post_type": {
                    "description": "Google Business Profile post type.",
                    "enum": [
                      "STANDARD",
                      "EVENT",
                      "OFFER"
                    ],
                    "type": "string"
                  },
                  "topic_type": {
                    "description": "Google Business Profile post type. Alias for post_type.",
                    "enum": [
                      "STANDARD",
                      "EVENT",
                      "OFFER"
                    ],
                    "type": "string"
                  },
                  "event": {
                    "description": "Event title and start/end date/time.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "offer": {
                    "description": "Offer coupon, redeem URL, and terms.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "cta": {
                    "description": "CTA type and URL.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "recurrence": {
                    "description": "EVENT/OFFER recurrenceInfo: { type: DAILY|WEEKLY|MONTHLY, series_end_time? }. Keeps one-off scheduledTime.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "recurrenceInfo": {
                    "description": "EVENT/OFFER recurrenceInfo: { type: DAILY|WEEKLY|MONTHLY, series_end_time? }. Keeps one-off scheduledTime. Alias for recurrence.",
                    "type": "object",
                    "additionalProperties": true
                  }
                },
                "additionalProperties": true,
                "example": {
                  "post_type": "EVENT",
                  "event": {
                    "title": "Launch night",
                    "start_date": "2026-09-01"
                  },
                  "recurrence": {
                    "type": "WEEKLY",
                    "series_end_time": "2026-12-01T00:00:00Z"
                  },
                  "cta": {
                    "type": "LEARN_MORE",
                    "url": "https://www.poster.ly"
                  }
                }
              },
              {
                "title": "Telegram settings",
                "type": "object",
                "properties": {
                  "parse_mode": {
                    "description": "Telegram caption parse mode when supported.",
                    "enum": [
                      "HTML",
                      "MarkdownV2"
                    ],
                    "type": "string"
                  },
                  "disable_web_page_preview": {
                    "description": "Disable link previews for text posts.",
                    "type": "boolean"
                  },
                  "poll": {
                    "description": "Telegram native poll: { question, options (2-10), allows_multiple_answers? }.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "telegram_poll": {
                    "description": "Telegram native poll: { question, options (2-10), allows_multiple_answers? }. Alias for poll.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "buttons": {
                    "description": "Inline CTA buttons: [{ text, url }] (up to 3).",
                    "type": "array",
                    "items": {}
                  },
                  "telegram_buttons": {
                    "description": "Inline CTA buttons: [{ text, url }] (up to 3). Alias for buttons.",
                    "type": "array",
                    "items": {}
                  },
                  "video_cover_url": {
                    "description": "Cover image URL for sendVideo (Bot API cover).",
                    "type": "string"
                  },
                  "cover_url": {
                    "description": "Cover image URL for sendVideo (Bot API cover). Alias for video_cover_url.",
                    "type": "string"
                  },
                  "telegram_video_cover_url": {
                    "description": "Cover image URL for sendVideo (Bot API cover). Alias for video_cover_url.",
                    "type": "string"
                  },
                  "start_timestamp": {
                    "description": "Video start timestamp in seconds for sendVideo (Bot API start_timestamp).",
                    "type": "number"
                  },
                  "telegram_start_timestamp": {
                    "description": "Video start timestamp in seconds for sendVideo (Bot API start_timestamp). Alias for start_timestamp.",
                    "type": "number"
                  },
                  "is_live_photo": {
                    "description": "Send as sendLivePhoto when both a still image and a video are attached.",
                    "type": "boolean"
                  },
                  "telegram_is_live_photo": {
                    "description": "Send as sendLivePhoto when both a still image and a video are attached. Alias for is_live_photo.",
                    "type": "boolean"
                  }
                },
                "additionalProperties": true,
                "example": {
                  "poll": {
                    "question": "Which feature next?",
                    "options": [
                      "Polls",
                      "Analytics"
                    ]
                  },
                  "buttons": [
                    {
                      "text": "Read more",
                      "url": "https://www.poster.ly"
                    }
                  ],
                  "video_cover_url": "https://example.com/cover.jpg"
                }
              },
              {
                "title": "Bluesky settings",
                "type": "object",
                "properties": {
                  "langs": {
                    "description": "Language tags for the Bluesky post.",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "content_label": {
                    "description": "Self-applied content warning (tap-to-reveal).",
                    "enum": [
                      "sexual",
                      "nudity",
                      "porn",
                      "graphic-media"
                    ],
                    "type": "string"
                  },
                  "content_warning": {
                    "description": "Self-applied content warning (tap-to-reveal). Alias for content_label.",
                    "enum": [
                      "sexual",
                      "nudity",
                      "porn",
                      "graphic-media"
                    ],
                    "type": "string"
                  },
                  "tags": {
                    "description": "Up to 8 hidden discovery tags (separate from in-text hashtags).",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "bluesky_tags": {
                    "description": "Up to 8 hidden discovery tags (separate from in-text hashtags). Alias for tags.",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "quote_url": {
                    "description": "A Bluesky post URL (or AT-URI) to quote.",
                    "type": "string"
                  },
                  "quote": {
                    "description": "A Bluesky post URL (or AT-URI) to quote. Alias for quote_url.",
                    "type": "string"
                  },
                  "bluesky_quote_url": {
                    "description": "A Bluesky post URL (or AT-URI) to quote. Alias for quote_url.",
                    "type": "string"
                  },
                  "disable_quotes": {
                    "description": "Prevent others from quote-posting this post (postgate).",
                    "type": "boolean"
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "langs": [
                    "en"
                  ],
                  "tags": [
                    "producthunt",
                    "launch"
                  ],
                  "quote_url": "https://bsky.app/profile/poster.ly/post/abc123"
                }
              },
              {
                "title": "Discord settings",
                "type": "object",
                "properties": {
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "media_alt_texts": {
                    "https://example.com/chart.png": "Q2 revenue chart"
                  }
                }
              },
              {
                "title": "Slack settings",
                "type": "object",
                "properties": {
                  "markdown": {
                    "description": "Send the caption as a Block Kit markdown block on chat.postMessage.",
                    "type": "boolean"
                  },
                  "slack_markdown": {
                    "description": "Send the caption as a Block Kit markdown block on chat.postMessage. Alias for markdown.",
                    "type": "boolean"
                  },
                  "blocks": {
                    "description": "Optional Block Kit blocks (markdown, card, or carousel) passed to chat.postMessage. File upload still uses getUploadURLExternal.",
                    "type": "array",
                    "items": {}
                  },
                  "slack_blocks": {
                    "description": "Optional Block Kit blocks (markdown, card, or carousel) passed to chat.postMessage. File upload still uses getUploadURLExternal. Alias for blocks.",
                    "type": "array",
                    "items": {}
                  }
                },
                "additionalProperties": true,
                "example": {
                  "markdown": true
                }
              },
              {
                "title": "Mastodon settings",
                "type": "object",
                "properties": {
                  "visibility": {
                    "description": "Status visibility (private means followers only).",
                    "enum": [
                      "public",
                      "unlisted",
                      "private"
                    ],
                    "type": "string"
                  },
                  "mastodon_visibility": {
                    "description": "Status visibility (private means followers only). Alias for visibility.",
                    "enum": [
                      "public",
                      "unlisted",
                      "private"
                    ],
                    "type": "string"
                  },
                  "spoiler_text": {
                    "description": "Content warning shown before the post is revealed (marks media sensitive).",
                    "type": "string"
                  },
                  "content_warning": {
                    "description": "Content warning shown before the post is revealed (marks media sensitive). Alias for spoiler_text.",
                    "type": "string"
                  },
                  "mastodon_spoiler_text": {
                    "description": "Content warning shown before the post is revealed (marks media sensitive). Alias for spoiler_text.",
                    "type": "string"
                  },
                  "language": {
                    "description": "ISO 639 language code for the status.",
                    "type": "string"
                  },
                  "mastodon_language": {
                    "description": "ISO 639 language code for the status. Alias for language.",
                    "type": "string"
                  },
                  "quoted_status_id": {
                    "description": "Mastodon status ID to quote (4.5+ quoted_status_id).",
                    "type": "string"
                  },
                  "quote_id": {
                    "description": "Mastodon status ID to quote (4.5+ quoted_status_id). Alias for quoted_status_id.",
                    "type": "string"
                  },
                  "mastodon_quoted_status_id": {
                    "description": "Mastodon status ID to quote (4.5+ quoted_status_id). Alias for quoted_status_id.",
                    "type": "string"
                  },
                  "poll": {
                    "description": "Mastodon poll: { options (2-4), expires_in seconds, multiple? }. Media and a poll can be combined on Mastodon 4.6+.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "mastodon_poll": {
                    "description": "Mastodon poll: { options (2-4), expires_in seconds, multiple? }. Media and a poll can be combined on Mastodon 4.6+. Alias for poll.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "visibility": "public",
                  "spoiler_text": "Launch spoilers",
                  "language": "en",
                  "quoted_status_id": "123",
                  "poll": {
                    "options": [
                      "Yes",
                      "No"
                    ],
                    "expires_in": 86400
                  }
                }
              },
              {
                "title": "Dev.to settings",
                "type": "object",
                "properties": {
                  "title": {
                    "description": "Article title. Falls back to the first line of the caption.",
                    "type": "string"
                  },
                  "devto_title": {
                    "description": "Article title. Falls back to the first line of the caption. Alias for title.",
                    "type": "string"
                  },
                  "tags": {
                    "description": "Up to 4 tags (lowercase alphanumeric).",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "devto_tags": {
                    "description": "Up to 4 tags (lowercase alphanumeric). Alias for tags.",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "canonical_url": {
                    "description": "Canonical URL when cross-posting from your own blog.",
                    "type": "string"
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "title": "How we ship 18 platforms",
                  "tags": [
                    "webdev",
                    "saas"
                  ]
                }
              },
              {
                "title": "Hashnode settings",
                "type": "object",
                "properties": {
                  "title": {
                    "description": "Post title. Falls back to the first line of the caption.",
                    "type": "string"
                  },
                  "hashnode_title": {
                    "description": "Post title. Falls back to the first line of the caption. Alias for title.",
                    "type": "string"
                  },
                  "tags": {
                    "description": "Up to 4 tags (lowercase alphanumeric).",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "hashnode_tags": {
                    "description": "Up to 4 tags (lowercase alphanumeric). Alias for tags.",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "publication_id": {
                    "description": "Target publication. Defaults to the account blog captured at connect time.",
                    "type": "string"
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "title": "How we ship 18 platforms",
                  "tags": [
                    "webdev",
                    "saas"
                  ]
                }
              },
              {
                "title": "WordPress settings",
                "type": "object",
                "properties": {
                  "title": {
                    "description": "Post title. Falls back to the first line of the caption.",
                    "type": "string"
                  },
                  "wordpress_title": {
                    "description": "Post title. Falls back to the first line of the caption. Alias for title.",
                    "type": "string"
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "title": "How we ship 18 platforms"
                }
              },
              {
                "title": "Lemmy settings",
                "type": "object",
                "properties": {
                  "community": {
                    "description": "Target community, e.g. technology or technology@lemmy.world.",
                    "type": "string"
                  },
                  "lemmy_community": {
                    "description": "Target community, e.g. technology or technology@lemmy.world. Alias for community.",
                    "type": "string"
                  },
                  "title": {
                    "description": "Post title. Falls back to the first line of the caption.",
                    "type": "string"
                  },
                  "lemmy_title": {
                    "description": "Post title. Falls back to the first line of the caption. Alias for title.",
                    "type": "string"
                  },
                  "url": {
                    "description": "Link post URL. Defaults to the first attached image.",
                    "type": "string"
                  },
                  "lemmy_url": {
                    "description": "Link post URL. Defaults to the first attached image. Alias for url.",
                    "type": "string"
                  },
                  "nsfw": {
                    "description": "Mark the post NSFW.",
                    "type": "boolean"
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "required": [
                  "community"
                ],
                "additionalProperties": true,
                "example": {
                  "community": "selfhosted@lemmy.world",
                  "title": "posterly now posts to Lemmy"
                }
              }
            ],
            "additionalProperties": true
          },
          "settings": {
            "type": "object",
            "description": "Platform-specific composer controls. Call list_platforms or get_platform_schema for the selected account before sending settings.",
            "oneOf": [
              {
                "title": "Instagram settings",
                "type": "object",
                "properties": {
                  "__type": {
                    "description": "Instagram account type hint.",
                    "enum": [
                      "instagram",
                      "instagram-standalone"
                    ],
                    "type": "string"
                  },
                  "post_type": {
                    "description": "Instagram publishing format.",
                    "enum": [
                      "post",
                      "feed",
                      "story",
                      "reel",
                      "carousel"
                    ],
                    "type": "string"
                  },
                  "is_trial_reel": {
                    "description": "Request an Instagram Trial Reel when the account supports it.",
                    "type": "boolean"
                  },
                  "trial_reel": {
                    "description": "Request an Instagram Trial Reel when the account supports it. Alias for is_trial_reel.",
                    "type": "boolean"
                  },
                  "graduation_strategy": {
                    "description": "Trial Reel graduation strategy.",
                    "enum": [
                      "MANUAL",
                      "SS_PERFORMANCE"
                    ],
                    "type": "string"
                  },
                  "collaborators": {
                    "description": "Native co-author invitations. Meta-linked Instagram accounts only; feed images, Reels, and carousels; maximum 3; not Stories.",
                    "type": "array",
                    "items": {}
                  },
                  "user_tags": {
                    "description": "Native clickable media tags, not caption @mentions. Supported by eligible direct Instagram and Meta-linked connections; feed images, Reels/video, and Stories. Tags apply to each carousel child and the first Story in a Story Series.",
                    "type": "array",
                    "items": {}
                  },
                  "first_comment": {
                    "description": "First comment to publish after the post.",
                    "type": "string"
                  },
                  "reel_cover_url": {
                    "description": "Custom Reel cover image URL.",
                    "type": "string"
                  },
                  "cover_url": {
                    "description": "Custom Reel cover image URL. Alias for reel_cover_url.",
                    "type": "string"
                  },
                  "reel_thumb_offset": {
                    "description": "Video timestamp, in milliseconds, for a generated Reel thumbnail.",
                    "type": "number"
                  },
                  "thumb_offset": {
                    "description": "Video timestamp, in milliseconds, for a generated Reel thumbnail. Alias for reel_thumb_offset.",
                    "type": "number"
                  },
                  "is_ai_generated": {
                    "description": "Label the parent media container as AI-generated (is_ai_generated). For carousels, set this on the parent only, never on child slides.",
                    "type": "boolean"
                  },
                  "instagram_is_ai_generated": {
                    "description": "Label the parent media container as AI-generated (is_ai_generated). For carousels, set this on the parent only, never on child slides. Alias for is_ai_generated.",
                    "type": "boolean"
                  },
                  "ai_generated": {
                    "description": "Label the parent media container as AI-generated (is_ai_generated). For carousels, set this on the parent only, never on child slides. Alias for is_ai_generated.",
                    "type": "boolean"
                  },
                  "audio_id": {
                    "description": "Licensed Instagram audio ID for Reels (audio_configuration.audio_id). Meta-linked Facebook Login accounts only; hidden for Instagram Login.",
                    "type": "string"
                  },
                  "instagram_audio_id": {
                    "description": "Licensed Instagram audio ID for Reels (audio_configuration.audio_id). Meta-linked Facebook Login accounts only; hidden for Instagram Login. Alias for audio_id.",
                    "type": "string"
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "__type": "instagram",
                  "post_type": "reel",
                  "first_comment": "Full details in the caption.",
                  "is_ai_generated": true
                }
              },
              {
                "title": "Facebook settings",
                "type": "object",
                "properties": {
                  "post_type": {
                    "description": "Facebook publishing format. Reel uses the Graph Reels API and must be 90 seconds or shorter; use video for longer clips. A 90.0 second Reel is allowed.",
                    "enum": [
                      "post",
                      "feed",
                      "story",
                      "reel",
                      "cover_photo"
                    ],
                    "type": "string"
                  },
                  "text_format_preset_id": {
                    "description": "Styled text post background preset.",
                    "type": "string"
                  },
                  "background_preset_id": {
                    "description": "Styled text post background preset. Alias for text_format_preset_id.",
                    "type": "string"
                  },
                  "reel_cover_url": {
                    "description": "Custom Reel cover image URL.",
                    "type": "string"
                  },
                  "cover_url": {
                    "description": "Custom Reel cover image URL. Alias for reel_cover_url.",
                    "type": "string"
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "post_type": "reel",
                  "reel_cover_url": "https://example.com/cover.jpg"
                }
              },
              {
                "title": "TikTok settings",
                "type": "object",
                "properties": {
                  "privacy_level": {
                    "description": "TikTok direct-post privacy level from the creator info helper.",
                    "type": "string"
                  },
                  "allow_comment": {
                    "description": "Allow comments when direct posting.",
                    "type": "boolean"
                  },
                  "allow_duet": {
                    "description": "Allow duets when direct posting.",
                    "type": "boolean"
                  },
                  "allow_stitch": {
                    "description": "Allow stitches when direct posting.",
                    "type": "boolean"
                  },
                  "title": {
                    "description": "TikTok title/caption field.",
                    "type": "string"
                  },
                  "media_type": {
                    "description": "Set to PHOTO for TikTok photo posts or multi-photo slideshows.",
                    "enum": [
                      "PHOTO"
                    ],
                    "type": "string"
                  },
                  "photo_cover_index": {
                    "description": "Zero-based cover image index for TikTok photo posts.",
                    "type": "number"
                  },
                  "video_cover_timestamp_ms": {
                    "description": "Millisecond timestamp of the video frame to use as the cover (direct post only).",
                    "type": "number"
                  },
                  "cover_timestamp_ms": {
                    "description": "Millisecond timestamp of the video frame to use as the cover (direct post only). Alias for video_cover_timestamp_ms.",
                    "type": "number"
                  },
                  "auto_add_music": {
                    "description": "Ask TikTok to add recommended music to photo posts when direct posting.",
                    "type": "boolean"
                  },
                  "is_commercial_content": {
                    "description": "TikTok commercial content disclosure.",
                    "type": "boolean"
                  },
                  "is_your_brand": {
                    "description": "TikTok branded content: your own brand.",
                    "type": "boolean"
                  },
                  "is_branded_content": {
                    "description": "TikTok branded content: third-party brand.",
                    "type": "boolean"
                  },
                  "ai_generated": {
                    "description": "Label the post as AI-generated (TikTok is_aigc).",
                    "type": "boolean"
                  },
                  "ai_disclosure": {
                    "description": "Label the post as AI-generated (TikTok is_aigc). Alias for ai_generated.",
                    "type": "boolean"
                  }
                },
                "additionalProperties": true,
                "example": {
                  "privacy_level": "PUBLIC_TO_EVERYONE",
                  "media_type": "PHOTO",
                  "photo_cover_index": 0,
                  "auto_add_music": true,
                  "allow_comment": true,
                  "allow_duet": false,
                  "allow_stitch": false,
                  "video_cover_timestamp_ms": 1500
                }
              },
              {
                "title": "X settings",
                "type": "object",
                "properties": {
                  "reply_settings": {
                    "description": "Who can reply to the post.",
                    "enum": [
                      "everyone",
                      "following",
                      "mentionedUsers",
                      "subscribers",
                      "verified"
                    ],
                    "type": "string"
                  },
                  "x_reply_settings": {
                    "description": "Who can reply to the post. Alias for reply_settings.",
                    "enum": [
                      "everyone",
                      "following",
                      "mentionedUsers",
                      "subscribers",
                      "verified"
                    ],
                    "type": "string"
                  },
                  "poll": {
                    "description": "X poll settings: options and duration_minutes.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "x_poll": {
                    "description": "X poll settings: options and duration_minutes. Alias for poll.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "ai_generated": {
                    "description": "Label the post as AI-generated (X made_with_ai).",
                    "type": "boolean"
                  },
                  "ai_disclosure": {
                    "description": "Label the post as AI-generated (X made_with_ai). Alias for ai_generated.",
                    "type": "boolean"
                  },
                  "made_with_ai": {
                    "description": "Label the post as AI-generated (X made_with_ai). Alias for ai_generated.",
                    "type": "boolean"
                  },
                  "paid_partnership": {
                    "description": "Mark the post as a paid partnership (POST /2/tweets paid_partnership). Existing tweet.write.",
                    "type": "boolean"
                  },
                  "x_paid_partnership": {
                    "description": "Mark the post as a paid partnership (POST /2/tweets paid_partnership). Existing tweet.write. Alias for paid_partnership.",
                    "type": "boolean"
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "reply_settings": "following",
                  "poll": {
                    "options": [
                      "Yes",
                      "No"
                    ],
                    "duration_minutes": 1440
                  },
                  "paid_partnership": true
                }
              },
              {
                "title": "LinkedIn settings",
                "type": "object",
                "properties": {
                  "document_title": {
                    "description": "Title for a LinkedIn PDF/document post.",
                    "type": "string"
                  },
                  "linkedin_document_title": {
                    "description": "Title for a LinkedIn PDF/document post. Alias for document_title.",
                    "type": "string"
                  },
                  "document_filename": {
                    "description": "Filename for a LinkedIn document post.",
                    "type": "string"
                  },
                  "mentions": {
                    "description": "LinkedIn organization mention objects.",
                    "type": "array",
                    "items": {}
                  },
                  "linkedin_mentions": {
                    "description": "LinkedIn organization mention objects. Alias for mentions.",
                    "type": "array",
                    "items": {}
                  },
                  "poll": {
                    "description": "LinkedIn poll: { question, options (2-4), duration (ONE_DAY|THREE_DAYS|SEVEN_DAYS|FOURTEEN_DAYS) }. Mutually exclusive with media.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "linkedin_poll": {
                    "description": "LinkedIn poll: { question, options (2-4), duration (ONE_DAY|THREE_DAYS|SEVEN_DAYS|FOURTEEN_DAYS) }. Mutually exclusive with media. Alias for poll.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "thumbnail_url": {
                    "description": "Custom video thumbnail URL.",
                    "type": "string"
                  },
                  "content_call_to_action_label": {
                    "description": "LinkedIn contentCallToActionLabel, including BUY_NOW and SHOP_NOW (version 202504). Pair with content_landing_page.",
                    "enum": [
                      "APPLY",
                      "DOWNLOAD",
                      "VIEW_QUOTE",
                      "LEARN_MORE",
                      "SIGN_UP",
                      "SUBSCRIBE",
                      "REGISTER",
                      "JOIN",
                      "ATTEND",
                      "REQUEST_DEMO",
                      "SEE_MORE",
                      "BUY_NOW",
                      "SHOP_NOW"
                    ],
                    "type": "string"
                  },
                  "cta_label": {
                    "description": "LinkedIn contentCallToActionLabel, including BUY_NOW and SHOP_NOW (version 202504). Pair with content_landing_page. Alias for content_call_to_action_label.",
                    "enum": [
                      "APPLY",
                      "DOWNLOAD",
                      "VIEW_QUOTE",
                      "LEARN_MORE",
                      "SIGN_UP",
                      "SUBSCRIBE",
                      "REGISTER",
                      "JOIN",
                      "ATTEND",
                      "REQUEST_DEMO",
                      "SEE_MORE",
                      "BUY_NOW",
                      "SHOP_NOW"
                    ],
                    "type": "string"
                  },
                  "linkedin_cta_label": {
                    "description": "LinkedIn contentCallToActionLabel, including BUY_NOW and SHOP_NOW (version 202504). Pair with content_landing_page. Alias for content_call_to_action_label.",
                    "enum": [
                      "APPLY",
                      "DOWNLOAD",
                      "VIEW_QUOTE",
                      "LEARN_MORE",
                      "SIGN_UP",
                      "SUBSCRIBE",
                      "REGISTER",
                      "JOIN",
                      "ATTEND",
                      "REQUEST_DEMO",
                      "SEE_MORE",
                      "BUY_NOW",
                      "SHOP_NOW"
                    ],
                    "type": "string"
                  },
                  "content_landing_page": {
                    "description": "Landing page URL sent as contentLandingPage with the LinkedIn call to action.",
                    "type": "string"
                  },
                  "cta_url": {
                    "description": "Landing page URL sent as contentLandingPage with the LinkedIn call to action. Alias for content_landing_page.",
                    "type": "string"
                  },
                  "linkedin_cta_url": {
                    "description": "Landing page URL sent as contentLandingPage with the LinkedIn call to action. Alias for content_landing_page.",
                    "type": "string"
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "document_title": "Launch plan",
                  "mentions": [
                    {
                      "display_name": "posterly",
                      "urn": "urn:li:organization:123"
                    }
                  ],
                  "poll": {
                    "question": "Which feature next?",
                    "options": [
                      "Polls",
                      "Analytics"
                    ],
                    "duration": "THREE_DAYS"
                  },
                  "content_call_to_action_label": "BUY_NOW",
                  "content_landing_page": "https://www.poster.ly"
                }
              },
              {
                "title": "YouTube settings",
                "type": "object",
                "properties": {
                  "title": {
                    "description": "YouTube video title.",
                    "type": "string"
                  },
                  "youtube_title": {
                    "description": "YouTube video title. Alias for title.",
                    "type": "string"
                  },
                  "thumbnail_url": {
                    "description": "Custom YouTube thumbnail URL.",
                    "type": "string"
                  },
                  "privacy_status": {
                    "description": "YouTube video visibility.",
                    "enum": [
                      "public",
                      "unlisted",
                      "private"
                    ],
                    "type": "string"
                  },
                  "privacy": {
                    "description": "YouTube video visibility. Alias for privacy_status.",
                    "enum": [
                      "public",
                      "unlisted",
                      "private"
                    ],
                    "type": "string"
                  },
                  "made_for_kids": {
                    "description": "YouTube made-for-kids declaration.",
                    "type": "boolean"
                  },
                  "tags": {
                    "description": "YouTube tags.",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "category_id": {
                    "description": "YouTube category ID.",
                    "type": "string"
                  },
                  "notify_subscribers": {
                    "description": "Notify subscribers when the video publishes (default true).",
                    "type": "boolean"
                  },
                  "add_shorts_hashtag": {
                    "description": "Append #Shorts to the description for Shorts-feed eligibility (vertical clips).",
                    "type": "boolean"
                  },
                  "ai_generated": {
                    "description": "Label the video as containing AI/synthetic media (containsSyntheticMedia).",
                    "type": "boolean"
                  },
                  "ai_disclosure": {
                    "description": "Label the video as containing AI/synthetic media (containsSyntheticMedia). Alias for ai_generated.",
                    "type": "boolean"
                  },
                  "brand_partner": {
                    "description": "Optional YouTube brandPartner channel ID (UC…) or handle (@…). Added to videos.insert part=brandPartner when set.",
                    "type": "string"
                  },
                  "brandPartner": {
                    "description": "Optional YouTube brandPartner channel ID (UC…) or handle (@…). Added to videos.insert part=brandPartner when set. Alias for brand_partner.",
                    "type": "string"
                  }
                },
                "required": [
                  "title"
                ],
                "additionalProperties": true,
                "example": {
                  "title": "Launch walkthrough",
                  "privacy_status": "unlisted",
                  "notify_subscribers": false,
                  "add_shorts_hashtag": true,
                  "brand_partner": "@brand"
                }
              },
              {
                "title": "Pinterest settings",
                "type": "object",
                "properties": {
                  "board_id": {
                    "description": "Pinterest board ID from the pinterest.boards helper.",
                    "type": "string"
                  },
                  "pinterest_board_id": {
                    "description": "Pinterest board ID from the pinterest.boards helper. Alias for board_id.",
                    "type": "string"
                  },
                  "title": {
                    "description": "Pinterest Pin title.",
                    "type": "string"
                  },
                  "link": {
                    "description": "Destination URL for the Pin.",
                    "type": "string"
                  },
                  "destination_url": {
                    "description": "Destination URL for the Pin. Alias for link.",
                    "type": "string"
                  },
                  "cover_image_url": {
                    "description": "Required for video Pins: a stored, probe-verified JPEG or PNG cover URL (20 MiB maximum).",
                    "type": "string"
                  },
                  "video_cover_url": {
                    "description": "Required for video Pins: a stored, probe-verified JPEG or PNG cover URL (20 MiB maximum). Alias for cover_image_url.",
                    "type": "string"
                  },
                  "pinterest_cover_image_url": {
                    "description": "Required for video Pins: a stored, probe-verified JPEG or PNG cover URL (20 MiB maximum). Alias for cover_image_url.",
                    "type": "string"
                  },
                  "ai_generated": {
                    "description": "Label the Pin as AI-modified (ai_disclosures).",
                    "type": "boolean"
                  },
                  "ai_disclosure": {
                    "description": "Label the Pin as AI-modified (ai_disclosures). Alias for ai_generated.",
                    "type": "boolean"
                  },
                  "product_tags": {
                    "description": "Optional product tags on POST /v5/pins (product_id, optional x/y). Existing pins:write. Pin note is not written.",
                    "type": "array",
                    "items": {}
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "required": [
                  "board_id"
                ],
                "additionalProperties": true,
                "example": {
                  "board_id": "123456789",
                  "title": "Launch ideas",
                  "link": "https://www.poster.ly",
                  "cover_image_url": "https://assets.poster.ly/users/123/pinterest-video-covers/cover.jpg",
                  "product_tags": [
                    {
                      "product_id": "123"
                    }
                  ]
                }
              },
              {
                "title": "Threads settings",
                "type": "object",
                "properties": {
                  "reply_control": {
                    "description": "Threads reply control setting.",
                    "enum": [
                      "everyone",
                      "accounts_you_follow",
                      "mentioned_only",
                      "followers_only",
                      "parent_post_author_only"
                    ],
                    "type": "string"
                  },
                  "threads_reply_control": {
                    "description": "Threads reply control setting. Alias for reply_control.",
                    "enum": [
                      "everyone",
                      "accounts_you_follow",
                      "mentioned_only",
                      "followers_only",
                      "parent_post_author_only"
                    ],
                    "type": "string"
                  },
                  "poll": {
                    "description": "Threads poll: { options (2-4) }. Text-only, fixed 24h duration.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "threads_poll": {
                    "description": "Threads poll: { options (2-4) }. Text-only, fixed 24h duration. Alias for poll.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "topic_tag": {
                    "description": "A single Threads topic tag (1-50 chars, no periods/ampersands).",
                    "type": "string"
                  },
                  "threads_topic_tag": {
                    "description": "A single Threads topic tag (1-50 chars, no periods/ampersands). Alias for topic_tag.",
                    "type": "string"
                  },
                  "text_attachment": {
                    "description": "Long-form Threads text attachment.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "threads_text_attachment": {
                    "description": "Long-form Threads text attachment. Alias for text_attachment.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "share_to_instagram": {
                    "description": "Also share the published post to the Instagram account linked to the Threads profile as a Story (dark card). Requires Instagram sharing enabled for the Threads profile in the Threads app.",
                    "type": "boolean"
                  },
                  "threads_share_to_instagram": {
                    "description": "Also share the published post to the Instagram account linked to the Threads profile as a Story (dark card). Requires Instagram sharing enabled for the Threads profile in the Threads app. Alias for share_to_instagram.",
                    "type": "boolean"
                  },
                  "is_ghost_post": {
                    "description": "Publish as a Threads ghost post. Text-only.",
                    "type": "boolean"
                  },
                  "threads_is_ghost_post": {
                    "description": "Publish as a Threads ghost post. Text-only. Alias for is_ghost_post.",
                    "type": "boolean"
                  },
                  "is_spoiler": {
                    "description": "Mark the Threads post as a spoiler (full-caption text entity and/or is_spoiler_media).",
                    "type": "boolean"
                  },
                  "threads_is_spoiler": {
                    "description": "Mark the Threads post as a spoiler (full-caption text entity and/or is_spoiler_media). Alias for is_spoiler.",
                    "type": "boolean"
                  },
                  "is_spoiler_media": {
                    "description": "Set is_spoiler_media on the Threads container when media is attached.",
                    "type": "boolean"
                  },
                  "threads_is_spoiler_media": {
                    "description": "Set is_spoiler_media on the Threads container when media is attached. Alias for is_spoiler_media.",
                    "type": "boolean"
                  },
                  "text_entities": {
                    "description": "Threads text_entities, for example spoiler ranges with entity_type, offset, and length.",
                    "type": "array",
                    "items": {}
                  },
                  "threads_text_entities": {
                    "description": "Threads text_entities, for example spoiler ranges with entity_type, offset, and length. Alias for text_entities.",
                    "type": "array",
                    "items": {}
                  },
                  "enable_reply_approvals": {
                    "description": "Require approval before replies appear (enable_reply_approvals).",
                    "type": "boolean"
                  },
                  "threads_enable_reply_approvals": {
                    "description": "Require approval before replies appear (enable_reply_approvals). Alias for enable_reply_approvals.",
                    "type": "boolean"
                  },
                  "gif_attachment": {
                    "description": "GIPHY gif_attachment: { gif_id, provider: \"GIPHY\" }. Tenor is not supported.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "threads_gif_attachment": {
                    "description": "GIPHY gif_attachment: { gif_id, provider: \"GIPHY\" }. Tenor is not supported. Alias for gif_attachment.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "reply_control": "everyone",
                  "poll": {
                    "options": [
                      "Polls",
                      "Analytics"
                    ]
                  },
                  "topic_tag": "producthunt",
                  "is_ghost_post": false,
                  "enable_reply_approvals": true
                }
              },
              {
                "title": "Google Business settings",
                "type": "object",
                "properties": {
                  "post_type": {
                    "description": "Google Business Profile post type.",
                    "enum": [
                      "STANDARD",
                      "EVENT",
                      "OFFER"
                    ],
                    "type": "string"
                  },
                  "topic_type": {
                    "description": "Google Business Profile post type. Alias for post_type.",
                    "enum": [
                      "STANDARD",
                      "EVENT",
                      "OFFER"
                    ],
                    "type": "string"
                  },
                  "event": {
                    "description": "Event title and start/end date/time.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "offer": {
                    "description": "Offer coupon, redeem URL, and terms.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "cta": {
                    "description": "CTA type and URL.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "recurrence": {
                    "description": "EVENT/OFFER recurrenceInfo: { type: DAILY|WEEKLY|MONTHLY, series_end_time? }. Keeps one-off scheduledTime.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "recurrenceInfo": {
                    "description": "EVENT/OFFER recurrenceInfo: { type: DAILY|WEEKLY|MONTHLY, series_end_time? }. Keeps one-off scheduledTime. Alias for recurrence.",
                    "type": "object",
                    "additionalProperties": true
                  }
                },
                "additionalProperties": true,
                "example": {
                  "post_type": "EVENT",
                  "event": {
                    "title": "Launch night",
                    "start_date": "2026-09-01"
                  },
                  "recurrence": {
                    "type": "WEEKLY",
                    "series_end_time": "2026-12-01T00:00:00Z"
                  },
                  "cta": {
                    "type": "LEARN_MORE",
                    "url": "https://www.poster.ly"
                  }
                }
              },
              {
                "title": "Telegram settings",
                "type": "object",
                "properties": {
                  "parse_mode": {
                    "description": "Telegram caption parse mode when supported.",
                    "enum": [
                      "HTML",
                      "MarkdownV2"
                    ],
                    "type": "string"
                  },
                  "disable_web_page_preview": {
                    "description": "Disable link previews for text posts.",
                    "type": "boolean"
                  },
                  "poll": {
                    "description": "Telegram native poll: { question, options (2-10), allows_multiple_answers? }.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "telegram_poll": {
                    "description": "Telegram native poll: { question, options (2-10), allows_multiple_answers? }. Alias for poll.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "buttons": {
                    "description": "Inline CTA buttons: [{ text, url }] (up to 3).",
                    "type": "array",
                    "items": {}
                  },
                  "telegram_buttons": {
                    "description": "Inline CTA buttons: [{ text, url }] (up to 3). Alias for buttons.",
                    "type": "array",
                    "items": {}
                  },
                  "video_cover_url": {
                    "description": "Cover image URL for sendVideo (Bot API cover).",
                    "type": "string"
                  },
                  "cover_url": {
                    "description": "Cover image URL for sendVideo (Bot API cover). Alias for video_cover_url.",
                    "type": "string"
                  },
                  "telegram_video_cover_url": {
                    "description": "Cover image URL for sendVideo (Bot API cover). Alias for video_cover_url.",
                    "type": "string"
                  },
                  "start_timestamp": {
                    "description": "Video start timestamp in seconds for sendVideo (Bot API start_timestamp).",
                    "type": "number"
                  },
                  "telegram_start_timestamp": {
                    "description": "Video start timestamp in seconds for sendVideo (Bot API start_timestamp). Alias for start_timestamp.",
                    "type": "number"
                  },
                  "is_live_photo": {
                    "description": "Send as sendLivePhoto when both a still image and a video are attached.",
                    "type": "boolean"
                  },
                  "telegram_is_live_photo": {
                    "description": "Send as sendLivePhoto when both a still image and a video are attached. Alias for is_live_photo.",
                    "type": "boolean"
                  }
                },
                "additionalProperties": true,
                "example": {
                  "poll": {
                    "question": "Which feature next?",
                    "options": [
                      "Polls",
                      "Analytics"
                    ]
                  },
                  "buttons": [
                    {
                      "text": "Read more",
                      "url": "https://www.poster.ly"
                    }
                  ],
                  "video_cover_url": "https://example.com/cover.jpg"
                }
              },
              {
                "title": "Bluesky settings",
                "type": "object",
                "properties": {
                  "langs": {
                    "description": "Language tags for the Bluesky post.",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "content_label": {
                    "description": "Self-applied content warning (tap-to-reveal).",
                    "enum": [
                      "sexual",
                      "nudity",
                      "porn",
                      "graphic-media"
                    ],
                    "type": "string"
                  },
                  "content_warning": {
                    "description": "Self-applied content warning (tap-to-reveal). Alias for content_label.",
                    "enum": [
                      "sexual",
                      "nudity",
                      "porn",
                      "graphic-media"
                    ],
                    "type": "string"
                  },
                  "tags": {
                    "description": "Up to 8 hidden discovery tags (separate from in-text hashtags).",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "bluesky_tags": {
                    "description": "Up to 8 hidden discovery tags (separate from in-text hashtags). Alias for tags.",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "quote_url": {
                    "description": "A Bluesky post URL (or AT-URI) to quote.",
                    "type": "string"
                  },
                  "quote": {
                    "description": "A Bluesky post URL (or AT-URI) to quote. Alias for quote_url.",
                    "type": "string"
                  },
                  "bluesky_quote_url": {
                    "description": "A Bluesky post URL (or AT-URI) to quote. Alias for quote_url.",
                    "type": "string"
                  },
                  "disable_quotes": {
                    "description": "Prevent others from quote-posting this post (postgate).",
                    "type": "boolean"
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "langs": [
                    "en"
                  ],
                  "tags": [
                    "producthunt",
                    "launch"
                  ],
                  "quote_url": "https://bsky.app/profile/poster.ly/post/abc123"
                }
              },
              {
                "title": "Discord settings",
                "type": "object",
                "properties": {
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "media_alt_texts": {
                    "https://example.com/chart.png": "Q2 revenue chart"
                  }
                }
              },
              {
                "title": "Slack settings",
                "type": "object",
                "properties": {
                  "markdown": {
                    "description": "Send the caption as a Block Kit markdown block on chat.postMessage.",
                    "type": "boolean"
                  },
                  "slack_markdown": {
                    "description": "Send the caption as a Block Kit markdown block on chat.postMessage. Alias for markdown.",
                    "type": "boolean"
                  },
                  "blocks": {
                    "description": "Optional Block Kit blocks (markdown, card, or carousel) passed to chat.postMessage. File upload still uses getUploadURLExternal.",
                    "type": "array",
                    "items": {}
                  },
                  "slack_blocks": {
                    "description": "Optional Block Kit blocks (markdown, card, or carousel) passed to chat.postMessage. File upload still uses getUploadURLExternal. Alias for blocks.",
                    "type": "array",
                    "items": {}
                  }
                },
                "additionalProperties": true,
                "example": {
                  "markdown": true
                }
              },
              {
                "title": "Mastodon settings",
                "type": "object",
                "properties": {
                  "visibility": {
                    "description": "Status visibility (private means followers only).",
                    "enum": [
                      "public",
                      "unlisted",
                      "private"
                    ],
                    "type": "string"
                  },
                  "mastodon_visibility": {
                    "description": "Status visibility (private means followers only). Alias for visibility.",
                    "enum": [
                      "public",
                      "unlisted",
                      "private"
                    ],
                    "type": "string"
                  },
                  "spoiler_text": {
                    "description": "Content warning shown before the post is revealed (marks media sensitive).",
                    "type": "string"
                  },
                  "content_warning": {
                    "description": "Content warning shown before the post is revealed (marks media sensitive). Alias for spoiler_text.",
                    "type": "string"
                  },
                  "mastodon_spoiler_text": {
                    "description": "Content warning shown before the post is revealed (marks media sensitive). Alias for spoiler_text.",
                    "type": "string"
                  },
                  "language": {
                    "description": "ISO 639 language code for the status.",
                    "type": "string"
                  },
                  "mastodon_language": {
                    "description": "ISO 639 language code for the status. Alias for language.",
                    "type": "string"
                  },
                  "quoted_status_id": {
                    "description": "Mastodon status ID to quote (4.5+ quoted_status_id).",
                    "type": "string"
                  },
                  "quote_id": {
                    "description": "Mastodon status ID to quote (4.5+ quoted_status_id). Alias for quoted_status_id.",
                    "type": "string"
                  },
                  "mastodon_quoted_status_id": {
                    "description": "Mastodon status ID to quote (4.5+ quoted_status_id). Alias for quoted_status_id.",
                    "type": "string"
                  },
                  "poll": {
                    "description": "Mastodon poll: { options (2-4), expires_in seconds, multiple? }. Media and a poll can be combined on Mastodon 4.6+.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "mastodon_poll": {
                    "description": "Mastodon poll: { options (2-4), expires_in seconds, multiple? }. Media and a poll can be combined on Mastodon 4.6+. Alias for poll.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "visibility": "public",
                  "spoiler_text": "Launch spoilers",
                  "language": "en",
                  "quoted_status_id": "123",
                  "poll": {
                    "options": [
                      "Yes",
                      "No"
                    ],
                    "expires_in": 86400
                  }
                }
              },
              {
                "title": "Dev.to settings",
                "type": "object",
                "properties": {
                  "title": {
                    "description": "Article title. Falls back to the first line of the caption.",
                    "type": "string"
                  },
                  "devto_title": {
                    "description": "Article title. Falls back to the first line of the caption. Alias for title.",
                    "type": "string"
                  },
                  "tags": {
                    "description": "Up to 4 tags (lowercase alphanumeric).",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "devto_tags": {
                    "description": "Up to 4 tags (lowercase alphanumeric). Alias for tags.",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "canonical_url": {
                    "description": "Canonical URL when cross-posting from your own blog.",
                    "type": "string"
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "title": "How we ship 18 platforms",
                  "tags": [
                    "webdev",
                    "saas"
                  ]
                }
              },
              {
                "title": "Hashnode settings",
                "type": "object",
                "properties": {
                  "title": {
                    "description": "Post title. Falls back to the first line of the caption.",
                    "type": "string"
                  },
                  "hashnode_title": {
                    "description": "Post title. Falls back to the first line of the caption. Alias for title.",
                    "type": "string"
                  },
                  "tags": {
                    "description": "Up to 4 tags (lowercase alphanumeric).",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "hashnode_tags": {
                    "description": "Up to 4 tags (lowercase alphanumeric). Alias for tags.",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "publication_id": {
                    "description": "Target publication. Defaults to the account blog captured at connect time.",
                    "type": "string"
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "title": "How we ship 18 platforms",
                  "tags": [
                    "webdev",
                    "saas"
                  ]
                }
              },
              {
                "title": "WordPress settings",
                "type": "object",
                "properties": {
                  "title": {
                    "description": "Post title. Falls back to the first line of the caption.",
                    "type": "string"
                  },
                  "wordpress_title": {
                    "description": "Post title. Falls back to the first line of the caption. Alias for title.",
                    "type": "string"
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "title": "How we ship 18 platforms"
                }
              },
              {
                "title": "Lemmy settings",
                "type": "object",
                "properties": {
                  "community": {
                    "description": "Target community, e.g. technology or technology@lemmy.world.",
                    "type": "string"
                  },
                  "lemmy_community": {
                    "description": "Target community, e.g. technology or technology@lemmy.world. Alias for community.",
                    "type": "string"
                  },
                  "title": {
                    "description": "Post title. Falls back to the first line of the caption.",
                    "type": "string"
                  },
                  "lemmy_title": {
                    "description": "Post title. Falls back to the first line of the caption. Alias for title.",
                    "type": "string"
                  },
                  "url": {
                    "description": "Link post URL. Defaults to the first attached image.",
                    "type": "string"
                  },
                  "lemmy_url": {
                    "description": "Link post URL. Defaults to the first attached image. Alias for url.",
                    "type": "string"
                  },
                  "nsfw": {
                    "description": "Mark the post NSFW.",
                    "type": "boolean"
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "required": [
                  "community"
                ],
                "additionalProperties": true,
                "example": {
                  "community": "selfhosted@lemmy.world",
                  "title": "posterly now posts to Lemmy"
                }
              }
            ],
            "additionalProperties": true
          },
          "workspace_id": {
            "type": "string",
            "description": "Workspace ID from whoami."
          },
          "metadata": {
            "type": "object",
            "additionalProperties": true
          },
          "confirm": {
            "type": "boolean",
            "description": "Must be true after the user explicitly confirms the post/account/workspace/schedule."
          }
        },
        "additionalProperties": false,
        "required": [
          "confirm"
        ]
      },
      "annotations": {
        "title": "Create Post",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "create_posts_batch",
      "description": "Create 1-25 scheduled or immediate social posts in one API request. DESTRUCTIVE WRITE: show the user every post's account/platform, caption or thread text, scheduled time, media, settings, and workspace, then get explicit confirmation for the whole batch before calling. Third-party media URLs are copied into Posterly storage before each post is saved. Partial success is possible; failed items return their array index.",
      "inputSchema": {
        "type": "object",
        "required": [
          "posts",
          "confirm"
        ],
        "properties": {
          "posts": {
            "type": "array",
            "minItems": 1,
            "maxItems": 25,
            "items": {
              "type": "object",
              "properties": {
                "account_id": {
                  "type": "string",
                  "description": "Social account ID from list_accounts."
                },
                "username": {
                  "type": "string",
                  "description": "Account username; requires platform."
                },
                "platform": {
                  "type": "string",
                  "enum": [
                    "instagram",
                    "facebook",
                    "tiktok",
                    "twitter",
                    "linkedin",
                    "youtube",
                    "pinterest",
                    "threads",
                    "google_business",
                    "telegram",
                    "bluesky",
                    "discord",
                    "slack",
                    "mastodon",
                    "devto",
                    "hashnode",
                    "wordpress",
                    "lemmy"
                  ],
                  "description": "Platform name when using username. Supported: instagram, facebook, tiktok, twitter, linkedin, youtube, pinterest, threads, google_business, telegram, bluesky, discord, slack, mastodon, devto, hashnode, wordpress, lemmy. Aliases x, gmb, and instagram-standalone are also accepted by the API."
                },
                "caption": {
                  "type": "string",
                  "description": "Post caption/text. On Instagram, @username creates a caption mention only; it is not a native media tag or collaborator invitation. Ignored when thread_posts is provided."
                },
                "scheduled_at": {
                  "type": "string",
                  "description": "ISO 8601 UTC datetime. Omit to publish immediately."
                },
                "media_url": {
                  "type": "string",
                  "format": "uri",
                  "description": "Media URL. Posterly storage URLs are used as-is; third-party HTTP(S) URLs are copied into Posterly storage before the post is saved. Short-lived signed URLs must still be live when this tool runs."
                },
                "media_urls": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "format": "uri"
                  },
                  "description": "Media URLs. Posterly storage URLs are used as-is; third-party HTTP(S) URLs are copied into Posterly storage before the post is saved."
                },
                "post_type": {
                  "type": "string",
                  "enum": [
                    "text",
                    "image",
                    "document",
                    "video",
                    "reel",
                    "carousel",
                    "story",
                    "story_series",
                    "x_thread",
                    "threads_thread",
                    "photo",
                    "cover_photo",
                    "post",
                    "feed",
                    "feed-post",
                    "cover-photo",
                    "photos",
                    "stories",
                    "reels"
                  ],
                  "description": "Optional post type. Omit for auto-detection from media. Supported semantic values include text, image, video, carousel, reel, story, story_series, document, x_thread, threads_thread, photo, and cover_photo."
                },
                "thread_posts": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "description": "For X or Threads: 2+ entries, one per post in the reply chain."
                },
                "platform_settings": {
                  "type": "object",
                  "description": "Platform-specific composer controls. Call list_platforms or get_platform_schema for the selected account before sending settings.",
                  "oneOf": [
                    {
                      "title": "Instagram settings",
                      "type": "object",
                      "properties": {
                        "__type": {
                          "description": "Instagram account type hint.",
                          "enum": [
                            "instagram",
                            "instagram-standalone"
                          ],
                          "type": "string"
                        },
                        "post_type": {
                          "description": "Instagram publishing format.",
                          "enum": [
                            "post",
                            "feed",
                            "story",
                            "reel",
                            "carousel"
                          ],
                          "type": "string"
                        },
                        "is_trial_reel": {
                          "description": "Request an Instagram Trial Reel when the account supports it.",
                          "type": "boolean"
                        },
                        "trial_reel": {
                          "description": "Request an Instagram Trial Reel when the account supports it. Alias for is_trial_reel.",
                          "type": "boolean"
                        },
                        "graduation_strategy": {
                          "description": "Trial Reel graduation strategy.",
                          "enum": [
                            "MANUAL",
                            "SS_PERFORMANCE"
                          ],
                          "type": "string"
                        },
                        "collaborators": {
                          "description": "Native co-author invitations. Meta-linked Instagram accounts only; feed images, Reels, and carousels; maximum 3; not Stories.",
                          "type": "array",
                          "items": {}
                        },
                        "user_tags": {
                          "description": "Native clickable media tags, not caption @mentions. Supported by eligible direct Instagram and Meta-linked connections; feed images, Reels/video, and Stories. Tags apply to each carousel child and the first Story in a Story Series.",
                          "type": "array",
                          "items": {}
                        },
                        "first_comment": {
                          "description": "First comment to publish after the post.",
                          "type": "string"
                        },
                        "reel_cover_url": {
                          "description": "Custom Reel cover image URL.",
                          "type": "string"
                        },
                        "cover_url": {
                          "description": "Custom Reel cover image URL. Alias for reel_cover_url.",
                          "type": "string"
                        },
                        "reel_thumb_offset": {
                          "description": "Video timestamp, in milliseconds, for a generated Reel thumbnail.",
                          "type": "number"
                        },
                        "thumb_offset": {
                          "description": "Video timestamp, in milliseconds, for a generated Reel thumbnail. Alias for reel_thumb_offset.",
                          "type": "number"
                        },
                        "is_ai_generated": {
                          "description": "Label the parent media container as AI-generated (is_ai_generated). For carousels, set this on the parent only, never on child slides.",
                          "type": "boolean"
                        },
                        "instagram_is_ai_generated": {
                          "description": "Label the parent media container as AI-generated (is_ai_generated). For carousels, set this on the parent only, never on child slides. Alias for is_ai_generated.",
                          "type": "boolean"
                        },
                        "ai_generated": {
                          "description": "Label the parent media container as AI-generated (is_ai_generated). For carousels, set this on the parent only, never on child slides. Alias for is_ai_generated.",
                          "type": "boolean"
                        },
                        "audio_id": {
                          "description": "Licensed Instagram audio ID for Reels (audio_configuration.audio_id). Meta-linked Facebook Login accounts only; hidden for Instagram Login.",
                          "type": "string"
                        },
                        "instagram_audio_id": {
                          "description": "Licensed Instagram audio ID for Reels (audio_configuration.audio_id). Meta-linked Facebook Login accounts only; hidden for Instagram Login. Alias for audio_id.",
                          "type": "string"
                        },
                        "media_alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "media_accessibility": {
                          "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                          "type": "array",
                          "items": {
                            "type": "object",
                            "required": [
                              "index",
                              "alt_text"
                            ],
                            "properties": {
                              "index": {
                                "type": "integer",
                                "minimum": 0
                              },
                              "asset_id": {
                                "type": "string"
                              },
                              "source_url": {
                                "type": "string",
                                "format": "uri"
                              },
                              "alt_text": {
                                "type": "string"
                              }
                            },
                            "additionalProperties": false
                          }
                        }
                      },
                      "additionalProperties": true,
                      "example": {
                        "__type": "instagram",
                        "post_type": "reel",
                        "first_comment": "Full details in the caption.",
                        "is_ai_generated": true
                      }
                    },
                    {
                      "title": "Facebook settings",
                      "type": "object",
                      "properties": {
                        "post_type": {
                          "description": "Facebook publishing format. Reel uses the Graph Reels API and must be 90 seconds or shorter; use video for longer clips. A 90.0 second Reel is allowed.",
                          "enum": [
                            "post",
                            "feed",
                            "story",
                            "reel",
                            "cover_photo"
                          ],
                          "type": "string"
                        },
                        "text_format_preset_id": {
                          "description": "Styled text post background preset.",
                          "type": "string"
                        },
                        "background_preset_id": {
                          "description": "Styled text post background preset. Alias for text_format_preset_id.",
                          "type": "string"
                        },
                        "reel_cover_url": {
                          "description": "Custom Reel cover image URL.",
                          "type": "string"
                        },
                        "cover_url": {
                          "description": "Custom Reel cover image URL. Alias for reel_cover_url.",
                          "type": "string"
                        },
                        "media_alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "media_accessibility": {
                          "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                          "type": "array",
                          "items": {
                            "type": "object",
                            "required": [
                              "index",
                              "alt_text"
                            ],
                            "properties": {
                              "index": {
                                "type": "integer",
                                "minimum": 0
                              },
                              "asset_id": {
                                "type": "string"
                              },
                              "source_url": {
                                "type": "string",
                                "format": "uri"
                              },
                              "alt_text": {
                                "type": "string"
                              }
                            },
                            "additionalProperties": false
                          }
                        }
                      },
                      "additionalProperties": true,
                      "example": {
                        "post_type": "reel",
                        "reel_cover_url": "https://example.com/cover.jpg"
                      }
                    },
                    {
                      "title": "TikTok settings",
                      "type": "object",
                      "properties": {
                        "privacy_level": {
                          "description": "TikTok direct-post privacy level from the creator info helper.",
                          "type": "string"
                        },
                        "allow_comment": {
                          "description": "Allow comments when direct posting.",
                          "type": "boolean"
                        },
                        "allow_duet": {
                          "description": "Allow duets when direct posting.",
                          "type": "boolean"
                        },
                        "allow_stitch": {
                          "description": "Allow stitches when direct posting.",
                          "type": "boolean"
                        },
                        "title": {
                          "description": "TikTok title/caption field.",
                          "type": "string"
                        },
                        "media_type": {
                          "description": "Set to PHOTO for TikTok photo posts or multi-photo slideshows.",
                          "enum": [
                            "PHOTO"
                          ],
                          "type": "string"
                        },
                        "photo_cover_index": {
                          "description": "Zero-based cover image index for TikTok photo posts.",
                          "type": "number"
                        },
                        "video_cover_timestamp_ms": {
                          "description": "Millisecond timestamp of the video frame to use as the cover (direct post only).",
                          "type": "number"
                        },
                        "cover_timestamp_ms": {
                          "description": "Millisecond timestamp of the video frame to use as the cover (direct post only). Alias for video_cover_timestamp_ms.",
                          "type": "number"
                        },
                        "auto_add_music": {
                          "description": "Ask TikTok to add recommended music to photo posts when direct posting.",
                          "type": "boolean"
                        },
                        "is_commercial_content": {
                          "description": "TikTok commercial content disclosure.",
                          "type": "boolean"
                        },
                        "is_your_brand": {
                          "description": "TikTok branded content: your own brand.",
                          "type": "boolean"
                        },
                        "is_branded_content": {
                          "description": "TikTok branded content: third-party brand.",
                          "type": "boolean"
                        },
                        "ai_generated": {
                          "description": "Label the post as AI-generated (TikTok is_aigc).",
                          "type": "boolean"
                        },
                        "ai_disclosure": {
                          "description": "Label the post as AI-generated (TikTok is_aigc). Alias for ai_generated.",
                          "type": "boolean"
                        }
                      },
                      "additionalProperties": true,
                      "example": {
                        "privacy_level": "PUBLIC_TO_EVERYONE",
                        "media_type": "PHOTO",
                        "photo_cover_index": 0,
                        "auto_add_music": true,
                        "allow_comment": true,
                        "allow_duet": false,
                        "allow_stitch": false,
                        "video_cover_timestamp_ms": 1500
                      }
                    },
                    {
                      "title": "X settings",
                      "type": "object",
                      "properties": {
                        "reply_settings": {
                          "description": "Who can reply to the post.",
                          "enum": [
                            "everyone",
                            "following",
                            "mentionedUsers",
                            "subscribers",
                            "verified"
                          ],
                          "type": "string"
                        },
                        "x_reply_settings": {
                          "description": "Who can reply to the post. Alias for reply_settings.",
                          "enum": [
                            "everyone",
                            "following",
                            "mentionedUsers",
                            "subscribers",
                            "verified"
                          ],
                          "type": "string"
                        },
                        "poll": {
                          "description": "X poll settings: options and duration_minutes.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "x_poll": {
                          "description": "X poll settings: options and duration_minutes. Alias for poll.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "ai_generated": {
                          "description": "Label the post as AI-generated (X made_with_ai).",
                          "type": "boolean"
                        },
                        "ai_disclosure": {
                          "description": "Label the post as AI-generated (X made_with_ai). Alias for ai_generated.",
                          "type": "boolean"
                        },
                        "made_with_ai": {
                          "description": "Label the post as AI-generated (X made_with_ai). Alias for ai_generated.",
                          "type": "boolean"
                        },
                        "paid_partnership": {
                          "description": "Mark the post as a paid partnership (POST /2/tweets paid_partnership). Existing tweet.write.",
                          "type": "boolean"
                        },
                        "x_paid_partnership": {
                          "description": "Mark the post as a paid partnership (POST /2/tweets paid_partnership). Existing tweet.write. Alias for paid_partnership.",
                          "type": "boolean"
                        },
                        "media_alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "media_accessibility": {
                          "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                          "type": "array",
                          "items": {
                            "type": "object",
                            "required": [
                              "index",
                              "alt_text"
                            ],
                            "properties": {
                              "index": {
                                "type": "integer",
                                "minimum": 0
                              },
                              "asset_id": {
                                "type": "string"
                              },
                              "source_url": {
                                "type": "string",
                                "format": "uri"
                              },
                              "alt_text": {
                                "type": "string"
                              }
                            },
                            "additionalProperties": false
                          }
                        }
                      },
                      "additionalProperties": true,
                      "example": {
                        "reply_settings": "following",
                        "poll": {
                          "options": [
                            "Yes",
                            "No"
                          ],
                          "duration_minutes": 1440
                        },
                        "paid_partnership": true
                      }
                    },
                    {
                      "title": "LinkedIn settings",
                      "type": "object",
                      "properties": {
                        "document_title": {
                          "description": "Title for a LinkedIn PDF/document post.",
                          "type": "string"
                        },
                        "linkedin_document_title": {
                          "description": "Title for a LinkedIn PDF/document post. Alias for document_title.",
                          "type": "string"
                        },
                        "document_filename": {
                          "description": "Filename for a LinkedIn document post.",
                          "type": "string"
                        },
                        "mentions": {
                          "description": "LinkedIn organization mention objects.",
                          "type": "array",
                          "items": {}
                        },
                        "linkedin_mentions": {
                          "description": "LinkedIn organization mention objects. Alias for mentions.",
                          "type": "array",
                          "items": {}
                        },
                        "poll": {
                          "description": "LinkedIn poll: { question, options (2-4), duration (ONE_DAY|THREE_DAYS|SEVEN_DAYS|FOURTEEN_DAYS) }. Mutually exclusive with media.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "linkedin_poll": {
                          "description": "LinkedIn poll: { question, options (2-4), duration (ONE_DAY|THREE_DAYS|SEVEN_DAYS|FOURTEEN_DAYS) }. Mutually exclusive with media. Alias for poll.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "thumbnail_url": {
                          "description": "Custom video thumbnail URL.",
                          "type": "string"
                        },
                        "content_call_to_action_label": {
                          "description": "LinkedIn contentCallToActionLabel, including BUY_NOW and SHOP_NOW (version 202504). Pair with content_landing_page.",
                          "enum": [
                            "APPLY",
                            "DOWNLOAD",
                            "VIEW_QUOTE",
                            "LEARN_MORE",
                            "SIGN_UP",
                            "SUBSCRIBE",
                            "REGISTER",
                            "JOIN",
                            "ATTEND",
                            "REQUEST_DEMO",
                            "SEE_MORE",
                            "BUY_NOW",
                            "SHOP_NOW"
                          ],
                          "type": "string"
                        },
                        "cta_label": {
                          "description": "LinkedIn contentCallToActionLabel, including BUY_NOW and SHOP_NOW (version 202504). Pair with content_landing_page. Alias for content_call_to_action_label.",
                          "enum": [
                            "APPLY",
                            "DOWNLOAD",
                            "VIEW_QUOTE",
                            "LEARN_MORE",
                            "SIGN_UP",
                            "SUBSCRIBE",
                            "REGISTER",
                            "JOIN",
                            "ATTEND",
                            "REQUEST_DEMO",
                            "SEE_MORE",
                            "BUY_NOW",
                            "SHOP_NOW"
                          ],
                          "type": "string"
                        },
                        "linkedin_cta_label": {
                          "description": "LinkedIn contentCallToActionLabel, including BUY_NOW and SHOP_NOW (version 202504). Pair with content_landing_page. Alias for content_call_to_action_label.",
                          "enum": [
                            "APPLY",
                            "DOWNLOAD",
                            "VIEW_QUOTE",
                            "LEARN_MORE",
                            "SIGN_UP",
                            "SUBSCRIBE",
                            "REGISTER",
                            "JOIN",
                            "ATTEND",
                            "REQUEST_DEMO",
                            "SEE_MORE",
                            "BUY_NOW",
                            "SHOP_NOW"
                          ],
                          "type": "string"
                        },
                        "content_landing_page": {
                          "description": "Landing page URL sent as contentLandingPage with the LinkedIn call to action.",
                          "type": "string"
                        },
                        "cta_url": {
                          "description": "Landing page URL sent as contentLandingPage with the LinkedIn call to action. Alias for content_landing_page.",
                          "type": "string"
                        },
                        "linkedin_cta_url": {
                          "description": "Landing page URL sent as contentLandingPage with the LinkedIn call to action. Alias for content_landing_page.",
                          "type": "string"
                        },
                        "media_alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "media_accessibility": {
                          "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                          "type": "array",
                          "items": {
                            "type": "object",
                            "required": [
                              "index",
                              "alt_text"
                            ],
                            "properties": {
                              "index": {
                                "type": "integer",
                                "minimum": 0
                              },
                              "asset_id": {
                                "type": "string"
                              },
                              "source_url": {
                                "type": "string",
                                "format": "uri"
                              },
                              "alt_text": {
                                "type": "string"
                              }
                            },
                            "additionalProperties": false
                          }
                        }
                      },
                      "additionalProperties": true,
                      "example": {
                        "document_title": "Launch plan",
                        "mentions": [
                          {
                            "display_name": "posterly",
                            "urn": "urn:li:organization:123"
                          }
                        ],
                        "poll": {
                          "question": "Which feature next?",
                          "options": [
                            "Polls",
                            "Analytics"
                          ],
                          "duration": "THREE_DAYS"
                        },
                        "content_call_to_action_label": "BUY_NOW",
                        "content_landing_page": "https://www.poster.ly"
                      }
                    },
                    {
                      "title": "YouTube settings",
                      "type": "object",
                      "properties": {
                        "title": {
                          "description": "YouTube video title.",
                          "type": "string"
                        },
                        "youtube_title": {
                          "description": "YouTube video title. Alias for title.",
                          "type": "string"
                        },
                        "thumbnail_url": {
                          "description": "Custom YouTube thumbnail URL.",
                          "type": "string"
                        },
                        "privacy_status": {
                          "description": "YouTube video visibility.",
                          "enum": [
                            "public",
                            "unlisted",
                            "private"
                          ],
                          "type": "string"
                        },
                        "privacy": {
                          "description": "YouTube video visibility. Alias for privacy_status.",
                          "enum": [
                            "public",
                            "unlisted",
                            "private"
                          ],
                          "type": "string"
                        },
                        "made_for_kids": {
                          "description": "YouTube made-for-kids declaration.",
                          "type": "boolean"
                        },
                        "tags": {
                          "description": "YouTube tags.",
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "category_id": {
                          "description": "YouTube category ID.",
                          "type": "string"
                        },
                        "notify_subscribers": {
                          "description": "Notify subscribers when the video publishes (default true).",
                          "type": "boolean"
                        },
                        "add_shorts_hashtag": {
                          "description": "Append #Shorts to the description for Shorts-feed eligibility (vertical clips).",
                          "type": "boolean"
                        },
                        "ai_generated": {
                          "description": "Label the video as containing AI/synthetic media (containsSyntheticMedia).",
                          "type": "boolean"
                        },
                        "ai_disclosure": {
                          "description": "Label the video as containing AI/synthetic media (containsSyntheticMedia). Alias for ai_generated.",
                          "type": "boolean"
                        },
                        "brand_partner": {
                          "description": "Optional YouTube brandPartner channel ID (UC…) or handle (@…). Added to videos.insert part=brandPartner when set.",
                          "type": "string"
                        },
                        "brandPartner": {
                          "description": "Optional YouTube brandPartner channel ID (UC…) or handle (@…). Added to videos.insert part=brandPartner when set. Alias for brand_partner.",
                          "type": "string"
                        }
                      },
                      "required": [
                        "title"
                      ],
                      "additionalProperties": true,
                      "example": {
                        "title": "Launch walkthrough",
                        "privacy_status": "unlisted",
                        "notify_subscribers": false,
                        "add_shorts_hashtag": true,
                        "brand_partner": "@brand"
                      }
                    },
                    {
                      "title": "Pinterest settings",
                      "type": "object",
                      "properties": {
                        "board_id": {
                          "description": "Pinterest board ID from the pinterest.boards helper.",
                          "type": "string"
                        },
                        "pinterest_board_id": {
                          "description": "Pinterest board ID from the pinterest.boards helper. Alias for board_id.",
                          "type": "string"
                        },
                        "title": {
                          "description": "Pinterest Pin title.",
                          "type": "string"
                        },
                        "link": {
                          "description": "Destination URL for the Pin.",
                          "type": "string"
                        },
                        "destination_url": {
                          "description": "Destination URL for the Pin. Alias for link.",
                          "type": "string"
                        },
                        "cover_image_url": {
                          "description": "Required for video Pins: a stored, probe-verified JPEG or PNG cover URL (20 MiB maximum).",
                          "type": "string"
                        },
                        "video_cover_url": {
                          "description": "Required for video Pins: a stored, probe-verified JPEG or PNG cover URL (20 MiB maximum). Alias for cover_image_url.",
                          "type": "string"
                        },
                        "pinterest_cover_image_url": {
                          "description": "Required for video Pins: a stored, probe-verified JPEG or PNG cover URL (20 MiB maximum). Alias for cover_image_url.",
                          "type": "string"
                        },
                        "ai_generated": {
                          "description": "Label the Pin as AI-modified (ai_disclosures).",
                          "type": "boolean"
                        },
                        "ai_disclosure": {
                          "description": "Label the Pin as AI-modified (ai_disclosures). Alias for ai_generated.",
                          "type": "boolean"
                        },
                        "product_tags": {
                          "description": "Optional product tags on POST /v5/pins (product_id, optional x/y). Existing pins:write. Pin note is not written.",
                          "type": "array",
                          "items": {}
                        },
                        "media_alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "media_accessibility": {
                          "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                          "type": "array",
                          "items": {
                            "type": "object",
                            "required": [
                              "index",
                              "alt_text"
                            ],
                            "properties": {
                              "index": {
                                "type": "integer",
                                "minimum": 0
                              },
                              "asset_id": {
                                "type": "string"
                              },
                              "source_url": {
                                "type": "string",
                                "format": "uri"
                              },
                              "alt_text": {
                                "type": "string"
                              }
                            },
                            "additionalProperties": false
                          }
                        }
                      },
                      "required": [
                        "board_id"
                      ],
                      "additionalProperties": true,
                      "example": {
                        "board_id": "123456789",
                        "title": "Launch ideas",
                        "link": "https://www.poster.ly",
                        "cover_image_url": "https://assets.poster.ly/users/123/pinterest-video-covers/cover.jpg",
                        "product_tags": [
                          {
                            "product_id": "123"
                          }
                        ]
                      }
                    },
                    {
                      "title": "Threads settings",
                      "type": "object",
                      "properties": {
                        "reply_control": {
                          "description": "Threads reply control setting.",
                          "enum": [
                            "everyone",
                            "accounts_you_follow",
                            "mentioned_only",
                            "followers_only",
                            "parent_post_author_only"
                          ],
                          "type": "string"
                        },
                        "threads_reply_control": {
                          "description": "Threads reply control setting. Alias for reply_control.",
                          "enum": [
                            "everyone",
                            "accounts_you_follow",
                            "mentioned_only",
                            "followers_only",
                            "parent_post_author_only"
                          ],
                          "type": "string"
                        },
                        "poll": {
                          "description": "Threads poll: { options (2-4) }. Text-only, fixed 24h duration.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "threads_poll": {
                          "description": "Threads poll: { options (2-4) }. Text-only, fixed 24h duration. Alias for poll.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "topic_tag": {
                          "description": "A single Threads topic tag (1-50 chars, no periods/ampersands).",
                          "type": "string"
                        },
                        "threads_topic_tag": {
                          "description": "A single Threads topic tag (1-50 chars, no periods/ampersands). Alias for topic_tag.",
                          "type": "string"
                        },
                        "text_attachment": {
                          "description": "Long-form Threads text attachment.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "threads_text_attachment": {
                          "description": "Long-form Threads text attachment. Alias for text_attachment.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "share_to_instagram": {
                          "description": "Also share the published post to the Instagram account linked to the Threads profile as a Story (dark card). Requires Instagram sharing enabled for the Threads profile in the Threads app.",
                          "type": "boolean"
                        },
                        "threads_share_to_instagram": {
                          "description": "Also share the published post to the Instagram account linked to the Threads profile as a Story (dark card). Requires Instagram sharing enabled for the Threads profile in the Threads app. Alias for share_to_instagram.",
                          "type": "boolean"
                        },
                        "is_ghost_post": {
                          "description": "Publish as a Threads ghost post. Text-only.",
                          "type": "boolean"
                        },
                        "threads_is_ghost_post": {
                          "description": "Publish as a Threads ghost post. Text-only. Alias for is_ghost_post.",
                          "type": "boolean"
                        },
                        "is_spoiler": {
                          "description": "Mark the Threads post as a spoiler (full-caption text entity and/or is_spoiler_media).",
                          "type": "boolean"
                        },
                        "threads_is_spoiler": {
                          "description": "Mark the Threads post as a spoiler (full-caption text entity and/or is_spoiler_media). Alias for is_spoiler.",
                          "type": "boolean"
                        },
                        "is_spoiler_media": {
                          "description": "Set is_spoiler_media on the Threads container when media is attached.",
                          "type": "boolean"
                        },
                        "threads_is_spoiler_media": {
                          "description": "Set is_spoiler_media on the Threads container when media is attached. Alias for is_spoiler_media.",
                          "type": "boolean"
                        },
                        "text_entities": {
                          "description": "Threads text_entities, for example spoiler ranges with entity_type, offset, and length.",
                          "type": "array",
                          "items": {}
                        },
                        "threads_text_entities": {
                          "description": "Threads text_entities, for example spoiler ranges with entity_type, offset, and length. Alias for text_entities.",
                          "type": "array",
                          "items": {}
                        },
                        "enable_reply_approvals": {
                          "description": "Require approval before replies appear (enable_reply_approvals).",
                          "type": "boolean"
                        },
                        "threads_enable_reply_approvals": {
                          "description": "Require approval before replies appear (enable_reply_approvals). Alias for enable_reply_approvals.",
                          "type": "boolean"
                        },
                        "gif_attachment": {
                          "description": "GIPHY gif_attachment: { gif_id, provider: \"GIPHY\" }. Tenor is not supported.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "threads_gif_attachment": {
                          "description": "GIPHY gif_attachment: { gif_id, provider: \"GIPHY\" }. Tenor is not supported. Alias for gif_attachment.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "media_alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "media_accessibility": {
                          "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                          "type": "array",
                          "items": {
                            "type": "object",
                            "required": [
                              "index",
                              "alt_text"
                            ],
                            "properties": {
                              "index": {
                                "type": "integer",
                                "minimum": 0
                              },
                              "asset_id": {
                                "type": "string"
                              },
                              "source_url": {
                                "type": "string",
                                "format": "uri"
                              },
                              "alt_text": {
                                "type": "string"
                              }
                            },
                            "additionalProperties": false
                          }
                        }
                      },
                      "additionalProperties": true,
                      "example": {
                        "reply_control": "everyone",
                        "poll": {
                          "options": [
                            "Polls",
                            "Analytics"
                          ]
                        },
                        "topic_tag": "producthunt",
                        "is_ghost_post": false,
                        "enable_reply_approvals": true
                      }
                    },
                    {
                      "title": "Google Business settings",
                      "type": "object",
                      "properties": {
                        "post_type": {
                          "description": "Google Business Profile post type.",
                          "enum": [
                            "STANDARD",
                            "EVENT",
                            "OFFER"
                          ],
                          "type": "string"
                        },
                        "topic_type": {
                          "description": "Google Business Profile post type. Alias for post_type.",
                          "enum": [
                            "STANDARD",
                            "EVENT",
                            "OFFER"
                          ],
                          "type": "string"
                        },
                        "event": {
                          "description": "Event title and start/end date/time.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "offer": {
                          "description": "Offer coupon, redeem URL, and terms.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "cta": {
                          "description": "CTA type and URL.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "recurrence": {
                          "description": "EVENT/OFFER recurrenceInfo: { type: DAILY|WEEKLY|MONTHLY, series_end_time? }. Keeps one-off scheduledTime.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "recurrenceInfo": {
                          "description": "EVENT/OFFER recurrenceInfo: { type: DAILY|WEEKLY|MONTHLY, series_end_time? }. Keeps one-off scheduledTime. Alias for recurrence.",
                          "type": "object",
                          "additionalProperties": true
                        }
                      },
                      "additionalProperties": true,
                      "example": {
                        "post_type": "EVENT",
                        "event": {
                          "title": "Launch night",
                          "start_date": "2026-09-01"
                        },
                        "recurrence": {
                          "type": "WEEKLY",
                          "series_end_time": "2026-12-01T00:00:00Z"
                        },
                        "cta": {
                          "type": "LEARN_MORE",
                          "url": "https://www.poster.ly"
                        }
                      }
                    },
                    {
                      "title": "Telegram settings",
                      "type": "object",
                      "properties": {
                        "parse_mode": {
                          "description": "Telegram caption parse mode when supported.",
                          "enum": [
                            "HTML",
                            "MarkdownV2"
                          ],
                          "type": "string"
                        },
                        "disable_web_page_preview": {
                          "description": "Disable link previews for text posts.",
                          "type": "boolean"
                        },
                        "poll": {
                          "description": "Telegram native poll: { question, options (2-10), allows_multiple_answers? }.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "telegram_poll": {
                          "description": "Telegram native poll: { question, options (2-10), allows_multiple_answers? }. Alias for poll.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "buttons": {
                          "description": "Inline CTA buttons: [{ text, url }] (up to 3).",
                          "type": "array",
                          "items": {}
                        },
                        "telegram_buttons": {
                          "description": "Inline CTA buttons: [{ text, url }] (up to 3). Alias for buttons.",
                          "type": "array",
                          "items": {}
                        },
                        "video_cover_url": {
                          "description": "Cover image URL for sendVideo (Bot API cover).",
                          "type": "string"
                        },
                        "cover_url": {
                          "description": "Cover image URL for sendVideo (Bot API cover). Alias for video_cover_url.",
                          "type": "string"
                        },
                        "telegram_video_cover_url": {
                          "description": "Cover image URL for sendVideo (Bot API cover). Alias for video_cover_url.",
                          "type": "string"
                        },
                        "start_timestamp": {
                          "description": "Video start timestamp in seconds for sendVideo (Bot API start_timestamp).",
                          "type": "number"
                        },
                        "telegram_start_timestamp": {
                          "description": "Video start timestamp in seconds for sendVideo (Bot API start_timestamp). Alias for start_timestamp.",
                          "type": "number"
                        },
                        "is_live_photo": {
                          "description": "Send as sendLivePhoto when both a still image and a video are attached.",
                          "type": "boolean"
                        },
                        "telegram_is_live_photo": {
                          "description": "Send as sendLivePhoto when both a still image and a video are attached. Alias for is_live_photo.",
                          "type": "boolean"
                        }
                      },
                      "additionalProperties": true,
                      "example": {
                        "poll": {
                          "question": "Which feature next?",
                          "options": [
                            "Polls",
                            "Analytics"
                          ]
                        },
                        "buttons": [
                          {
                            "text": "Read more",
                            "url": "https://www.poster.ly"
                          }
                        ],
                        "video_cover_url": "https://example.com/cover.jpg"
                      }
                    },
                    {
                      "title": "Bluesky settings",
                      "type": "object",
                      "properties": {
                        "langs": {
                          "description": "Language tags for the Bluesky post.",
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "content_label": {
                          "description": "Self-applied content warning (tap-to-reveal).",
                          "enum": [
                            "sexual",
                            "nudity",
                            "porn",
                            "graphic-media"
                          ],
                          "type": "string"
                        },
                        "content_warning": {
                          "description": "Self-applied content warning (tap-to-reveal). Alias for content_label.",
                          "enum": [
                            "sexual",
                            "nudity",
                            "porn",
                            "graphic-media"
                          ],
                          "type": "string"
                        },
                        "tags": {
                          "description": "Up to 8 hidden discovery tags (separate from in-text hashtags).",
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "bluesky_tags": {
                          "description": "Up to 8 hidden discovery tags (separate from in-text hashtags). Alias for tags.",
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "quote_url": {
                          "description": "A Bluesky post URL (or AT-URI) to quote.",
                          "type": "string"
                        },
                        "quote": {
                          "description": "A Bluesky post URL (or AT-URI) to quote. Alias for quote_url.",
                          "type": "string"
                        },
                        "bluesky_quote_url": {
                          "description": "A Bluesky post URL (or AT-URI) to quote. Alias for quote_url.",
                          "type": "string"
                        },
                        "disable_quotes": {
                          "description": "Prevent others from quote-posting this post (postgate).",
                          "type": "boolean"
                        },
                        "media_alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "media_accessibility": {
                          "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                          "type": "array",
                          "items": {
                            "type": "object",
                            "required": [
                              "index",
                              "alt_text"
                            ],
                            "properties": {
                              "index": {
                                "type": "integer",
                                "minimum": 0
                              },
                              "asset_id": {
                                "type": "string"
                              },
                              "source_url": {
                                "type": "string",
                                "format": "uri"
                              },
                              "alt_text": {
                                "type": "string"
                              }
                            },
                            "additionalProperties": false
                          }
                        }
                      },
                      "additionalProperties": true,
                      "example": {
                        "langs": [
                          "en"
                        ],
                        "tags": [
                          "producthunt",
                          "launch"
                        ],
                        "quote_url": "https://bsky.app/profile/poster.ly/post/abc123"
                      }
                    },
                    {
                      "title": "Discord settings",
                      "type": "object",
                      "properties": {
                        "media_alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "media_accessibility": {
                          "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                          "type": "array",
                          "items": {
                            "type": "object",
                            "required": [
                              "index",
                              "alt_text"
                            ],
                            "properties": {
                              "index": {
                                "type": "integer",
                                "minimum": 0
                              },
                              "asset_id": {
                                "type": "string"
                              },
                              "source_url": {
                                "type": "string",
                                "format": "uri"
                              },
                              "alt_text": {
                                "type": "string"
                              }
                            },
                            "additionalProperties": false
                          }
                        }
                      },
                      "additionalProperties": true,
                      "example": {
                        "media_alt_texts": {
                          "https://example.com/chart.png": "Q2 revenue chart"
                        }
                      }
                    },
                    {
                      "title": "Slack settings",
                      "type": "object",
                      "properties": {
                        "markdown": {
                          "description": "Send the caption as a Block Kit markdown block on chat.postMessage.",
                          "type": "boolean"
                        },
                        "slack_markdown": {
                          "description": "Send the caption as a Block Kit markdown block on chat.postMessage. Alias for markdown.",
                          "type": "boolean"
                        },
                        "blocks": {
                          "description": "Optional Block Kit blocks (markdown, card, or carousel) passed to chat.postMessage. File upload still uses getUploadURLExternal.",
                          "type": "array",
                          "items": {}
                        },
                        "slack_blocks": {
                          "description": "Optional Block Kit blocks (markdown, card, or carousel) passed to chat.postMessage. File upload still uses getUploadURLExternal. Alias for blocks.",
                          "type": "array",
                          "items": {}
                        }
                      },
                      "additionalProperties": true,
                      "example": {
                        "markdown": true
                      }
                    },
                    {
                      "title": "Mastodon settings",
                      "type": "object",
                      "properties": {
                        "visibility": {
                          "description": "Status visibility (private means followers only).",
                          "enum": [
                            "public",
                            "unlisted",
                            "private"
                          ],
                          "type": "string"
                        },
                        "mastodon_visibility": {
                          "description": "Status visibility (private means followers only). Alias for visibility.",
                          "enum": [
                            "public",
                            "unlisted",
                            "private"
                          ],
                          "type": "string"
                        },
                        "spoiler_text": {
                          "description": "Content warning shown before the post is revealed (marks media sensitive).",
                          "type": "string"
                        },
                        "content_warning": {
                          "description": "Content warning shown before the post is revealed (marks media sensitive). Alias for spoiler_text.",
                          "type": "string"
                        },
                        "mastodon_spoiler_text": {
                          "description": "Content warning shown before the post is revealed (marks media sensitive). Alias for spoiler_text.",
                          "type": "string"
                        },
                        "language": {
                          "description": "ISO 639 language code for the status.",
                          "type": "string"
                        },
                        "mastodon_language": {
                          "description": "ISO 639 language code for the status. Alias for language.",
                          "type": "string"
                        },
                        "quoted_status_id": {
                          "description": "Mastodon status ID to quote (4.5+ quoted_status_id).",
                          "type": "string"
                        },
                        "quote_id": {
                          "description": "Mastodon status ID to quote (4.5+ quoted_status_id). Alias for quoted_status_id.",
                          "type": "string"
                        },
                        "mastodon_quoted_status_id": {
                          "description": "Mastodon status ID to quote (4.5+ quoted_status_id). Alias for quoted_status_id.",
                          "type": "string"
                        },
                        "poll": {
                          "description": "Mastodon poll: { options (2-4), expires_in seconds, multiple? }. Media and a poll can be combined on Mastodon 4.6+.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "mastodon_poll": {
                          "description": "Mastodon poll: { options (2-4), expires_in seconds, multiple? }. Media and a poll can be combined on Mastodon 4.6+. Alias for poll.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "media_alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "media_accessibility": {
                          "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                          "type": "array",
                          "items": {
                            "type": "object",
                            "required": [
                              "index",
                              "alt_text"
                            ],
                            "properties": {
                              "index": {
                                "type": "integer",
                                "minimum": 0
                              },
                              "asset_id": {
                                "type": "string"
                              },
                              "source_url": {
                                "type": "string",
                                "format": "uri"
                              },
                              "alt_text": {
                                "type": "string"
                              }
                            },
                            "additionalProperties": false
                          }
                        }
                      },
                      "additionalProperties": true,
                      "example": {
                        "visibility": "public",
                        "spoiler_text": "Launch spoilers",
                        "language": "en",
                        "quoted_status_id": "123",
                        "poll": {
                          "options": [
                            "Yes",
                            "No"
                          ],
                          "expires_in": 86400
                        }
                      }
                    },
                    {
                      "title": "Dev.to settings",
                      "type": "object",
                      "properties": {
                        "title": {
                          "description": "Article title. Falls back to the first line of the caption.",
                          "type": "string"
                        },
                        "devto_title": {
                          "description": "Article title. Falls back to the first line of the caption. Alias for title.",
                          "type": "string"
                        },
                        "tags": {
                          "description": "Up to 4 tags (lowercase alphanumeric).",
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "devto_tags": {
                          "description": "Up to 4 tags (lowercase alphanumeric). Alias for tags.",
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "canonical_url": {
                          "description": "Canonical URL when cross-posting from your own blog.",
                          "type": "string"
                        },
                        "media_alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "media_accessibility": {
                          "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                          "type": "array",
                          "items": {
                            "type": "object",
                            "required": [
                              "index",
                              "alt_text"
                            ],
                            "properties": {
                              "index": {
                                "type": "integer",
                                "minimum": 0
                              },
                              "asset_id": {
                                "type": "string"
                              },
                              "source_url": {
                                "type": "string",
                                "format": "uri"
                              },
                              "alt_text": {
                                "type": "string"
                              }
                            },
                            "additionalProperties": false
                          }
                        }
                      },
                      "additionalProperties": true,
                      "example": {
                        "title": "How we ship 18 platforms",
                        "tags": [
                          "webdev",
                          "saas"
                        ]
                      }
                    },
                    {
                      "title": "Hashnode settings",
                      "type": "object",
                      "properties": {
                        "title": {
                          "description": "Post title. Falls back to the first line of the caption.",
                          "type": "string"
                        },
                        "hashnode_title": {
                          "description": "Post title. Falls back to the first line of the caption. Alias for title.",
                          "type": "string"
                        },
                        "tags": {
                          "description": "Up to 4 tags (lowercase alphanumeric).",
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "hashnode_tags": {
                          "description": "Up to 4 tags (lowercase alphanumeric). Alias for tags.",
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "publication_id": {
                          "description": "Target publication. Defaults to the account blog captured at connect time.",
                          "type": "string"
                        },
                        "media_alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "media_accessibility": {
                          "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                          "type": "array",
                          "items": {
                            "type": "object",
                            "required": [
                              "index",
                              "alt_text"
                            ],
                            "properties": {
                              "index": {
                                "type": "integer",
                                "minimum": 0
                              },
                              "asset_id": {
                                "type": "string"
                              },
                              "source_url": {
                                "type": "string",
                                "format": "uri"
                              },
                              "alt_text": {
                                "type": "string"
                              }
                            },
                            "additionalProperties": false
                          }
                        }
                      },
                      "additionalProperties": true,
                      "example": {
                        "title": "How we ship 18 platforms",
                        "tags": [
                          "webdev",
                          "saas"
                        ]
                      }
                    },
                    {
                      "title": "WordPress settings",
                      "type": "object",
                      "properties": {
                        "title": {
                          "description": "Post title. Falls back to the first line of the caption.",
                          "type": "string"
                        },
                        "wordpress_title": {
                          "description": "Post title. Falls back to the first line of the caption. Alias for title.",
                          "type": "string"
                        },
                        "media_alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "media_accessibility": {
                          "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                          "type": "array",
                          "items": {
                            "type": "object",
                            "required": [
                              "index",
                              "alt_text"
                            ],
                            "properties": {
                              "index": {
                                "type": "integer",
                                "minimum": 0
                              },
                              "asset_id": {
                                "type": "string"
                              },
                              "source_url": {
                                "type": "string",
                                "format": "uri"
                              },
                              "alt_text": {
                                "type": "string"
                              }
                            },
                            "additionalProperties": false
                          }
                        }
                      },
                      "additionalProperties": true,
                      "example": {
                        "title": "How we ship 18 platforms"
                      }
                    },
                    {
                      "title": "Lemmy settings",
                      "type": "object",
                      "properties": {
                        "community": {
                          "description": "Target community, e.g. technology or technology@lemmy.world.",
                          "type": "string"
                        },
                        "lemmy_community": {
                          "description": "Target community, e.g. technology or technology@lemmy.world. Alias for community.",
                          "type": "string"
                        },
                        "title": {
                          "description": "Post title. Falls back to the first line of the caption.",
                          "type": "string"
                        },
                        "lemmy_title": {
                          "description": "Post title. Falls back to the first line of the caption. Alias for title.",
                          "type": "string"
                        },
                        "url": {
                          "description": "Link post URL. Defaults to the first attached image.",
                          "type": "string"
                        },
                        "lemmy_url": {
                          "description": "Link post URL. Defaults to the first attached image. Alias for url.",
                          "type": "string"
                        },
                        "nsfw": {
                          "description": "Mark the post NSFW.",
                          "type": "boolean"
                        },
                        "media_alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "media_accessibility": {
                          "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                          "type": "array",
                          "items": {
                            "type": "object",
                            "required": [
                              "index",
                              "alt_text"
                            ],
                            "properties": {
                              "index": {
                                "type": "integer",
                                "minimum": 0
                              },
                              "asset_id": {
                                "type": "string"
                              },
                              "source_url": {
                                "type": "string",
                                "format": "uri"
                              },
                              "alt_text": {
                                "type": "string"
                              }
                            },
                            "additionalProperties": false
                          }
                        }
                      },
                      "required": [
                        "community"
                      ],
                      "additionalProperties": true,
                      "example": {
                        "community": "selfhosted@lemmy.world",
                        "title": "posterly now posts to Lemmy"
                      }
                    }
                  ],
                  "additionalProperties": true
                },
                "instagram_settings": {
                  "type": "object",
                  "description": "Platform-specific composer controls. Call list_platforms or get_platform_schema for the selected account before sending settings.",
                  "oneOf": [
                    {
                      "title": "Instagram settings",
                      "type": "object",
                      "properties": {
                        "__type": {
                          "description": "Instagram account type hint.",
                          "enum": [
                            "instagram",
                            "instagram-standalone"
                          ],
                          "type": "string"
                        },
                        "post_type": {
                          "description": "Instagram publishing format.",
                          "enum": [
                            "post",
                            "feed",
                            "story",
                            "reel",
                            "carousel"
                          ],
                          "type": "string"
                        },
                        "is_trial_reel": {
                          "description": "Request an Instagram Trial Reel when the account supports it.",
                          "type": "boolean"
                        },
                        "trial_reel": {
                          "description": "Request an Instagram Trial Reel when the account supports it. Alias for is_trial_reel.",
                          "type": "boolean"
                        },
                        "graduation_strategy": {
                          "description": "Trial Reel graduation strategy.",
                          "enum": [
                            "MANUAL",
                            "SS_PERFORMANCE"
                          ],
                          "type": "string"
                        },
                        "collaborators": {
                          "description": "Native co-author invitations. Meta-linked Instagram accounts only; feed images, Reels, and carousels; maximum 3; not Stories.",
                          "type": "array",
                          "items": {}
                        },
                        "user_tags": {
                          "description": "Native clickable media tags, not caption @mentions. Supported by eligible direct Instagram and Meta-linked connections; feed images, Reels/video, and Stories. Tags apply to each carousel child and the first Story in a Story Series.",
                          "type": "array",
                          "items": {}
                        },
                        "first_comment": {
                          "description": "First comment to publish after the post.",
                          "type": "string"
                        },
                        "reel_cover_url": {
                          "description": "Custom Reel cover image URL.",
                          "type": "string"
                        },
                        "cover_url": {
                          "description": "Custom Reel cover image URL. Alias for reel_cover_url.",
                          "type": "string"
                        },
                        "reel_thumb_offset": {
                          "description": "Video timestamp, in milliseconds, for a generated Reel thumbnail.",
                          "type": "number"
                        },
                        "thumb_offset": {
                          "description": "Video timestamp, in milliseconds, for a generated Reel thumbnail. Alias for reel_thumb_offset.",
                          "type": "number"
                        },
                        "is_ai_generated": {
                          "description": "Label the parent media container as AI-generated (is_ai_generated). For carousels, set this on the parent only, never on child slides.",
                          "type": "boolean"
                        },
                        "instagram_is_ai_generated": {
                          "description": "Label the parent media container as AI-generated (is_ai_generated). For carousels, set this on the parent only, never on child slides. Alias for is_ai_generated.",
                          "type": "boolean"
                        },
                        "ai_generated": {
                          "description": "Label the parent media container as AI-generated (is_ai_generated). For carousels, set this on the parent only, never on child slides. Alias for is_ai_generated.",
                          "type": "boolean"
                        },
                        "audio_id": {
                          "description": "Licensed Instagram audio ID for Reels (audio_configuration.audio_id). Meta-linked Facebook Login accounts only; hidden for Instagram Login.",
                          "type": "string"
                        },
                        "instagram_audio_id": {
                          "description": "Licensed Instagram audio ID for Reels (audio_configuration.audio_id). Meta-linked Facebook Login accounts only; hidden for Instagram Login. Alias for audio_id.",
                          "type": "string"
                        },
                        "media_alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "media_accessibility": {
                          "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                          "type": "array",
                          "items": {
                            "type": "object",
                            "required": [
                              "index",
                              "alt_text"
                            ],
                            "properties": {
                              "index": {
                                "type": "integer",
                                "minimum": 0
                              },
                              "asset_id": {
                                "type": "string"
                              },
                              "source_url": {
                                "type": "string",
                                "format": "uri"
                              },
                              "alt_text": {
                                "type": "string"
                              }
                            },
                            "additionalProperties": false
                          }
                        }
                      },
                      "additionalProperties": true,
                      "example": {
                        "__type": "instagram",
                        "post_type": "reel",
                        "first_comment": "Full details in the caption.",
                        "is_ai_generated": true
                      }
                    },
                    {
                      "title": "Facebook settings",
                      "type": "object",
                      "properties": {
                        "post_type": {
                          "description": "Facebook publishing format. Reel uses the Graph Reels API and must be 90 seconds or shorter; use video for longer clips. A 90.0 second Reel is allowed.",
                          "enum": [
                            "post",
                            "feed",
                            "story",
                            "reel",
                            "cover_photo"
                          ],
                          "type": "string"
                        },
                        "text_format_preset_id": {
                          "description": "Styled text post background preset.",
                          "type": "string"
                        },
                        "background_preset_id": {
                          "description": "Styled text post background preset. Alias for text_format_preset_id.",
                          "type": "string"
                        },
                        "reel_cover_url": {
                          "description": "Custom Reel cover image URL.",
                          "type": "string"
                        },
                        "cover_url": {
                          "description": "Custom Reel cover image URL. Alias for reel_cover_url.",
                          "type": "string"
                        },
                        "media_alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "media_accessibility": {
                          "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                          "type": "array",
                          "items": {
                            "type": "object",
                            "required": [
                              "index",
                              "alt_text"
                            ],
                            "properties": {
                              "index": {
                                "type": "integer",
                                "minimum": 0
                              },
                              "asset_id": {
                                "type": "string"
                              },
                              "source_url": {
                                "type": "string",
                                "format": "uri"
                              },
                              "alt_text": {
                                "type": "string"
                              }
                            },
                            "additionalProperties": false
                          }
                        }
                      },
                      "additionalProperties": true,
                      "example": {
                        "post_type": "reel",
                        "reel_cover_url": "https://example.com/cover.jpg"
                      }
                    },
                    {
                      "title": "TikTok settings",
                      "type": "object",
                      "properties": {
                        "privacy_level": {
                          "description": "TikTok direct-post privacy level from the creator info helper.",
                          "type": "string"
                        },
                        "allow_comment": {
                          "description": "Allow comments when direct posting.",
                          "type": "boolean"
                        },
                        "allow_duet": {
                          "description": "Allow duets when direct posting.",
                          "type": "boolean"
                        },
                        "allow_stitch": {
                          "description": "Allow stitches when direct posting.",
                          "type": "boolean"
                        },
                        "title": {
                          "description": "TikTok title/caption field.",
                          "type": "string"
                        },
                        "media_type": {
                          "description": "Set to PHOTO for TikTok photo posts or multi-photo slideshows.",
                          "enum": [
                            "PHOTO"
                          ],
                          "type": "string"
                        },
                        "photo_cover_index": {
                          "description": "Zero-based cover image index for TikTok photo posts.",
                          "type": "number"
                        },
                        "video_cover_timestamp_ms": {
                          "description": "Millisecond timestamp of the video frame to use as the cover (direct post only).",
                          "type": "number"
                        },
                        "cover_timestamp_ms": {
                          "description": "Millisecond timestamp of the video frame to use as the cover (direct post only). Alias for video_cover_timestamp_ms.",
                          "type": "number"
                        },
                        "auto_add_music": {
                          "description": "Ask TikTok to add recommended music to photo posts when direct posting.",
                          "type": "boolean"
                        },
                        "is_commercial_content": {
                          "description": "TikTok commercial content disclosure.",
                          "type": "boolean"
                        },
                        "is_your_brand": {
                          "description": "TikTok branded content: your own brand.",
                          "type": "boolean"
                        },
                        "is_branded_content": {
                          "description": "TikTok branded content: third-party brand.",
                          "type": "boolean"
                        },
                        "ai_generated": {
                          "description": "Label the post as AI-generated (TikTok is_aigc).",
                          "type": "boolean"
                        },
                        "ai_disclosure": {
                          "description": "Label the post as AI-generated (TikTok is_aigc). Alias for ai_generated.",
                          "type": "boolean"
                        }
                      },
                      "additionalProperties": true,
                      "example": {
                        "privacy_level": "PUBLIC_TO_EVERYONE",
                        "media_type": "PHOTO",
                        "photo_cover_index": 0,
                        "auto_add_music": true,
                        "allow_comment": true,
                        "allow_duet": false,
                        "allow_stitch": false,
                        "video_cover_timestamp_ms": 1500
                      }
                    },
                    {
                      "title": "X settings",
                      "type": "object",
                      "properties": {
                        "reply_settings": {
                          "description": "Who can reply to the post.",
                          "enum": [
                            "everyone",
                            "following",
                            "mentionedUsers",
                            "subscribers",
                            "verified"
                          ],
                          "type": "string"
                        },
                        "x_reply_settings": {
                          "description": "Who can reply to the post. Alias for reply_settings.",
                          "enum": [
                            "everyone",
                            "following",
                            "mentionedUsers",
                            "subscribers",
                            "verified"
                          ],
                          "type": "string"
                        },
                        "poll": {
                          "description": "X poll settings: options and duration_minutes.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "x_poll": {
                          "description": "X poll settings: options and duration_minutes. Alias for poll.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "ai_generated": {
                          "description": "Label the post as AI-generated (X made_with_ai).",
                          "type": "boolean"
                        },
                        "ai_disclosure": {
                          "description": "Label the post as AI-generated (X made_with_ai). Alias for ai_generated.",
                          "type": "boolean"
                        },
                        "made_with_ai": {
                          "description": "Label the post as AI-generated (X made_with_ai). Alias for ai_generated.",
                          "type": "boolean"
                        },
                        "paid_partnership": {
                          "description": "Mark the post as a paid partnership (POST /2/tweets paid_partnership). Existing tweet.write.",
                          "type": "boolean"
                        },
                        "x_paid_partnership": {
                          "description": "Mark the post as a paid partnership (POST /2/tweets paid_partnership). Existing tweet.write. Alias for paid_partnership.",
                          "type": "boolean"
                        },
                        "media_alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "media_accessibility": {
                          "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                          "type": "array",
                          "items": {
                            "type": "object",
                            "required": [
                              "index",
                              "alt_text"
                            ],
                            "properties": {
                              "index": {
                                "type": "integer",
                                "minimum": 0
                              },
                              "asset_id": {
                                "type": "string"
                              },
                              "source_url": {
                                "type": "string",
                                "format": "uri"
                              },
                              "alt_text": {
                                "type": "string"
                              }
                            },
                            "additionalProperties": false
                          }
                        }
                      },
                      "additionalProperties": true,
                      "example": {
                        "reply_settings": "following",
                        "poll": {
                          "options": [
                            "Yes",
                            "No"
                          ],
                          "duration_minutes": 1440
                        },
                        "paid_partnership": true
                      }
                    },
                    {
                      "title": "LinkedIn settings",
                      "type": "object",
                      "properties": {
                        "document_title": {
                          "description": "Title for a LinkedIn PDF/document post.",
                          "type": "string"
                        },
                        "linkedin_document_title": {
                          "description": "Title for a LinkedIn PDF/document post. Alias for document_title.",
                          "type": "string"
                        },
                        "document_filename": {
                          "description": "Filename for a LinkedIn document post.",
                          "type": "string"
                        },
                        "mentions": {
                          "description": "LinkedIn organization mention objects.",
                          "type": "array",
                          "items": {}
                        },
                        "linkedin_mentions": {
                          "description": "LinkedIn organization mention objects. Alias for mentions.",
                          "type": "array",
                          "items": {}
                        },
                        "poll": {
                          "description": "LinkedIn poll: { question, options (2-4), duration (ONE_DAY|THREE_DAYS|SEVEN_DAYS|FOURTEEN_DAYS) }. Mutually exclusive with media.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "linkedin_poll": {
                          "description": "LinkedIn poll: { question, options (2-4), duration (ONE_DAY|THREE_DAYS|SEVEN_DAYS|FOURTEEN_DAYS) }. Mutually exclusive with media. Alias for poll.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "thumbnail_url": {
                          "description": "Custom video thumbnail URL.",
                          "type": "string"
                        },
                        "content_call_to_action_label": {
                          "description": "LinkedIn contentCallToActionLabel, including BUY_NOW and SHOP_NOW (version 202504). Pair with content_landing_page.",
                          "enum": [
                            "APPLY",
                            "DOWNLOAD",
                            "VIEW_QUOTE",
                            "LEARN_MORE",
                            "SIGN_UP",
                            "SUBSCRIBE",
                            "REGISTER",
                            "JOIN",
                            "ATTEND",
                            "REQUEST_DEMO",
                            "SEE_MORE",
                            "BUY_NOW",
                            "SHOP_NOW"
                          ],
                          "type": "string"
                        },
                        "cta_label": {
                          "description": "LinkedIn contentCallToActionLabel, including BUY_NOW and SHOP_NOW (version 202504). Pair with content_landing_page. Alias for content_call_to_action_label.",
                          "enum": [
                            "APPLY",
                            "DOWNLOAD",
                            "VIEW_QUOTE",
                            "LEARN_MORE",
                            "SIGN_UP",
                            "SUBSCRIBE",
                            "REGISTER",
                            "JOIN",
                            "ATTEND",
                            "REQUEST_DEMO",
                            "SEE_MORE",
                            "BUY_NOW",
                            "SHOP_NOW"
                          ],
                          "type": "string"
                        },
                        "linkedin_cta_label": {
                          "description": "LinkedIn contentCallToActionLabel, including BUY_NOW and SHOP_NOW (version 202504). Pair with content_landing_page. Alias for content_call_to_action_label.",
                          "enum": [
                            "APPLY",
                            "DOWNLOAD",
                            "VIEW_QUOTE",
                            "LEARN_MORE",
                            "SIGN_UP",
                            "SUBSCRIBE",
                            "REGISTER",
                            "JOIN",
                            "ATTEND",
                            "REQUEST_DEMO",
                            "SEE_MORE",
                            "BUY_NOW",
                            "SHOP_NOW"
                          ],
                          "type": "string"
                        },
                        "content_landing_page": {
                          "description": "Landing page URL sent as contentLandingPage with the LinkedIn call to action.",
                          "type": "string"
                        },
                        "cta_url": {
                          "description": "Landing page URL sent as contentLandingPage with the LinkedIn call to action. Alias for content_landing_page.",
                          "type": "string"
                        },
                        "linkedin_cta_url": {
                          "description": "Landing page URL sent as contentLandingPage with the LinkedIn call to action. Alias for content_landing_page.",
                          "type": "string"
                        },
                        "media_alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "media_accessibility": {
                          "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                          "type": "array",
                          "items": {
                            "type": "object",
                            "required": [
                              "index",
                              "alt_text"
                            ],
                            "properties": {
                              "index": {
                                "type": "integer",
                                "minimum": 0
                              },
                              "asset_id": {
                                "type": "string"
                              },
                              "source_url": {
                                "type": "string",
                                "format": "uri"
                              },
                              "alt_text": {
                                "type": "string"
                              }
                            },
                            "additionalProperties": false
                          }
                        }
                      },
                      "additionalProperties": true,
                      "example": {
                        "document_title": "Launch plan",
                        "mentions": [
                          {
                            "display_name": "posterly",
                            "urn": "urn:li:organization:123"
                          }
                        ],
                        "poll": {
                          "question": "Which feature next?",
                          "options": [
                            "Polls",
                            "Analytics"
                          ],
                          "duration": "THREE_DAYS"
                        },
                        "content_call_to_action_label": "BUY_NOW",
                        "content_landing_page": "https://www.poster.ly"
                      }
                    },
                    {
                      "title": "YouTube settings",
                      "type": "object",
                      "properties": {
                        "title": {
                          "description": "YouTube video title.",
                          "type": "string"
                        },
                        "youtube_title": {
                          "description": "YouTube video title. Alias for title.",
                          "type": "string"
                        },
                        "thumbnail_url": {
                          "description": "Custom YouTube thumbnail URL.",
                          "type": "string"
                        },
                        "privacy_status": {
                          "description": "YouTube video visibility.",
                          "enum": [
                            "public",
                            "unlisted",
                            "private"
                          ],
                          "type": "string"
                        },
                        "privacy": {
                          "description": "YouTube video visibility. Alias for privacy_status.",
                          "enum": [
                            "public",
                            "unlisted",
                            "private"
                          ],
                          "type": "string"
                        },
                        "made_for_kids": {
                          "description": "YouTube made-for-kids declaration.",
                          "type": "boolean"
                        },
                        "tags": {
                          "description": "YouTube tags.",
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "category_id": {
                          "description": "YouTube category ID.",
                          "type": "string"
                        },
                        "notify_subscribers": {
                          "description": "Notify subscribers when the video publishes (default true).",
                          "type": "boolean"
                        },
                        "add_shorts_hashtag": {
                          "description": "Append #Shorts to the description for Shorts-feed eligibility (vertical clips).",
                          "type": "boolean"
                        },
                        "ai_generated": {
                          "description": "Label the video as containing AI/synthetic media (containsSyntheticMedia).",
                          "type": "boolean"
                        },
                        "ai_disclosure": {
                          "description": "Label the video as containing AI/synthetic media (containsSyntheticMedia). Alias for ai_generated.",
                          "type": "boolean"
                        },
                        "brand_partner": {
                          "description": "Optional YouTube brandPartner channel ID (UC…) or handle (@…). Added to videos.insert part=brandPartner when set.",
                          "type": "string"
                        },
                        "brandPartner": {
                          "description": "Optional YouTube brandPartner channel ID (UC…) or handle (@…). Added to videos.insert part=brandPartner when set. Alias for brand_partner.",
                          "type": "string"
                        }
                      },
                      "required": [
                        "title"
                      ],
                      "additionalProperties": true,
                      "example": {
                        "title": "Launch walkthrough",
                        "privacy_status": "unlisted",
                        "notify_subscribers": false,
                        "add_shorts_hashtag": true,
                        "brand_partner": "@brand"
                      }
                    },
                    {
                      "title": "Pinterest settings",
                      "type": "object",
                      "properties": {
                        "board_id": {
                          "description": "Pinterest board ID from the pinterest.boards helper.",
                          "type": "string"
                        },
                        "pinterest_board_id": {
                          "description": "Pinterest board ID from the pinterest.boards helper. Alias for board_id.",
                          "type": "string"
                        },
                        "title": {
                          "description": "Pinterest Pin title.",
                          "type": "string"
                        },
                        "link": {
                          "description": "Destination URL for the Pin.",
                          "type": "string"
                        },
                        "destination_url": {
                          "description": "Destination URL for the Pin. Alias for link.",
                          "type": "string"
                        },
                        "cover_image_url": {
                          "description": "Required for video Pins: a stored, probe-verified JPEG or PNG cover URL (20 MiB maximum).",
                          "type": "string"
                        },
                        "video_cover_url": {
                          "description": "Required for video Pins: a stored, probe-verified JPEG or PNG cover URL (20 MiB maximum). Alias for cover_image_url.",
                          "type": "string"
                        },
                        "pinterest_cover_image_url": {
                          "description": "Required for video Pins: a stored, probe-verified JPEG or PNG cover URL (20 MiB maximum). Alias for cover_image_url.",
                          "type": "string"
                        },
                        "ai_generated": {
                          "description": "Label the Pin as AI-modified (ai_disclosures).",
                          "type": "boolean"
                        },
                        "ai_disclosure": {
                          "description": "Label the Pin as AI-modified (ai_disclosures). Alias for ai_generated.",
                          "type": "boolean"
                        },
                        "product_tags": {
                          "description": "Optional product tags on POST /v5/pins (product_id, optional x/y). Existing pins:write. Pin note is not written.",
                          "type": "array",
                          "items": {}
                        },
                        "media_alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "media_accessibility": {
                          "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                          "type": "array",
                          "items": {
                            "type": "object",
                            "required": [
                              "index",
                              "alt_text"
                            ],
                            "properties": {
                              "index": {
                                "type": "integer",
                                "minimum": 0
                              },
                              "asset_id": {
                                "type": "string"
                              },
                              "source_url": {
                                "type": "string",
                                "format": "uri"
                              },
                              "alt_text": {
                                "type": "string"
                              }
                            },
                            "additionalProperties": false
                          }
                        }
                      },
                      "required": [
                        "board_id"
                      ],
                      "additionalProperties": true,
                      "example": {
                        "board_id": "123456789",
                        "title": "Launch ideas",
                        "link": "https://www.poster.ly",
                        "cover_image_url": "https://assets.poster.ly/users/123/pinterest-video-covers/cover.jpg",
                        "product_tags": [
                          {
                            "product_id": "123"
                          }
                        ]
                      }
                    },
                    {
                      "title": "Threads settings",
                      "type": "object",
                      "properties": {
                        "reply_control": {
                          "description": "Threads reply control setting.",
                          "enum": [
                            "everyone",
                            "accounts_you_follow",
                            "mentioned_only",
                            "followers_only",
                            "parent_post_author_only"
                          ],
                          "type": "string"
                        },
                        "threads_reply_control": {
                          "description": "Threads reply control setting. Alias for reply_control.",
                          "enum": [
                            "everyone",
                            "accounts_you_follow",
                            "mentioned_only",
                            "followers_only",
                            "parent_post_author_only"
                          ],
                          "type": "string"
                        },
                        "poll": {
                          "description": "Threads poll: { options (2-4) }. Text-only, fixed 24h duration.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "threads_poll": {
                          "description": "Threads poll: { options (2-4) }. Text-only, fixed 24h duration. Alias for poll.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "topic_tag": {
                          "description": "A single Threads topic tag (1-50 chars, no periods/ampersands).",
                          "type": "string"
                        },
                        "threads_topic_tag": {
                          "description": "A single Threads topic tag (1-50 chars, no periods/ampersands). Alias for topic_tag.",
                          "type": "string"
                        },
                        "text_attachment": {
                          "description": "Long-form Threads text attachment.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "threads_text_attachment": {
                          "description": "Long-form Threads text attachment. Alias for text_attachment.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "share_to_instagram": {
                          "description": "Also share the published post to the Instagram account linked to the Threads profile as a Story (dark card). Requires Instagram sharing enabled for the Threads profile in the Threads app.",
                          "type": "boolean"
                        },
                        "threads_share_to_instagram": {
                          "description": "Also share the published post to the Instagram account linked to the Threads profile as a Story (dark card). Requires Instagram sharing enabled for the Threads profile in the Threads app. Alias for share_to_instagram.",
                          "type": "boolean"
                        },
                        "is_ghost_post": {
                          "description": "Publish as a Threads ghost post. Text-only.",
                          "type": "boolean"
                        },
                        "threads_is_ghost_post": {
                          "description": "Publish as a Threads ghost post. Text-only. Alias for is_ghost_post.",
                          "type": "boolean"
                        },
                        "is_spoiler": {
                          "description": "Mark the Threads post as a spoiler (full-caption text entity and/or is_spoiler_media).",
                          "type": "boolean"
                        },
                        "threads_is_spoiler": {
                          "description": "Mark the Threads post as a spoiler (full-caption text entity and/or is_spoiler_media). Alias for is_spoiler.",
                          "type": "boolean"
                        },
                        "is_spoiler_media": {
                          "description": "Set is_spoiler_media on the Threads container when media is attached.",
                          "type": "boolean"
                        },
                        "threads_is_spoiler_media": {
                          "description": "Set is_spoiler_media on the Threads container when media is attached. Alias for is_spoiler_media.",
                          "type": "boolean"
                        },
                        "text_entities": {
                          "description": "Threads text_entities, for example spoiler ranges with entity_type, offset, and length.",
                          "type": "array",
                          "items": {}
                        },
                        "threads_text_entities": {
                          "description": "Threads text_entities, for example spoiler ranges with entity_type, offset, and length. Alias for text_entities.",
                          "type": "array",
                          "items": {}
                        },
                        "enable_reply_approvals": {
                          "description": "Require approval before replies appear (enable_reply_approvals).",
                          "type": "boolean"
                        },
                        "threads_enable_reply_approvals": {
                          "description": "Require approval before replies appear (enable_reply_approvals). Alias for enable_reply_approvals.",
                          "type": "boolean"
                        },
                        "gif_attachment": {
                          "description": "GIPHY gif_attachment: { gif_id, provider: \"GIPHY\" }. Tenor is not supported.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "threads_gif_attachment": {
                          "description": "GIPHY gif_attachment: { gif_id, provider: \"GIPHY\" }. Tenor is not supported. Alias for gif_attachment.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "media_alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "media_accessibility": {
                          "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                          "type": "array",
                          "items": {
                            "type": "object",
                            "required": [
                              "index",
                              "alt_text"
                            ],
                            "properties": {
                              "index": {
                                "type": "integer",
                                "minimum": 0
                              },
                              "asset_id": {
                                "type": "string"
                              },
                              "source_url": {
                                "type": "string",
                                "format": "uri"
                              },
                              "alt_text": {
                                "type": "string"
                              }
                            },
                            "additionalProperties": false
                          }
                        }
                      },
                      "additionalProperties": true,
                      "example": {
                        "reply_control": "everyone",
                        "poll": {
                          "options": [
                            "Polls",
                            "Analytics"
                          ]
                        },
                        "topic_tag": "producthunt",
                        "is_ghost_post": false,
                        "enable_reply_approvals": true
                      }
                    },
                    {
                      "title": "Google Business settings",
                      "type": "object",
                      "properties": {
                        "post_type": {
                          "description": "Google Business Profile post type.",
                          "enum": [
                            "STANDARD",
                            "EVENT",
                            "OFFER"
                          ],
                          "type": "string"
                        },
                        "topic_type": {
                          "description": "Google Business Profile post type. Alias for post_type.",
                          "enum": [
                            "STANDARD",
                            "EVENT",
                            "OFFER"
                          ],
                          "type": "string"
                        },
                        "event": {
                          "description": "Event title and start/end date/time.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "offer": {
                          "description": "Offer coupon, redeem URL, and terms.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "cta": {
                          "description": "CTA type and URL.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "recurrence": {
                          "description": "EVENT/OFFER recurrenceInfo: { type: DAILY|WEEKLY|MONTHLY, series_end_time? }. Keeps one-off scheduledTime.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "recurrenceInfo": {
                          "description": "EVENT/OFFER recurrenceInfo: { type: DAILY|WEEKLY|MONTHLY, series_end_time? }. Keeps one-off scheduledTime. Alias for recurrence.",
                          "type": "object",
                          "additionalProperties": true
                        }
                      },
                      "additionalProperties": true,
                      "example": {
                        "post_type": "EVENT",
                        "event": {
                          "title": "Launch night",
                          "start_date": "2026-09-01"
                        },
                        "recurrence": {
                          "type": "WEEKLY",
                          "series_end_time": "2026-12-01T00:00:00Z"
                        },
                        "cta": {
                          "type": "LEARN_MORE",
                          "url": "https://www.poster.ly"
                        }
                      }
                    },
                    {
                      "title": "Telegram settings",
                      "type": "object",
                      "properties": {
                        "parse_mode": {
                          "description": "Telegram caption parse mode when supported.",
                          "enum": [
                            "HTML",
                            "MarkdownV2"
                          ],
                          "type": "string"
                        },
                        "disable_web_page_preview": {
                          "description": "Disable link previews for text posts.",
                          "type": "boolean"
                        },
                        "poll": {
                          "description": "Telegram native poll: { question, options (2-10), allows_multiple_answers? }.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "telegram_poll": {
                          "description": "Telegram native poll: { question, options (2-10), allows_multiple_answers? }. Alias for poll.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "buttons": {
                          "description": "Inline CTA buttons: [{ text, url }] (up to 3).",
                          "type": "array",
                          "items": {}
                        },
                        "telegram_buttons": {
                          "description": "Inline CTA buttons: [{ text, url }] (up to 3). Alias for buttons.",
                          "type": "array",
                          "items": {}
                        },
                        "video_cover_url": {
                          "description": "Cover image URL for sendVideo (Bot API cover).",
                          "type": "string"
                        },
                        "cover_url": {
                          "description": "Cover image URL for sendVideo (Bot API cover). Alias for video_cover_url.",
                          "type": "string"
                        },
                        "telegram_video_cover_url": {
                          "description": "Cover image URL for sendVideo (Bot API cover). Alias for video_cover_url.",
                          "type": "string"
                        },
                        "start_timestamp": {
                          "description": "Video start timestamp in seconds for sendVideo (Bot API start_timestamp).",
                          "type": "number"
                        },
                        "telegram_start_timestamp": {
                          "description": "Video start timestamp in seconds for sendVideo (Bot API start_timestamp). Alias for start_timestamp.",
                          "type": "number"
                        },
                        "is_live_photo": {
                          "description": "Send as sendLivePhoto when both a still image and a video are attached.",
                          "type": "boolean"
                        },
                        "telegram_is_live_photo": {
                          "description": "Send as sendLivePhoto when both a still image and a video are attached. Alias for is_live_photo.",
                          "type": "boolean"
                        }
                      },
                      "additionalProperties": true,
                      "example": {
                        "poll": {
                          "question": "Which feature next?",
                          "options": [
                            "Polls",
                            "Analytics"
                          ]
                        },
                        "buttons": [
                          {
                            "text": "Read more",
                            "url": "https://www.poster.ly"
                          }
                        ],
                        "video_cover_url": "https://example.com/cover.jpg"
                      }
                    },
                    {
                      "title": "Bluesky settings",
                      "type": "object",
                      "properties": {
                        "langs": {
                          "description": "Language tags for the Bluesky post.",
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "content_label": {
                          "description": "Self-applied content warning (tap-to-reveal).",
                          "enum": [
                            "sexual",
                            "nudity",
                            "porn",
                            "graphic-media"
                          ],
                          "type": "string"
                        },
                        "content_warning": {
                          "description": "Self-applied content warning (tap-to-reveal). Alias for content_label.",
                          "enum": [
                            "sexual",
                            "nudity",
                            "porn",
                            "graphic-media"
                          ],
                          "type": "string"
                        },
                        "tags": {
                          "description": "Up to 8 hidden discovery tags (separate from in-text hashtags).",
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "bluesky_tags": {
                          "description": "Up to 8 hidden discovery tags (separate from in-text hashtags). Alias for tags.",
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "quote_url": {
                          "description": "A Bluesky post URL (or AT-URI) to quote.",
                          "type": "string"
                        },
                        "quote": {
                          "description": "A Bluesky post URL (or AT-URI) to quote. Alias for quote_url.",
                          "type": "string"
                        },
                        "bluesky_quote_url": {
                          "description": "A Bluesky post URL (or AT-URI) to quote. Alias for quote_url.",
                          "type": "string"
                        },
                        "disable_quotes": {
                          "description": "Prevent others from quote-posting this post (postgate).",
                          "type": "boolean"
                        },
                        "media_alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "media_accessibility": {
                          "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                          "type": "array",
                          "items": {
                            "type": "object",
                            "required": [
                              "index",
                              "alt_text"
                            ],
                            "properties": {
                              "index": {
                                "type": "integer",
                                "minimum": 0
                              },
                              "asset_id": {
                                "type": "string"
                              },
                              "source_url": {
                                "type": "string",
                                "format": "uri"
                              },
                              "alt_text": {
                                "type": "string"
                              }
                            },
                            "additionalProperties": false
                          }
                        }
                      },
                      "additionalProperties": true,
                      "example": {
                        "langs": [
                          "en"
                        ],
                        "tags": [
                          "producthunt",
                          "launch"
                        ],
                        "quote_url": "https://bsky.app/profile/poster.ly/post/abc123"
                      }
                    },
                    {
                      "title": "Discord settings",
                      "type": "object",
                      "properties": {
                        "media_alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "media_accessibility": {
                          "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                          "type": "array",
                          "items": {
                            "type": "object",
                            "required": [
                              "index",
                              "alt_text"
                            ],
                            "properties": {
                              "index": {
                                "type": "integer",
                                "minimum": 0
                              },
                              "asset_id": {
                                "type": "string"
                              },
                              "source_url": {
                                "type": "string",
                                "format": "uri"
                              },
                              "alt_text": {
                                "type": "string"
                              }
                            },
                            "additionalProperties": false
                          }
                        }
                      },
                      "additionalProperties": true,
                      "example": {
                        "media_alt_texts": {
                          "https://example.com/chart.png": "Q2 revenue chart"
                        }
                      }
                    },
                    {
                      "title": "Slack settings",
                      "type": "object",
                      "properties": {
                        "markdown": {
                          "description": "Send the caption as a Block Kit markdown block on chat.postMessage.",
                          "type": "boolean"
                        },
                        "slack_markdown": {
                          "description": "Send the caption as a Block Kit markdown block on chat.postMessage. Alias for markdown.",
                          "type": "boolean"
                        },
                        "blocks": {
                          "description": "Optional Block Kit blocks (markdown, card, or carousel) passed to chat.postMessage. File upload still uses getUploadURLExternal.",
                          "type": "array",
                          "items": {}
                        },
                        "slack_blocks": {
                          "description": "Optional Block Kit blocks (markdown, card, or carousel) passed to chat.postMessage. File upload still uses getUploadURLExternal. Alias for blocks.",
                          "type": "array",
                          "items": {}
                        }
                      },
                      "additionalProperties": true,
                      "example": {
                        "markdown": true
                      }
                    },
                    {
                      "title": "Mastodon settings",
                      "type": "object",
                      "properties": {
                        "visibility": {
                          "description": "Status visibility (private means followers only).",
                          "enum": [
                            "public",
                            "unlisted",
                            "private"
                          ],
                          "type": "string"
                        },
                        "mastodon_visibility": {
                          "description": "Status visibility (private means followers only). Alias for visibility.",
                          "enum": [
                            "public",
                            "unlisted",
                            "private"
                          ],
                          "type": "string"
                        },
                        "spoiler_text": {
                          "description": "Content warning shown before the post is revealed (marks media sensitive).",
                          "type": "string"
                        },
                        "content_warning": {
                          "description": "Content warning shown before the post is revealed (marks media sensitive). Alias for spoiler_text.",
                          "type": "string"
                        },
                        "mastodon_spoiler_text": {
                          "description": "Content warning shown before the post is revealed (marks media sensitive). Alias for spoiler_text.",
                          "type": "string"
                        },
                        "language": {
                          "description": "ISO 639 language code for the status.",
                          "type": "string"
                        },
                        "mastodon_language": {
                          "description": "ISO 639 language code for the status. Alias for language.",
                          "type": "string"
                        },
                        "quoted_status_id": {
                          "description": "Mastodon status ID to quote (4.5+ quoted_status_id).",
                          "type": "string"
                        },
                        "quote_id": {
                          "description": "Mastodon status ID to quote (4.5+ quoted_status_id). Alias for quoted_status_id.",
                          "type": "string"
                        },
                        "mastodon_quoted_status_id": {
                          "description": "Mastodon status ID to quote (4.5+ quoted_status_id). Alias for quoted_status_id.",
                          "type": "string"
                        },
                        "poll": {
                          "description": "Mastodon poll: { options (2-4), expires_in seconds, multiple? }. Media and a poll can be combined on Mastodon 4.6+.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "mastodon_poll": {
                          "description": "Mastodon poll: { options (2-4), expires_in seconds, multiple? }. Media and a poll can be combined on Mastodon 4.6+. Alias for poll.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "media_alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "media_accessibility": {
                          "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                          "type": "array",
                          "items": {
                            "type": "object",
                            "required": [
                              "index",
                              "alt_text"
                            ],
                            "properties": {
                              "index": {
                                "type": "integer",
                                "minimum": 0
                              },
                              "asset_id": {
                                "type": "string"
                              },
                              "source_url": {
                                "type": "string",
                                "format": "uri"
                              },
                              "alt_text": {
                                "type": "string"
                              }
                            },
                            "additionalProperties": false
                          }
                        }
                      },
                      "additionalProperties": true,
                      "example": {
                        "visibility": "public",
                        "spoiler_text": "Launch spoilers",
                        "language": "en",
                        "quoted_status_id": "123",
                        "poll": {
                          "options": [
                            "Yes",
                            "No"
                          ],
                          "expires_in": 86400
                        }
                      }
                    },
                    {
                      "title": "Dev.to settings",
                      "type": "object",
                      "properties": {
                        "title": {
                          "description": "Article title. Falls back to the first line of the caption.",
                          "type": "string"
                        },
                        "devto_title": {
                          "description": "Article title. Falls back to the first line of the caption. Alias for title.",
                          "type": "string"
                        },
                        "tags": {
                          "description": "Up to 4 tags (lowercase alphanumeric).",
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "devto_tags": {
                          "description": "Up to 4 tags (lowercase alphanumeric). Alias for tags.",
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "canonical_url": {
                          "description": "Canonical URL when cross-posting from your own blog.",
                          "type": "string"
                        },
                        "media_alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "media_accessibility": {
                          "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                          "type": "array",
                          "items": {
                            "type": "object",
                            "required": [
                              "index",
                              "alt_text"
                            ],
                            "properties": {
                              "index": {
                                "type": "integer",
                                "minimum": 0
                              },
                              "asset_id": {
                                "type": "string"
                              },
                              "source_url": {
                                "type": "string",
                                "format": "uri"
                              },
                              "alt_text": {
                                "type": "string"
                              }
                            },
                            "additionalProperties": false
                          }
                        }
                      },
                      "additionalProperties": true,
                      "example": {
                        "title": "How we ship 18 platforms",
                        "tags": [
                          "webdev",
                          "saas"
                        ]
                      }
                    },
                    {
                      "title": "Hashnode settings",
                      "type": "object",
                      "properties": {
                        "title": {
                          "description": "Post title. Falls back to the first line of the caption.",
                          "type": "string"
                        },
                        "hashnode_title": {
                          "description": "Post title. Falls back to the first line of the caption. Alias for title.",
                          "type": "string"
                        },
                        "tags": {
                          "description": "Up to 4 tags (lowercase alphanumeric).",
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "hashnode_tags": {
                          "description": "Up to 4 tags (lowercase alphanumeric). Alias for tags.",
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "publication_id": {
                          "description": "Target publication. Defaults to the account blog captured at connect time.",
                          "type": "string"
                        },
                        "media_alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "media_accessibility": {
                          "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                          "type": "array",
                          "items": {
                            "type": "object",
                            "required": [
                              "index",
                              "alt_text"
                            ],
                            "properties": {
                              "index": {
                                "type": "integer",
                                "minimum": 0
                              },
                              "asset_id": {
                                "type": "string"
                              },
                              "source_url": {
                                "type": "string",
                                "format": "uri"
                              },
                              "alt_text": {
                                "type": "string"
                              }
                            },
                            "additionalProperties": false
                          }
                        }
                      },
                      "additionalProperties": true,
                      "example": {
                        "title": "How we ship 18 platforms",
                        "tags": [
                          "webdev",
                          "saas"
                        ]
                      }
                    },
                    {
                      "title": "WordPress settings",
                      "type": "object",
                      "properties": {
                        "title": {
                          "description": "Post title. Falls back to the first line of the caption.",
                          "type": "string"
                        },
                        "wordpress_title": {
                          "description": "Post title. Falls back to the first line of the caption. Alias for title.",
                          "type": "string"
                        },
                        "media_alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "media_accessibility": {
                          "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                          "type": "array",
                          "items": {
                            "type": "object",
                            "required": [
                              "index",
                              "alt_text"
                            ],
                            "properties": {
                              "index": {
                                "type": "integer",
                                "minimum": 0
                              },
                              "asset_id": {
                                "type": "string"
                              },
                              "source_url": {
                                "type": "string",
                                "format": "uri"
                              },
                              "alt_text": {
                                "type": "string"
                              }
                            },
                            "additionalProperties": false
                          }
                        }
                      },
                      "additionalProperties": true,
                      "example": {
                        "title": "How we ship 18 platforms"
                      }
                    },
                    {
                      "title": "Lemmy settings",
                      "type": "object",
                      "properties": {
                        "community": {
                          "description": "Target community, e.g. technology or technology@lemmy.world.",
                          "type": "string"
                        },
                        "lemmy_community": {
                          "description": "Target community, e.g. technology or technology@lemmy.world. Alias for community.",
                          "type": "string"
                        },
                        "title": {
                          "description": "Post title. Falls back to the first line of the caption.",
                          "type": "string"
                        },
                        "lemmy_title": {
                          "description": "Post title. Falls back to the first line of the caption. Alias for title.",
                          "type": "string"
                        },
                        "url": {
                          "description": "Link post URL. Defaults to the first attached image.",
                          "type": "string"
                        },
                        "lemmy_url": {
                          "description": "Link post URL. Defaults to the first attached image. Alias for url.",
                          "type": "string"
                        },
                        "nsfw": {
                          "description": "Mark the post NSFW.",
                          "type": "boolean"
                        },
                        "media_alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "media_accessibility": {
                          "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                          "type": "array",
                          "items": {
                            "type": "object",
                            "required": [
                              "index",
                              "alt_text"
                            ],
                            "properties": {
                              "index": {
                                "type": "integer",
                                "minimum": 0
                              },
                              "asset_id": {
                                "type": "string"
                              },
                              "source_url": {
                                "type": "string",
                                "format": "uri"
                              },
                              "alt_text": {
                                "type": "string"
                              }
                            },
                            "additionalProperties": false
                          }
                        }
                      },
                      "required": [
                        "community"
                      ],
                      "additionalProperties": true,
                      "example": {
                        "community": "selfhosted@lemmy.world",
                        "title": "posterly now posts to Lemmy"
                      }
                    }
                  ],
                  "additionalProperties": true
                },
                "settings": {
                  "type": "object",
                  "description": "Platform-specific composer controls. Call list_platforms or get_platform_schema for the selected account before sending settings.",
                  "oneOf": [
                    {
                      "title": "Instagram settings",
                      "type": "object",
                      "properties": {
                        "__type": {
                          "description": "Instagram account type hint.",
                          "enum": [
                            "instagram",
                            "instagram-standalone"
                          ],
                          "type": "string"
                        },
                        "post_type": {
                          "description": "Instagram publishing format.",
                          "enum": [
                            "post",
                            "feed",
                            "story",
                            "reel",
                            "carousel"
                          ],
                          "type": "string"
                        },
                        "is_trial_reel": {
                          "description": "Request an Instagram Trial Reel when the account supports it.",
                          "type": "boolean"
                        },
                        "trial_reel": {
                          "description": "Request an Instagram Trial Reel when the account supports it. Alias for is_trial_reel.",
                          "type": "boolean"
                        },
                        "graduation_strategy": {
                          "description": "Trial Reel graduation strategy.",
                          "enum": [
                            "MANUAL",
                            "SS_PERFORMANCE"
                          ],
                          "type": "string"
                        },
                        "collaborators": {
                          "description": "Native co-author invitations. Meta-linked Instagram accounts only; feed images, Reels, and carousels; maximum 3; not Stories.",
                          "type": "array",
                          "items": {}
                        },
                        "user_tags": {
                          "description": "Native clickable media tags, not caption @mentions. Supported by eligible direct Instagram and Meta-linked connections; feed images, Reels/video, and Stories. Tags apply to each carousel child and the first Story in a Story Series.",
                          "type": "array",
                          "items": {}
                        },
                        "first_comment": {
                          "description": "First comment to publish after the post.",
                          "type": "string"
                        },
                        "reel_cover_url": {
                          "description": "Custom Reel cover image URL.",
                          "type": "string"
                        },
                        "cover_url": {
                          "description": "Custom Reel cover image URL. Alias for reel_cover_url.",
                          "type": "string"
                        },
                        "reel_thumb_offset": {
                          "description": "Video timestamp, in milliseconds, for a generated Reel thumbnail.",
                          "type": "number"
                        },
                        "thumb_offset": {
                          "description": "Video timestamp, in milliseconds, for a generated Reel thumbnail. Alias for reel_thumb_offset.",
                          "type": "number"
                        },
                        "is_ai_generated": {
                          "description": "Label the parent media container as AI-generated (is_ai_generated). For carousels, set this on the parent only, never on child slides.",
                          "type": "boolean"
                        },
                        "instagram_is_ai_generated": {
                          "description": "Label the parent media container as AI-generated (is_ai_generated). For carousels, set this on the parent only, never on child slides. Alias for is_ai_generated.",
                          "type": "boolean"
                        },
                        "ai_generated": {
                          "description": "Label the parent media container as AI-generated (is_ai_generated). For carousels, set this on the parent only, never on child slides. Alias for is_ai_generated.",
                          "type": "boolean"
                        },
                        "audio_id": {
                          "description": "Licensed Instagram audio ID for Reels (audio_configuration.audio_id). Meta-linked Facebook Login accounts only; hidden for Instagram Login.",
                          "type": "string"
                        },
                        "instagram_audio_id": {
                          "description": "Licensed Instagram audio ID for Reels (audio_configuration.audio_id). Meta-linked Facebook Login accounts only; hidden for Instagram Login. Alias for audio_id.",
                          "type": "string"
                        },
                        "media_alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "media_accessibility": {
                          "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                          "type": "array",
                          "items": {
                            "type": "object",
                            "required": [
                              "index",
                              "alt_text"
                            ],
                            "properties": {
                              "index": {
                                "type": "integer",
                                "minimum": 0
                              },
                              "asset_id": {
                                "type": "string"
                              },
                              "source_url": {
                                "type": "string",
                                "format": "uri"
                              },
                              "alt_text": {
                                "type": "string"
                              }
                            },
                            "additionalProperties": false
                          }
                        }
                      },
                      "additionalProperties": true,
                      "example": {
                        "__type": "instagram",
                        "post_type": "reel",
                        "first_comment": "Full details in the caption.",
                        "is_ai_generated": true
                      }
                    },
                    {
                      "title": "Facebook settings",
                      "type": "object",
                      "properties": {
                        "post_type": {
                          "description": "Facebook publishing format. Reel uses the Graph Reels API and must be 90 seconds or shorter; use video for longer clips. A 90.0 second Reel is allowed.",
                          "enum": [
                            "post",
                            "feed",
                            "story",
                            "reel",
                            "cover_photo"
                          ],
                          "type": "string"
                        },
                        "text_format_preset_id": {
                          "description": "Styled text post background preset.",
                          "type": "string"
                        },
                        "background_preset_id": {
                          "description": "Styled text post background preset. Alias for text_format_preset_id.",
                          "type": "string"
                        },
                        "reel_cover_url": {
                          "description": "Custom Reel cover image URL.",
                          "type": "string"
                        },
                        "cover_url": {
                          "description": "Custom Reel cover image URL. Alias for reel_cover_url.",
                          "type": "string"
                        },
                        "media_alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "media_accessibility": {
                          "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                          "type": "array",
                          "items": {
                            "type": "object",
                            "required": [
                              "index",
                              "alt_text"
                            ],
                            "properties": {
                              "index": {
                                "type": "integer",
                                "minimum": 0
                              },
                              "asset_id": {
                                "type": "string"
                              },
                              "source_url": {
                                "type": "string",
                                "format": "uri"
                              },
                              "alt_text": {
                                "type": "string"
                              }
                            },
                            "additionalProperties": false
                          }
                        }
                      },
                      "additionalProperties": true,
                      "example": {
                        "post_type": "reel",
                        "reel_cover_url": "https://example.com/cover.jpg"
                      }
                    },
                    {
                      "title": "TikTok settings",
                      "type": "object",
                      "properties": {
                        "privacy_level": {
                          "description": "TikTok direct-post privacy level from the creator info helper.",
                          "type": "string"
                        },
                        "allow_comment": {
                          "description": "Allow comments when direct posting.",
                          "type": "boolean"
                        },
                        "allow_duet": {
                          "description": "Allow duets when direct posting.",
                          "type": "boolean"
                        },
                        "allow_stitch": {
                          "description": "Allow stitches when direct posting.",
                          "type": "boolean"
                        },
                        "title": {
                          "description": "TikTok title/caption field.",
                          "type": "string"
                        },
                        "media_type": {
                          "description": "Set to PHOTO for TikTok photo posts or multi-photo slideshows.",
                          "enum": [
                            "PHOTO"
                          ],
                          "type": "string"
                        },
                        "photo_cover_index": {
                          "description": "Zero-based cover image index for TikTok photo posts.",
                          "type": "number"
                        },
                        "video_cover_timestamp_ms": {
                          "description": "Millisecond timestamp of the video frame to use as the cover (direct post only).",
                          "type": "number"
                        },
                        "cover_timestamp_ms": {
                          "description": "Millisecond timestamp of the video frame to use as the cover (direct post only). Alias for video_cover_timestamp_ms.",
                          "type": "number"
                        },
                        "auto_add_music": {
                          "description": "Ask TikTok to add recommended music to photo posts when direct posting.",
                          "type": "boolean"
                        },
                        "is_commercial_content": {
                          "description": "TikTok commercial content disclosure.",
                          "type": "boolean"
                        },
                        "is_your_brand": {
                          "description": "TikTok branded content: your own brand.",
                          "type": "boolean"
                        },
                        "is_branded_content": {
                          "description": "TikTok branded content: third-party brand.",
                          "type": "boolean"
                        },
                        "ai_generated": {
                          "description": "Label the post as AI-generated (TikTok is_aigc).",
                          "type": "boolean"
                        },
                        "ai_disclosure": {
                          "description": "Label the post as AI-generated (TikTok is_aigc). Alias for ai_generated.",
                          "type": "boolean"
                        }
                      },
                      "additionalProperties": true,
                      "example": {
                        "privacy_level": "PUBLIC_TO_EVERYONE",
                        "media_type": "PHOTO",
                        "photo_cover_index": 0,
                        "auto_add_music": true,
                        "allow_comment": true,
                        "allow_duet": false,
                        "allow_stitch": false,
                        "video_cover_timestamp_ms": 1500
                      }
                    },
                    {
                      "title": "X settings",
                      "type": "object",
                      "properties": {
                        "reply_settings": {
                          "description": "Who can reply to the post.",
                          "enum": [
                            "everyone",
                            "following",
                            "mentionedUsers",
                            "subscribers",
                            "verified"
                          ],
                          "type": "string"
                        },
                        "x_reply_settings": {
                          "description": "Who can reply to the post. Alias for reply_settings.",
                          "enum": [
                            "everyone",
                            "following",
                            "mentionedUsers",
                            "subscribers",
                            "verified"
                          ],
                          "type": "string"
                        },
                        "poll": {
                          "description": "X poll settings: options and duration_minutes.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "x_poll": {
                          "description": "X poll settings: options and duration_minutes. Alias for poll.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "ai_generated": {
                          "description": "Label the post as AI-generated (X made_with_ai).",
                          "type": "boolean"
                        },
                        "ai_disclosure": {
                          "description": "Label the post as AI-generated (X made_with_ai). Alias for ai_generated.",
                          "type": "boolean"
                        },
                        "made_with_ai": {
                          "description": "Label the post as AI-generated (X made_with_ai). Alias for ai_generated.",
                          "type": "boolean"
                        },
                        "paid_partnership": {
                          "description": "Mark the post as a paid partnership (POST /2/tweets paid_partnership). Existing tweet.write.",
                          "type": "boolean"
                        },
                        "x_paid_partnership": {
                          "description": "Mark the post as a paid partnership (POST /2/tweets paid_partnership). Existing tweet.write. Alias for paid_partnership.",
                          "type": "boolean"
                        },
                        "media_alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "media_accessibility": {
                          "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                          "type": "array",
                          "items": {
                            "type": "object",
                            "required": [
                              "index",
                              "alt_text"
                            ],
                            "properties": {
                              "index": {
                                "type": "integer",
                                "minimum": 0
                              },
                              "asset_id": {
                                "type": "string"
                              },
                              "source_url": {
                                "type": "string",
                                "format": "uri"
                              },
                              "alt_text": {
                                "type": "string"
                              }
                            },
                            "additionalProperties": false
                          }
                        }
                      },
                      "additionalProperties": true,
                      "example": {
                        "reply_settings": "following",
                        "poll": {
                          "options": [
                            "Yes",
                            "No"
                          ],
                          "duration_minutes": 1440
                        },
                        "paid_partnership": true
                      }
                    },
                    {
                      "title": "LinkedIn settings",
                      "type": "object",
                      "properties": {
                        "document_title": {
                          "description": "Title for a LinkedIn PDF/document post.",
                          "type": "string"
                        },
                        "linkedin_document_title": {
                          "description": "Title for a LinkedIn PDF/document post. Alias for document_title.",
                          "type": "string"
                        },
                        "document_filename": {
                          "description": "Filename for a LinkedIn document post.",
                          "type": "string"
                        },
                        "mentions": {
                          "description": "LinkedIn organization mention objects.",
                          "type": "array",
                          "items": {}
                        },
                        "linkedin_mentions": {
                          "description": "LinkedIn organization mention objects. Alias for mentions.",
                          "type": "array",
                          "items": {}
                        },
                        "poll": {
                          "description": "LinkedIn poll: { question, options (2-4), duration (ONE_DAY|THREE_DAYS|SEVEN_DAYS|FOURTEEN_DAYS) }. Mutually exclusive with media.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "linkedin_poll": {
                          "description": "LinkedIn poll: { question, options (2-4), duration (ONE_DAY|THREE_DAYS|SEVEN_DAYS|FOURTEEN_DAYS) }. Mutually exclusive with media. Alias for poll.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "thumbnail_url": {
                          "description": "Custom video thumbnail URL.",
                          "type": "string"
                        },
                        "content_call_to_action_label": {
                          "description": "LinkedIn contentCallToActionLabel, including BUY_NOW and SHOP_NOW (version 202504). Pair with content_landing_page.",
                          "enum": [
                            "APPLY",
                            "DOWNLOAD",
                            "VIEW_QUOTE",
                            "LEARN_MORE",
                            "SIGN_UP",
                            "SUBSCRIBE",
                            "REGISTER",
                            "JOIN",
                            "ATTEND",
                            "REQUEST_DEMO",
                            "SEE_MORE",
                            "BUY_NOW",
                            "SHOP_NOW"
                          ],
                          "type": "string"
                        },
                        "cta_label": {
                          "description": "LinkedIn contentCallToActionLabel, including BUY_NOW and SHOP_NOW (version 202504). Pair with content_landing_page. Alias for content_call_to_action_label.",
                          "enum": [
                            "APPLY",
                            "DOWNLOAD",
                            "VIEW_QUOTE",
                            "LEARN_MORE",
                            "SIGN_UP",
                            "SUBSCRIBE",
                            "REGISTER",
                            "JOIN",
                            "ATTEND",
                            "REQUEST_DEMO",
                            "SEE_MORE",
                            "BUY_NOW",
                            "SHOP_NOW"
                          ],
                          "type": "string"
                        },
                        "linkedin_cta_label": {
                          "description": "LinkedIn contentCallToActionLabel, including BUY_NOW and SHOP_NOW (version 202504). Pair with content_landing_page. Alias for content_call_to_action_label.",
                          "enum": [
                            "APPLY",
                            "DOWNLOAD",
                            "VIEW_QUOTE",
                            "LEARN_MORE",
                            "SIGN_UP",
                            "SUBSCRIBE",
                            "REGISTER",
                            "JOIN",
                            "ATTEND",
                            "REQUEST_DEMO",
                            "SEE_MORE",
                            "BUY_NOW",
                            "SHOP_NOW"
                          ],
                          "type": "string"
                        },
                        "content_landing_page": {
                          "description": "Landing page URL sent as contentLandingPage with the LinkedIn call to action.",
                          "type": "string"
                        },
                        "cta_url": {
                          "description": "Landing page URL sent as contentLandingPage with the LinkedIn call to action. Alias for content_landing_page.",
                          "type": "string"
                        },
                        "linkedin_cta_url": {
                          "description": "Landing page URL sent as contentLandingPage with the LinkedIn call to action. Alias for content_landing_page.",
                          "type": "string"
                        },
                        "media_alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "media_accessibility": {
                          "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                          "type": "array",
                          "items": {
                            "type": "object",
                            "required": [
                              "index",
                              "alt_text"
                            ],
                            "properties": {
                              "index": {
                                "type": "integer",
                                "minimum": 0
                              },
                              "asset_id": {
                                "type": "string"
                              },
                              "source_url": {
                                "type": "string",
                                "format": "uri"
                              },
                              "alt_text": {
                                "type": "string"
                              }
                            },
                            "additionalProperties": false
                          }
                        }
                      },
                      "additionalProperties": true,
                      "example": {
                        "document_title": "Launch plan",
                        "mentions": [
                          {
                            "display_name": "posterly",
                            "urn": "urn:li:organization:123"
                          }
                        ],
                        "poll": {
                          "question": "Which feature next?",
                          "options": [
                            "Polls",
                            "Analytics"
                          ],
                          "duration": "THREE_DAYS"
                        },
                        "content_call_to_action_label": "BUY_NOW",
                        "content_landing_page": "https://www.poster.ly"
                      }
                    },
                    {
                      "title": "YouTube settings",
                      "type": "object",
                      "properties": {
                        "title": {
                          "description": "YouTube video title.",
                          "type": "string"
                        },
                        "youtube_title": {
                          "description": "YouTube video title. Alias for title.",
                          "type": "string"
                        },
                        "thumbnail_url": {
                          "description": "Custom YouTube thumbnail URL.",
                          "type": "string"
                        },
                        "privacy_status": {
                          "description": "YouTube video visibility.",
                          "enum": [
                            "public",
                            "unlisted",
                            "private"
                          ],
                          "type": "string"
                        },
                        "privacy": {
                          "description": "YouTube video visibility. Alias for privacy_status.",
                          "enum": [
                            "public",
                            "unlisted",
                            "private"
                          ],
                          "type": "string"
                        },
                        "made_for_kids": {
                          "description": "YouTube made-for-kids declaration.",
                          "type": "boolean"
                        },
                        "tags": {
                          "description": "YouTube tags.",
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "category_id": {
                          "description": "YouTube category ID.",
                          "type": "string"
                        },
                        "notify_subscribers": {
                          "description": "Notify subscribers when the video publishes (default true).",
                          "type": "boolean"
                        },
                        "add_shorts_hashtag": {
                          "description": "Append #Shorts to the description for Shorts-feed eligibility (vertical clips).",
                          "type": "boolean"
                        },
                        "ai_generated": {
                          "description": "Label the video as containing AI/synthetic media (containsSyntheticMedia).",
                          "type": "boolean"
                        },
                        "ai_disclosure": {
                          "description": "Label the video as containing AI/synthetic media (containsSyntheticMedia). Alias for ai_generated.",
                          "type": "boolean"
                        },
                        "brand_partner": {
                          "description": "Optional YouTube brandPartner channel ID (UC…) or handle (@…). Added to videos.insert part=brandPartner when set.",
                          "type": "string"
                        },
                        "brandPartner": {
                          "description": "Optional YouTube brandPartner channel ID (UC…) or handle (@…). Added to videos.insert part=brandPartner when set. Alias for brand_partner.",
                          "type": "string"
                        }
                      },
                      "required": [
                        "title"
                      ],
                      "additionalProperties": true,
                      "example": {
                        "title": "Launch walkthrough",
                        "privacy_status": "unlisted",
                        "notify_subscribers": false,
                        "add_shorts_hashtag": true,
                        "brand_partner": "@brand"
                      }
                    },
                    {
                      "title": "Pinterest settings",
                      "type": "object",
                      "properties": {
                        "board_id": {
                          "description": "Pinterest board ID from the pinterest.boards helper.",
                          "type": "string"
                        },
                        "pinterest_board_id": {
                          "description": "Pinterest board ID from the pinterest.boards helper. Alias for board_id.",
                          "type": "string"
                        },
                        "title": {
                          "description": "Pinterest Pin title.",
                          "type": "string"
                        },
                        "link": {
                          "description": "Destination URL for the Pin.",
                          "type": "string"
                        },
                        "destination_url": {
                          "description": "Destination URL for the Pin. Alias for link.",
                          "type": "string"
                        },
                        "cover_image_url": {
                          "description": "Required for video Pins: a stored, probe-verified JPEG or PNG cover URL (20 MiB maximum).",
                          "type": "string"
                        },
                        "video_cover_url": {
                          "description": "Required for video Pins: a stored, probe-verified JPEG or PNG cover URL (20 MiB maximum). Alias for cover_image_url.",
                          "type": "string"
                        },
                        "pinterest_cover_image_url": {
                          "description": "Required for video Pins: a stored, probe-verified JPEG or PNG cover URL (20 MiB maximum). Alias for cover_image_url.",
                          "type": "string"
                        },
                        "ai_generated": {
                          "description": "Label the Pin as AI-modified (ai_disclosures).",
                          "type": "boolean"
                        },
                        "ai_disclosure": {
                          "description": "Label the Pin as AI-modified (ai_disclosures). Alias for ai_generated.",
                          "type": "boolean"
                        },
                        "product_tags": {
                          "description": "Optional product tags on POST /v5/pins (product_id, optional x/y). Existing pins:write. Pin note is not written.",
                          "type": "array",
                          "items": {}
                        },
                        "media_alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "media_accessibility": {
                          "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                          "type": "array",
                          "items": {
                            "type": "object",
                            "required": [
                              "index",
                              "alt_text"
                            ],
                            "properties": {
                              "index": {
                                "type": "integer",
                                "minimum": 0
                              },
                              "asset_id": {
                                "type": "string"
                              },
                              "source_url": {
                                "type": "string",
                                "format": "uri"
                              },
                              "alt_text": {
                                "type": "string"
                              }
                            },
                            "additionalProperties": false
                          }
                        }
                      },
                      "required": [
                        "board_id"
                      ],
                      "additionalProperties": true,
                      "example": {
                        "board_id": "123456789",
                        "title": "Launch ideas",
                        "link": "https://www.poster.ly",
                        "cover_image_url": "https://assets.poster.ly/users/123/pinterest-video-covers/cover.jpg",
                        "product_tags": [
                          {
                            "product_id": "123"
                          }
                        ]
                      }
                    },
                    {
                      "title": "Threads settings",
                      "type": "object",
                      "properties": {
                        "reply_control": {
                          "description": "Threads reply control setting.",
                          "enum": [
                            "everyone",
                            "accounts_you_follow",
                            "mentioned_only",
                            "followers_only",
                            "parent_post_author_only"
                          ],
                          "type": "string"
                        },
                        "threads_reply_control": {
                          "description": "Threads reply control setting. Alias for reply_control.",
                          "enum": [
                            "everyone",
                            "accounts_you_follow",
                            "mentioned_only",
                            "followers_only",
                            "parent_post_author_only"
                          ],
                          "type": "string"
                        },
                        "poll": {
                          "description": "Threads poll: { options (2-4) }. Text-only, fixed 24h duration.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "threads_poll": {
                          "description": "Threads poll: { options (2-4) }. Text-only, fixed 24h duration. Alias for poll.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "topic_tag": {
                          "description": "A single Threads topic tag (1-50 chars, no periods/ampersands).",
                          "type": "string"
                        },
                        "threads_topic_tag": {
                          "description": "A single Threads topic tag (1-50 chars, no periods/ampersands). Alias for topic_tag.",
                          "type": "string"
                        },
                        "text_attachment": {
                          "description": "Long-form Threads text attachment.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "threads_text_attachment": {
                          "description": "Long-form Threads text attachment. Alias for text_attachment.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "share_to_instagram": {
                          "description": "Also share the published post to the Instagram account linked to the Threads profile as a Story (dark card). Requires Instagram sharing enabled for the Threads profile in the Threads app.",
                          "type": "boolean"
                        },
                        "threads_share_to_instagram": {
                          "description": "Also share the published post to the Instagram account linked to the Threads profile as a Story (dark card). Requires Instagram sharing enabled for the Threads profile in the Threads app. Alias for share_to_instagram.",
                          "type": "boolean"
                        },
                        "is_ghost_post": {
                          "description": "Publish as a Threads ghost post. Text-only.",
                          "type": "boolean"
                        },
                        "threads_is_ghost_post": {
                          "description": "Publish as a Threads ghost post. Text-only. Alias for is_ghost_post.",
                          "type": "boolean"
                        },
                        "is_spoiler": {
                          "description": "Mark the Threads post as a spoiler (full-caption text entity and/or is_spoiler_media).",
                          "type": "boolean"
                        },
                        "threads_is_spoiler": {
                          "description": "Mark the Threads post as a spoiler (full-caption text entity and/or is_spoiler_media). Alias for is_spoiler.",
                          "type": "boolean"
                        },
                        "is_spoiler_media": {
                          "description": "Set is_spoiler_media on the Threads container when media is attached.",
                          "type": "boolean"
                        },
                        "threads_is_spoiler_media": {
                          "description": "Set is_spoiler_media on the Threads container when media is attached. Alias for is_spoiler_media.",
                          "type": "boolean"
                        },
                        "text_entities": {
                          "description": "Threads text_entities, for example spoiler ranges with entity_type, offset, and length.",
                          "type": "array",
                          "items": {}
                        },
                        "threads_text_entities": {
                          "description": "Threads text_entities, for example spoiler ranges with entity_type, offset, and length. Alias for text_entities.",
                          "type": "array",
                          "items": {}
                        },
                        "enable_reply_approvals": {
                          "description": "Require approval before replies appear (enable_reply_approvals).",
                          "type": "boolean"
                        },
                        "threads_enable_reply_approvals": {
                          "description": "Require approval before replies appear (enable_reply_approvals). Alias for enable_reply_approvals.",
                          "type": "boolean"
                        },
                        "gif_attachment": {
                          "description": "GIPHY gif_attachment: { gif_id, provider: \"GIPHY\" }. Tenor is not supported.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "threads_gif_attachment": {
                          "description": "GIPHY gif_attachment: { gif_id, provider: \"GIPHY\" }. Tenor is not supported. Alias for gif_attachment.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "media_alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "media_accessibility": {
                          "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                          "type": "array",
                          "items": {
                            "type": "object",
                            "required": [
                              "index",
                              "alt_text"
                            ],
                            "properties": {
                              "index": {
                                "type": "integer",
                                "minimum": 0
                              },
                              "asset_id": {
                                "type": "string"
                              },
                              "source_url": {
                                "type": "string",
                                "format": "uri"
                              },
                              "alt_text": {
                                "type": "string"
                              }
                            },
                            "additionalProperties": false
                          }
                        }
                      },
                      "additionalProperties": true,
                      "example": {
                        "reply_control": "everyone",
                        "poll": {
                          "options": [
                            "Polls",
                            "Analytics"
                          ]
                        },
                        "topic_tag": "producthunt",
                        "is_ghost_post": false,
                        "enable_reply_approvals": true
                      }
                    },
                    {
                      "title": "Google Business settings",
                      "type": "object",
                      "properties": {
                        "post_type": {
                          "description": "Google Business Profile post type.",
                          "enum": [
                            "STANDARD",
                            "EVENT",
                            "OFFER"
                          ],
                          "type": "string"
                        },
                        "topic_type": {
                          "description": "Google Business Profile post type. Alias for post_type.",
                          "enum": [
                            "STANDARD",
                            "EVENT",
                            "OFFER"
                          ],
                          "type": "string"
                        },
                        "event": {
                          "description": "Event title and start/end date/time.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "offer": {
                          "description": "Offer coupon, redeem URL, and terms.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "cta": {
                          "description": "CTA type and URL.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "recurrence": {
                          "description": "EVENT/OFFER recurrenceInfo: { type: DAILY|WEEKLY|MONTHLY, series_end_time? }. Keeps one-off scheduledTime.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "recurrenceInfo": {
                          "description": "EVENT/OFFER recurrenceInfo: { type: DAILY|WEEKLY|MONTHLY, series_end_time? }. Keeps one-off scheduledTime. Alias for recurrence.",
                          "type": "object",
                          "additionalProperties": true
                        }
                      },
                      "additionalProperties": true,
                      "example": {
                        "post_type": "EVENT",
                        "event": {
                          "title": "Launch night",
                          "start_date": "2026-09-01"
                        },
                        "recurrence": {
                          "type": "WEEKLY",
                          "series_end_time": "2026-12-01T00:00:00Z"
                        },
                        "cta": {
                          "type": "LEARN_MORE",
                          "url": "https://www.poster.ly"
                        }
                      }
                    },
                    {
                      "title": "Telegram settings",
                      "type": "object",
                      "properties": {
                        "parse_mode": {
                          "description": "Telegram caption parse mode when supported.",
                          "enum": [
                            "HTML",
                            "MarkdownV2"
                          ],
                          "type": "string"
                        },
                        "disable_web_page_preview": {
                          "description": "Disable link previews for text posts.",
                          "type": "boolean"
                        },
                        "poll": {
                          "description": "Telegram native poll: { question, options (2-10), allows_multiple_answers? }.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "telegram_poll": {
                          "description": "Telegram native poll: { question, options (2-10), allows_multiple_answers? }. Alias for poll.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "buttons": {
                          "description": "Inline CTA buttons: [{ text, url }] (up to 3).",
                          "type": "array",
                          "items": {}
                        },
                        "telegram_buttons": {
                          "description": "Inline CTA buttons: [{ text, url }] (up to 3). Alias for buttons.",
                          "type": "array",
                          "items": {}
                        },
                        "video_cover_url": {
                          "description": "Cover image URL for sendVideo (Bot API cover).",
                          "type": "string"
                        },
                        "cover_url": {
                          "description": "Cover image URL for sendVideo (Bot API cover). Alias for video_cover_url.",
                          "type": "string"
                        },
                        "telegram_video_cover_url": {
                          "description": "Cover image URL for sendVideo (Bot API cover). Alias for video_cover_url.",
                          "type": "string"
                        },
                        "start_timestamp": {
                          "description": "Video start timestamp in seconds for sendVideo (Bot API start_timestamp).",
                          "type": "number"
                        },
                        "telegram_start_timestamp": {
                          "description": "Video start timestamp in seconds for sendVideo (Bot API start_timestamp). Alias for start_timestamp.",
                          "type": "number"
                        },
                        "is_live_photo": {
                          "description": "Send as sendLivePhoto when both a still image and a video are attached.",
                          "type": "boolean"
                        },
                        "telegram_is_live_photo": {
                          "description": "Send as sendLivePhoto when both a still image and a video are attached. Alias for is_live_photo.",
                          "type": "boolean"
                        }
                      },
                      "additionalProperties": true,
                      "example": {
                        "poll": {
                          "question": "Which feature next?",
                          "options": [
                            "Polls",
                            "Analytics"
                          ]
                        },
                        "buttons": [
                          {
                            "text": "Read more",
                            "url": "https://www.poster.ly"
                          }
                        ],
                        "video_cover_url": "https://example.com/cover.jpg"
                      }
                    },
                    {
                      "title": "Bluesky settings",
                      "type": "object",
                      "properties": {
                        "langs": {
                          "description": "Language tags for the Bluesky post.",
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "content_label": {
                          "description": "Self-applied content warning (tap-to-reveal).",
                          "enum": [
                            "sexual",
                            "nudity",
                            "porn",
                            "graphic-media"
                          ],
                          "type": "string"
                        },
                        "content_warning": {
                          "description": "Self-applied content warning (tap-to-reveal). Alias for content_label.",
                          "enum": [
                            "sexual",
                            "nudity",
                            "porn",
                            "graphic-media"
                          ],
                          "type": "string"
                        },
                        "tags": {
                          "description": "Up to 8 hidden discovery tags (separate from in-text hashtags).",
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "bluesky_tags": {
                          "description": "Up to 8 hidden discovery tags (separate from in-text hashtags). Alias for tags.",
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "quote_url": {
                          "description": "A Bluesky post URL (or AT-URI) to quote.",
                          "type": "string"
                        },
                        "quote": {
                          "description": "A Bluesky post URL (or AT-URI) to quote. Alias for quote_url.",
                          "type": "string"
                        },
                        "bluesky_quote_url": {
                          "description": "A Bluesky post URL (or AT-URI) to quote. Alias for quote_url.",
                          "type": "string"
                        },
                        "disable_quotes": {
                          "description": "Prevent others from quote-posting this post (postgate).",
                          "type": "boolean"
                        },
                        "media_alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "media_accessibility": {
                          "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                          "type": "array",
                          "items": {
                            "type": "object",
                            "required": [
                              "index",
                              "alt_text"
                            ],
                            "properties": {
                              "index": {
                                "type": "integer",
                                "minimum": 0
                              },
                              "asset_id": {
                                "type": "string"
                              },
                              "source_url": {
                                "type": "string",
                                "format": "uri"
                              },
                              "alt_text": {
                                "type": "string"
                              }
                            },
                            "additionalProperties": false
                          }
                        }
                      },
                      "additionalProperties": true,
                      "example": {
                        "langs": [
                          "en"
                        ],
                        "tags": [
                          "producthunt",
                          "launch"
                        ],
                        "quote_url": "https://bsky.app/profile/poster.ly/post/abc123"
                      }
                    },
                    {
                      "title": "Discord settings",
                      "type": "object",
                      "properties": {
                        "media_alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "media_accessibility": {
                          "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                          "type": "array",
                          "items": {
                            "type": "object",
                            "required": [
                              "index",
                              "alt_text"
                            ],
                            "properties": {
                              "index": {
                                "type": "integer",
                                "minimum": 0
                              },
                              "asset_id": {
                                "type": "string"
                              },
                              "source_url": {
                                "type": "string",
                                "format": "uri"
                              },
                              "alt_text": {
                                "type": "string"
                              }
                            },
                            "additionalProperties": false
                          }
                        }
                      },
                      "additionalProperties": true,
                      "example": {
                        "media_alt_texts": {
                          "https://example.com/chart.png": "Q2 revenue chart"
                        }
                      }
                    },
                    {
                      "title": "Slack settings",
                      "type": "object",
                      "properties": {
                        "markdown": {
                          "description": "Send the caption as a Block Kit markdown block on chat.postMessage.",
                          "type": "boolean"
                        },
                        "slack_markdown": {
                          "description": "Send the caption as a Block Kit markdown block on chat.postMessage. Alias for markdown.",
                          "type": "boolean"
                        },
                        "blocks": {
                          "description": "Optional Block Kit blocks (markdown, card, or carousel) passed to chat.postMessage. File upload still uses getUploadURLExternal.",
                          "type": "array",
                          "items": {}
                        },
                        "slack_blocks": {
                          "description": "Optional Block Kit blocks (markdown, card, or carousel) passed to chat.postMessage. File upload still uses getUploadURLExternal. Alias for blocks.",
                          "type": "array",
                          "items": {}
                        }
                      },
                      "additionalProperties": true,
                      "example": {
                        "markdown": true
                      }
                    },
                    {
                      "title": "Mastodon settings",
                      "type": "object",
                      "properties": {
                        "visibility": {
                          "description": "Status visibility (private means followers only).",
                          "enum": [
                            "public",
                            "unlisted",
                            "private"
                          ],
                          "type": "string"
                        },
                        "mastodon_visibility": {
                          "description": "Status visibility (private means followers only). Alias for visibility.",
                          "enum": [
                            "public",
                            "unlisted",
                            "private"
                          ],
                          "type": "string"
                        },
                        "spoiler_text": {
                          "description": "Content warning shown before the post is revealed (marks media sensitive).",
                          "type": "string"
                        },
                        "content_warning": {
                          "description": "Content warning shown before the post is revealed (marks media sensitive). Alias for spoiler_text.",
                          "type": "string"
                        },
                        "mastodon_spoiler_text": {
                          "description": "Content warning shown before the post is revealed (marks media sensitive). Alias for spoiler_text.",
                          "type": "string"
                        },
                        "language": {
                          "description": "ISO 639 language code for the status.",
                          "type": "string"
                        },
                        "mastodon_language": {
                          "description": "ISO 639 language code for the status. Alias for language.",
                          "type": "string"
                        },
                        "quoted_status_id": {
                          "description": "Mastodon status ID to quote (4.5+ quoted_status_id).",
                          "type": "string"
                        },
                        "quote_id": {
                          "description": "Mastodon status ID to quote (4.5+ quoted_status_id). Alias for quoted_status_id.",
                          "type": "string"
                        },
                        "mastodon_quoted_status_id": {
                          "description": "Mastodon status ID to quote (4.5+ quoted_status_id). Alias for quoted_status_id.",
                          "type": "string"
                        },
                        "poll": {
                          "description": "Mastodon poll: { options (2-4), expires_in seconds, multiple? }. Media and a poll can be combined on Mastodon 4.6+.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "mastodon_poll": {
                          "description": "Mastodon poll: { options (2-4), expires_in seconds, multiple? }. Media and a poll can be combined on Mastodon 4.6+. Alias for poll.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "media_alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "media_accessibility": {
                          "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                          "type": "array",
                          "items": {
                            "type": "object",
                            "required": [
                              "index",
                              "alt_text"
                            ],
                            "properties": {
                              "index": {
                                "type": "integer",
                                "minimum": 0
                              },
                              "asset_id": {
                                "type": "string"
                              },
                              "source_url": {
                                "type": "string",
                                "format": "uri"
                              },
                              "alt_text": {
                                "type": "string"
                              }
                            },
                            "additionalProperties": false
                          }
                        }
                      },
                      "additionalProperties": true,
                      "example": {
                        "visibility": "public",
                        "spoiler_text": "Launch spoilers",
                        "language": "en",
                        "quoted_status_id": "123",
                        "poll": {
                          "options": [
                            "Yes",
                            "No"
                          ],
                          "expires_in": 86400
                        }
                      }
                    },
                    {
                      "title": "Dev.to settings",
                      "type": "object",
                      "properties": {
                        "title": {
                          "description": "Article title. Falls back to the first line of the caption.",
                          "type": "string"
                        },
                        "devto_title": {
                          "description": "Article title. Falls back to the first line of the caption. Alias for title.",
                          "type": "string"
                        },
                        "tags": {
                          "description": "Up to 4 tags (lowercase alphanumeric).",
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "devto_tags": {
                          "description": "Up to 4 tags (lowercase alphanumeric). Alias for tags.",
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "canonical_url": {
                          "description": "Canonical URL when cross-posting from your own blog.",
                          "type": "string"
                        },
                        "media_alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "media_accessibility": {
                          "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                          "type": "array",
                          "items": {
                            "type": "object",
                            "required": [
                              "index",
                              "alt_text"
                            ],
                            "properties": {
                              "index": {
                                "type": "integer",
                                "minimum": 0
                              },
                              "asset_id": {
                                "type": "string"
                              },
                              "source_url": {
                                "type": "string",
                                "format": "uri"
                              },
                              "alt_text": {
                                "type": "string"
                              }
                            },
                            "additionalProperties": false
                          }
                        }
                      },
                      "additionalProperties": true,
                      "example": {
                        "title": "How we ship 18 platforms",
                        "tags": [
                          "webdev",
                          "saas"
                        ]
                      }
                    },
                    {
                      "title": "Hashnode settings",
                      "type": "object",
                      "properties": {
                        "title": {
                          "description": "Post title. Falls back to the first line of the caption.",
                          "type": "string"
                        },
                        "hashnode_title": {
                          "description": "Post title. Falls back to the first line of the caption. Alias for title.",
                          "type": "string"
                        },
                        "tags": {
                          "description": "Up to 4 tags (lowercase alphanumeric).",
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "hashnode_tags": {
                          "description": "Up to 4 tags (lowercase alphanumeric). Alias for tags.",
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "publication_id": {
                          "description": "Target publication. Defaults to the account blog captured at connect time.",
                          "type": "string"
                        },
                        "media_alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "media_accessibility": {
                          "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                          "type": "array",
                          "items": {
                            "type": "object",
                            "required": [
                              "index",
                              "alt_text"
                            ],
                            "properties": {
                              "index": {
                                "type": "integer",
                                "minimum": 0
                              },
                              "asset_id": {
                                "type": "string"
                              },
                              "source_url": {
                                "type": "string",
                                "format": "uri"
                              },
                              "alt_text": {
                                "type": "string"
                              }
                            },
                            "additionalProperties": false
                          }
                        }
                      },
                      "additionalProperties": true,
                      "example": {
                        "title": "How we ship 18 platforms",
                        "tags": [
                          "webdev",
                          "saas"
                        ]
                      }
                    },
                    {
                      "title": "WordPress settings",
                      "type": "object",
                      "properties": {
                        "title": {
                          "description": "Post title. Falls back to the first line of the caption.",
                          "type": "string"
                        },
                        "wordpress_title": {
                          "description": "Post title. Falls back to the first line of the caption. Alias for title.",
                          "type": "string"
                        },
                        "media_alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "media_accessibility": {
                          "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                          "type": "array",
                          "items": {
                            "type": "object",
                            "required": [
                              "index",
                              "alt_text"
                            ],
                            "properties": {
                              "index": {
                                "type": "integer",
                                "minimum": 0
                              },
                              "asset_id": {
                                "type": "string"
                              },
                              "source_url": {
                                "type": "string",
                                "format": "uri"
                              },
                              "alt_text": {
                                "type": "string"
                              }
                            },
                            "additionalProperties": false
                          }
                        }
                      },
                      "additionalProperties": true,
                      "example": {
                        "title": "How we ship 18 platforms"
                      }
                    },
                    {
                      "title": "Lemmy settings",
                      "type": "object",
                      "properties": {
                        "community": {
                          "description": "Target community, e.g. technology or technology@lemmy.world.",
                          "type": "string"
                        },
                        "lemmy_community": {
                          "description": "Target community, e.g. technology or technology@lemmy.world. Alias for community.",
                          "type": "string"
                        },
                        "title": {
                          "description": "Post title. Falls back to the first line of the caption.",
                          "type": "string"
                        },
                        "lemmy_title": {
                          "description": "Post title. Falls back to the first line of the caption. Alias for title.",
                          "type": "string"
                        },
                        "url": {
                          "description": "Link post URL. Defaults to the first attached image.",
                          "type": "string"
                        },
                        "lemmy_url": {
                          "description": "Link post URL. Defaults to the first attached image. Alias for url.",
                          "type": "string"
                        },
                        "nsfw": {
                          "description": "Mark the post NSFW.",
                          "type": "boolean"
                        },
                        "media_alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "alt_texts": {
                          "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                          "type": "object",
                          "additionalProperties": true
                        },
                        "media_accessibility": {
                          "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                          "type": "array",
                          "items": {
                            "type": "object",
                            "required": [
                              "index",
                              "alt_text"
                            ],
                            "properties": {
                              "index": {
                                "type": "integer",
                                "minimum": 0
                              },
                              "asset_id": {
                                "type": "string"
                              },
                              "source_url": {
                                "type": "string",
                                "format": "uri"
                              },
                              "alt_text": {
                                "type": "string"
                              }
                            },
                            "additionalProperties": false
                          }
                        }
                      },
                      "required": [
                        "community"
                      ],
                      "additionalProperties": true,
                      "example": {
                        "community": "selfhosted@lemmy.world",
                        "title": "posterly now posts to Lemmy"
                      }
                    }
                  ],
                  "additionalProperties": true
                },
                "workspace_id": {
                  "type": "string",
                  "description": "Workspace ID from whoami."
                },
                "metadata": {
                  "type": "object",
                  "additionalProperties": true
                }
              },
              "additionalProperties": false
            }
          },
          "confirm": {
            "type": "boolean",
            "description": "Must be true after the user explicitly confirms every post in the batch."
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "Create Posts Batch",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "update_post",
      "description": "Update a scheduled or draft post. DESTRUCTIVE WRITE - overwrites the existing post's caption/media/schedule. Cannot edit published posts. Show the user a side-by-side of CURRENT vs PROPOSED before calling.",
      "inputSchema": {
        "type": "object",
        "required": [
          "post_id",
          "confirm"
        ],
        "properties": {
          "post_id": {
            "type": "integer"
          },
          "caption": {
            "type": "string"
          },
          "scheduled_at": {
            "type": "string",
            "description": "ISO 8601 UTC"
          },
          "media_url": {
            "type": "string",
            "format": "uri",
            "description": "Media URL. Posterly storage URLs are used as-is; third-party HTTP(S) URLs are copied into Posterly storage before the post is saved."
          },
          "media_urls": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uri"
            },
            "description": "Media URLs. Posterly storage URLs are used as-is; third-party HTTP(S) URLs are copied into Posterly storage before the post is saved."
          },
          "post_type": {
            "type": "string",
            "enum": [
              "text",
              "image",
              "document",
              "video",
              "reel",
              "carousel",
              "story",
              "story_series",
              "x_thread",
              "threads_thread",
              "photo",
              "cover_photo",
              "post",
              "feed",
              "feed-post",
              "cover-photo",
              "photos",
              "stories",
              "reels"
            ],
            "description": "Optional post type. Omit for auto-detection from media."
          },
          "metadata": {
            "type": "object",
            "additionalProperties": true
          },
          "settings": {
            "type": "object",
            "description": "Platform-specific composer controls. Call list_platforms or get_platform_schema for the selected account before sending settings.",
            "oneOf": [
              {
                "title": "Instagram settings",
                "type": "object",
                "properties": {
                  "__type": {
                    "description": "Instagram account type hint.",
                    "enum": [
                      "instagram",
                      "instagram-standalone"
                    ],
                    "type": "string"
                  },
                  "post_type": {
                    "description": "Instagram publishing format.",
                    "enum": [
                      "post",
                      "feed",
                      "story",
                      "reel",
                      "carousel"
                    ],
                    "type": "string"
                  },
                  "is_trial_reel": {
                    "description": "Request an Instagram Trial Reel when the account supports it.",
                    "type": "boolean"
                  },
                  "trial_reel": {
                    "description": "Request an Instagram Trial Reel when the account supports it. Alias for is_trial_reel.",
                    "type": "boolean"
                  },
                  "graduation_strategy": {
                    "description": "Trial Reel graduation strategy.",
                    "enum": [
                      "MANUAL",
                      "SS_PERFORMANCE"
                    ],
                    "type": "string"
                  },
                  "collaborators": {
                    "description": "Native co-author invitations. Meta-linked Instagram accounts only; feed images, Reels, and carousels; maximum 3; not Stories.",
                    "type": "array",
                    "items": {}
                  },
                  "user_tags": {
                    "description": "Native clickable media tags, not caption @mentions. Supported by eligible direct Instagram and Meta-linked connections; feed images, Reels/video, and Stories. Tags apply to each carousel child and the first Story in a Story Series.",
                    "type": "array",
                    "items": {}
                  },
                  "first_comment": {
                    "description": "First comment to publish after the post.",
                    "type": "string"
                  },
                  "reel_cover_url": {
                    "description": "Custom Reel cover image URL.",
                    "type": "string"
                  },
                  "cover_url": {
                    "description": "Custom Reel cover image URL. Alias for reel_cover_url.",
                    "type": "string"
                  },
                  "reel_thumb_offset": {
                    "description": "Video timestamp, in milliseconds, for a generated Reel thumbnail.",
                    "type": "number"
                  },
                  "thumb_offset": {
                    "description": "Video timestamp, in milliseconds, for a generated Reel thumbnail. Alias for reel_thumb_offset.",
                    "type": "number"
                  },
                  "is_ai_generated": {
                    "description": "Label the parent media container as AI-generated (is_ai_generated). For carousels, set this on the parent only, never on child slides.",
                    "type": "boolean"
                  },
                  "instagram_is_ai_generated": {
                    "description": "Label the parent media container as AI-generated (is_ai_generated). For carousels, set this on the parent only, never on child slides. Alias for is_ai_generated.",
                    "type": "boolean"
                  },
                  "ai_generated": {
                    "description": "Label the parent media container as AI-generated (is_ai_generated). For carousels, set this on the parent only, never on child slides. Alias for is_ai_generated.",
                    "type": "boolean"
                  },
                  "audio_id": {
                    "description": "Licensed Instagram audio ID for Reels (audio_configuration.audio_id). Meta-linked Facebook Login accounts only; hidden for Instagram Login.",
                    "type": "string"
                  },
                  "instagram_audio_id": {
                    "description": "Licensed Instagram audio ID for Reels (audio_configuration.audio_id). Meta-linked Facebook Login accounts only; hidden for Instagram Login. Alias for audio_id.",
                    "type": "string"
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "__type": "instagram",
                  "post_type": "reel",
                  "first_comment": "Full details in the caption.",
                  "is_ai_generated": true
                }
              },
              {
                "title": "Facebook settings",
                "type": "object",
                "properties": {
                  "post_type": {
                    "description": "Facebook publishing format. Reel uses the Graph Reels API and must be 90 seconds or shorter; use video for longer clips. A 90.0 second Reel is allowed.",
                    "enum": [
                      "post",
                      "feed",
                      "story",
                      "reel",
                      "cover_photo"
                    ],
                    "type": "string"
                  },
                  "text_format_preset_id": {
                    "description": "Styled text post background preset.",
                    "type": "string"
                  },
                  "background_preset_id": {
                    "description": "Styled text post background preset. Alias for text_format_preset_id.",
                    "type": "string"
                  },
                  "reel_cover_url": {
                    "description": "Custom Reel cover image URL.",
                    "type": "string"
                  },
                  "cover_url": {
                    "description": "Custom Reel cover image URL. Alias for reel_cover_url.",
                    "type": "string"
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "post_type": "reel",
                  "reel_cover_url": "https://example.com/cover.jpg"
                }
              },
              {
                "title": "TikTok settings",
                "type": "object",
                "properties": {
                  "privacy_level": {
                    "description": "TikTok direct-post privacy level from the creator info helper.",
                    "type": "string"
                  },
                  "allow_comment": {
                    "description": "Allow comments when direct posting.",
                    "type": "boolean"
                  },
                  "allow_duet": {
                    "description": "Allow duets when direct posting.",
                    "type": "boolean"
                  },
                  "allow_stitch": {
                    "description": "Allow stitches when direct posting.",
                    "type": "boolean"
                  },
                  "title": {
                    "description": "TikTok title/caption field.",
                    "type": "string"
                  },
                  "media_type": {
                    "description": "Set to PHOTO for TikTok photo posts or multi-photo slideshows.",
                    "enum": [
                      "PHOTO"
                    ],
                    "type": "string"
                  },
                  "photo_cover_index": {
                    "description": "Zero-based cover image index for TikTok photo posts.",
                    "type": "number"
                  },
                  "video_cover_timestamp_ms": {
                    "description": "Millisecond timestamp of the video frame to use as the cover (direct post only).",
                    "type": "number"
                  },
                  "cover_timestamp_ms": {
                    "description": "Millisecond timestamp of the video frame to use as the cover (direct post only). Alias for video_cover_timestamp_ms.",
                    "type": "number"
                  },
                  "auto_add_music": {
                    "description": "Ask TikTok to add recommended music to photo posts when direct posting.",
                    "type": "boolean"
                  },
                  "is_commercial_content": {
                    "description": "TikTok commercial content disclosure.",
                    "type": "boolean"
                  },
                  "is_your_brand": {
                    "description": "TikTok branded content: your own brand.",
                    "type": "boolean"
                  },
                  "is_branded_content": {
                    "description": "TikTok branded content: third-party brand.",
                    "type": "boolean"
                  },
                  "ai_generated": {
                    "description": "Label the post as AI-generated (TikTok is_aigc).",
                    "type": "boolean"
                  },
                  "ai_disclosure": {
                    "description": "Label the post as AI-generated (TikTok is_aigc). Alias for ai_generated.",
                    "type": "boolean"
                  }
                },
                "additionalProperties": true,
                "example": {
                  "privacy_level": "PUBLIC_TO_EVERYONE",
                  "media_type": "PHOTO",
                  "photo_cover_index": 0,
                  "auto_add_music": true,
                  "allow_comment": true,
                  "allow_duet": false,
                  "allow_stitch": false,
                  "video_cover_timestamp_ms": 1500
                }
              },
              {
                "title": "X settings",
                "type": "object",
                "properties": {
                  "reply_settings": {
                    "description": "Who can reply to the post.",
                    "enum": [
                      "everyone",
                      "following",
                      "mentionedUsers",
                      "subscribers",
                      "verified"
                    ],
                    "type": "string"
                  },
                  "x_reply_settings": {
                    "description": "Who can reply to the post. Alias for reply_settings.",
                    "enum": [
                      "everyone",
                      "following",
                      "mentionedUsers",
                      "subscribers",
                      "verified"
                    ],
                    "type": "string"
                  },
                  "poll": {
                    "description": "X poll settings: options and duration_minutes.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "x_poll": {
                    "description": "X poll settings: options and duration_minutes. Alias for poll.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "ai_generated": {
                    "description": "Label the post as AI-generated (X made_with_ai).",
                    "type": "boolean"
                  },
                  "ai_disclosure": {
                    "description": "Label the post as AI-generated (X made_with_ai). Alias for ai_generated.",
                    "type": "boolean"
                  },
                  "made_with_ai": {
                    "description": "Label the post as AI-generated (X made_with_ai). Alias for ai_generated.",
                    "type": "boolean"
                  },
                  "paid_partnership": {
                    "description": "Mark the post as a paid partnership (POST /2/tweets paid_partnership). Existing tweet.write.",
                    "type": "boolean"
                  },
                  "x_paid_partnership": {
                    "description": "Mark the post as a paid partnership (POST /2/tweets paid_partnership). Existing tweet.write. Alias for paid_partnership.",
                    "type": "boolean"
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "reply_settings": "following",
                  "poll": {
                    "options": [
                      "Yes",
                      "No"
                    ],
                    "duration_minutes": 1440
                  },
                  "paid_partnership": true
                }
              },
              {
                "title": "LinkedIn settings",
                "type": "object",
                "properties": {
                  "document_title": {
                    "description": "Title for a LinkedIn PDF/document post.",
                    "type": "string"
                  },
                  "linkedin_document_title": {
                    "description": "Title for a LinkedIn PDF/document post. Alias for document_title.",
                    "type": "string"
                  },
                  "document_filename": {
                    "description": "Filename for a LinkedIn document post.",
                    "type": "string"
                  },
                  "mentions": {
                    "description": "LinkedIn organization mention objects.",
                    "type": "array",
                    "items": {}
                  },
                  "linkedin_mentions": {
                    "description": "LinkedIn organization mention objects. Alias for mentions.",
                    "type": "array",
                    "items": {}
                  },
                  "poll": {
                    "description": "LinkedIn poll: { question, options (2-4), duration (ONE_DAY|THREE_DAYS|SEVEN_DAYS|FOURTEEN_DAYS) }. Mutually exclusive with media.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "linkedin_poll": {
                    "description": "LinkedIn poll: { question, options (2-4), duration (ONE_DAY|THREE_DAYS|SEVEN_DAYS|FOURTEEN_DAYS) }. Mutually exclusive with media. Alias for poll.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "thumbnail_url": {
                    "description": "Custom video thumbnail URL.",
                    "type": "string"
                  },
                  "content_call_to_action_label": {
                    "description": "LinkedIn contentCallToActionLabel, including BUY_NOW and SHOP_NOW (version 202504). Pair with content_landing_page.",
                    "enum": [
                      "APPLY",
                      "DOWNLOAD",
                      "VIEW_QUOTE",
                      "LEARN_MORE",
                      "SIGN_UP",
                      "SUBSCRIBE",
                      "REGISTER",
                      "JOIN",
                      "ATTEND",
                      "REQUEST_DEMO",
                      "SEE_MORE",
                      "BUY_NOW",
                      "SHOP_NOW"
                    ],
                    "type": "string"
                  },
                  "cta_label": {
                    "description": "LinkedIn contentCallToActionLabel, including BUY_NOW and SHOP_NOW (version 202504). Pair with content_landing_page. Alias for content_call_to_action_label.",
                    "enum": [
                      "APPLY",
                      "DOWNLOAD",
                      "VIEW_QUOTE",
                      "LEARN_MORE",
                      "SIGN_UP",
                      "SUBSCRIBE",
                      "REGISTER",
                      "JOIN",
                      "ATTEND",
                      "REQUEST_DEMO",
                      "SEE_MORE",
                      "BUY_NOW",
                      "SHOP_NOW"
                    ],
                    "type": "string"
                  },
                  "linkedin_cta_label": {
                    "description": "LinkedIn contentCallToActionLabel, including BUY_NOW and SHOP_NOW (version 202504). Pair with content_landing_page. Alias for content_call_to_action_label.",
                    "enum": [
                      "APPLY",
                      "DOWNLOAD",
                      "VIEW_QUOTE",
                      "LEARN_MORE",
                      "SIGN_UP",
                      "SUBSCRIBE",
                      "REGISTER",
                      "JOIN",
                      "ATTEND",
                      "REQUEST_DEMO",
                      "SEE_MORE",
                      "BUY_NOW",
                      "SHOP_NOW"
                    ],
                    "type": "string"
                  },
                  "content_landing_page": {
                    "description": "Landing page URL sent as contentLandingPage with the LinkedIn call to action.",
                    "type": "string"
                  },
                  "cta_url": {
                    "description": "Landing page URL sent as contentLandingPage with the LinkedIn call to action. Alias for content_landing_page.",
                    "type": "string"
                  },
                  "linkedin_cta_url": {
                    "description": "Landing page URL sent as contentLandingPage with the LinkedIn call to action. Alias for content_landing_page.",
                    "type": "string"
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "document_title": "Launch plan",
                  "mentions": [
                    {
                      "display_name": "posterly",
                      "urn": "urn:li:organization:123"
                    }
                  ],
                  "poll": {
                    "question": "Which feature next?",
                    "options": [
                      "Polls",
                      "Analytics"
                    ],
                    "duration": "THREE_DAYS"
                  },
                  "content_call_to_action_label": "BUY_NOW",
                  "content_landing_page": "https://www.poster.ly"
                }
              },
              {
                "title": "YouTube settings",
                "type": "object",
                "properties": {
                  "title": {
                    "description": "YouTube video title.",
                    "type": "string"
                  },
                  "youtube_title": {
                    "description": "YouTube video title. Alias for title.",
                    "type": "string"
                  },
                  "thumbnail_url": {
                    "description": "Custom YouTube thumbnail URL.",
                    "type": "string"
                  },
                  "privacy_status": {
                    "description": "YouTube video visibility.",
                    "enum": [
                      "public",
                      "unlisted",
                      "private"
                    ],
                    "type": "string"
                  },
                  "privacy": {
                    "description": "YouTube video visibility. Alias for privacy_status.",
                    "enum": [
                      "public",
                      "unlisted",
                      "private"
                    ],
                    "type": "string"
                  },
                  "made_for_kids": {
                    "description": "YouTube made-for-kids declaration.",
                    "type": "boolean"
                  },
                  "tags": {
                    "description": "YouTube tags.",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "category_id": {
                    "description": "YouTube category ID.",
                    "type": "string"
                  },
                  "notify_subscribers": {
                    "description": "Notify subscribers when the video publishes (default true).",
                    "type": "boolean"
                  },
                  "add_shorts_hashtag": {
                    "description": "Append #Shorts to the description for Shorts-feed eligibility (vertical clips).",
                    "type": "boolean"
                  },
                  "ai_generated": {
                    "description": "Label the video as containing AI/synthetic media (containsSyntheticMedia).",
                    "type": "boolean"
                  },
                  "ai_disclosure": {
                    "description": "Label the video as containing AI/synthetic media (containsSyntheticMedia). Alias for ai_generated.",
                    "type": "boolean"
                  },
                  "brand_partner": {
                    "description": "Optional YouTube brandPartner channel ID (UC…) or handle (@…). Added to videos.insert part=brandPartner when set.",
                    "type": "string"
                  },
                  "brandPartner": {
                    "description": "Optional YouTube brandPartner channel ID (UC…) or handle (@…). Added to videos.insert part=brandPartner when set. Alias for brand_partner.",
                    "type": "string"
                  }
                },
                "required": [
                  "title"
                ],
                "additionalProperties": true,
                "example": {
                  "title": "Launch walkthrough",
                  "privacy_status": "unlisted",
                  "notify_subscribers": false,
                  "add_shorts_hashtag": true,
                  "brand_partner": "@brand"
                }
              },
              {
                "title": "Pinterest settings",
                "type": "object",
                "properties": {
                  "board_id": {
                    "description": "Pinterest board ID from the pinterest.boards helper.",
                    "type": "string"
                  },
                  "pinterest_board_id": {
                    "description": "Pinterest board ID from the pinterest.boards helper. Alias for board_id.",
                    "type": "string"
                  },
                  "title": {
                    "description": "Pinterest Pin title.",
                    "type": "string"
                  },
                  "link": {
                    "description": "Destination URL for the Pin.",
                    "type": "string"
                  },
                  "destination_url": {
                    "description": "Destination URL for the Pin. Alias for link.",
                    "type": "string"
                  },
                  "cover_image_url": {
                    "description": "Required for video Pins: a stored, probe-verified JPEG or PNG cover URL (20 MiB maximum).",
                    "type": "string"
                  },
                  "video_cover_url": {
                    "description": "Required for video Pins: a stored, probe-verified JPEG or PNG cover URL (20 MiB maximum). Alias for cover_image_url.",
                    "type": "string"
                  },
                  "pinterest_cover_image_url": {
                    "description": "Required for video Pins: a stored, probe-verified JPEG or PNG cover URL (20 MiB maximum). Alias for cover_image_url.",
                    "type": "string"
                  },
                  "ai_generated": {
                    "description": "Label the Pin as AI-modified (ai_disclosures).",
                    "type": "boolean"
                  },
                  "ai_disclosure": {
                    "description": "Label the Pin as AI-modified (ai_disclosures). Alias for ai_generated.",
                    "type": "boolean"
                  },
                  "product_tags": {
                    "description": "Optional product tags on POST /v5/pins (product_id, optional x/y). Existing pins:write. Pin note is not written.",
                    "type": "array",
                    "items": {}
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "required": [
                  "board_id"
                ],
                "additionalProperties": true,
                "example": {
                  "board_id": "123456789",
                  "title": "Launch ideas",
                  "link": "https://www.poster.ly",
                  "cover_image_url": "https://assets.poster.ly/users/123/pinterest-video-covers/cover.jpg",
                  "product_tags": [
                    {
                      "product_id": "123"
                    }
                  ]
                }
              },
              {
                "title": "Threads settings",
                "type": "object",
                "properties": {
                  "reply_control": {
                    "description": "Threads reply control setting.",
                    "enum": [
                      "everyone",
                      "accounts_you_follow",
                      "mentioned_only",
                      "followers_only",
                      "parent_post_author_only"
                    ],
                    "type": "string"
                  },
                  "threads_reply_control": {
                    "description": "Threads reply control setting. Alias for reply_control.",
                    "enum": [
                      "everyone",
                      "accounts_you_follow",
                      "mentioned_only",
                      "followers_only",
                      "parent_post_author_only"
                    ],
                    "type": "string"
                  },
                  "poll": {
                    "description": "Threads poll: { options (2-4) }. Text-only, fixed 24h duration.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "threads_poll": {
                    "description": "Threads poll: { options (2-4) }. Text-only, fixed 24h duration. Alias for poll.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "topic_tag": {
                    "description": "A single Threads topic tag (1-50 chars, no periods/ampersands).",
                    "type": "string"
                  },
                  "threads_topic_tag": {
                    "description": "A single Threads topic tag (1-50 chars, no periods/ampersands). Alias for topic_tag.",
                    "type": "string"
                  },
                  "text_attachment": {
                    "description": "Long-form Threads text attachment.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "threads_text_attachment": {
                    "description": "Long-form Threads text attachment. Alias for text_attachment.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "share_to_instagram": {
                    "description": "Also share the published post to the Instagram account linked to the Threads profile as a Story (dark card). Requires Instagram sharing enabled for the Threads profile in the Threads app.",
                    "type": "boolean"
                  },
                  "threads_share_to_instagram": {
                    "description": "Also share the published post to the Instagram account linked to the Threads profile as a Story (dark card). Requires Instagram sharing enabled for the Threads profile in the Threads app. Alias for share_to_instagram.",
                    "type": "boolean"
                  },
                  "is_ghost_post": {
                    "description": "Publish as a Threads ghost post. Text-only.",
                    "type": "boolean"
                  },
                  "threads_is_ghost_post": {
                    "description": "Publish as a Threads ghost post. Text-only. Alias for is_ghost_post.",
                    "type": "boolean"
                  },
                  "is_spoiler": {
                    "description": "Mark the Threads post as a spoiler (full-caption text entity and/or is_spoiler_media).",
                    "type": "boolean"
                  },
                  "threads_is_spoiler": {
                    "description": "Mark the Threads post as a spoiler (full-caption text entity and/or is_spoiler_media). Alias for is_spoiler.",
                    "type": "boolean"
                  },
                  "is_spoiler_media": {
                    "description": "Set is_spoiler_media on the Threads container when media is attached.",
                    "type": "boolean"
                  },
                  "threads_is_spoiler_media": {
                    "description": "Set is_spoiler_media on the Threads container when media is attached. Alias for is_spoiler_media.",
                    "type": "boolean"
                  },
                  "text_entities": {
                    "description": "Threads text_entities, for example spoiler ranges with entity_type, offset, and length.",
                    "type": "array",
                    "items": {}
                  },
                  "threads_text_entities": {
                    "description": "Threads text_entities, for example spoiler ranges with entity_type, offset, and length. Alias for text_entities.",
                    "type": "array",
                    "items": {}
                  },
                  "enable_reply_approvals": {
                    "description": "Require approval before replies appear (enable_reply_approvals).",
                    "type": "boolean"
                  },
                  "threads_enable_reply_approvals": {
                    "description": "Require approval before replies appear (enable_reply_approvals). Alias for enable_reply_approvals.",
                    "type": "boolean"
                  },
                  "gif_attachment": {
                    "description": "GIPHY gif_attachment: { gif_id, provider: \"GIPHY\" }. Tenor is not supported.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "threads_gif_attachment": {
                    "description": "GIPHY gif_attachment: { gif_id, provider: \"GIPHY\" }. Tenor is not supported. Alias for gif_attachment.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "reply_control": "everyone",
                  "poll": {
                    "options": [
                      "Polls",
                      "Analytics"
                    ]
                  },
                  "topic_tag": "producthunt",
                  "is_ghost_post": false,
                  "enable_reply_approvals": true
                }
              },
              {
                "title": "Google Business settings",
                "type": "object",
                "properties": {
                  "post_type": {
                    "description": "Google Business Profile post type.",
                    "enum": [
                      "STANDARD",
                      "EVENT",
                      "OFFER"
                    ],
                    "type": "string"
                  },
                  "topic_type": {
                    "description": "Google Business Profile post type. Alias for post_type.",
                    "enum": [
                      "STANDARD",
                      "EVENT",
                      "OFFER"
                    ],
                    "type": "string"
                  },
                  "event": {
                    "description": "Event title and start/end date/time.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "offer": {
                    "description": "Offer coupon, redeem URL, and terms.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "cta": {
                    "description": "CTA type and URL.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "recurrence": {
                    "description": "EVENT/OFFER recurrenceInfo: { type: DAILY|WEEKLY|MONTHLY, series_end_time? }. Keeps one-off scheduledTime.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "recurrenceInfo": {
                    "description": "EVENT/OFFER recurrenceInfo: { type: DAILY|WEEKLY|MONTHLY, series_end_time? }. Keeps one-off scheduledTime. Alias for recurrence.",
                    "type": "object",
                    "additionalProperties": true
                  }
                },
                "additionalProperties": true,
                "example": {
                  "post_type": "EVENT",
                  "event": {
                    "title": "Launch night",
                    "start_date": "2026-09-01"
                  },
                  "recurrence": {
                    "type": "WEEKLY",
                    "series_end_time": "2026-12-01T00:00:00Z"
                  },
                  "cta": {
                    "type": "LEARN_MORE",
                    "url": "https://www.poster.ly"
                  }
                }
              },
              {
                "title": "Telegram settings",
                "type": "object",
                "properties": {
                  "parse_mode": {
                    "description": "Telegram caption parse mode when supported.",
                    "enum": [
                      "HTML",
                      "MarkdownV2"
                    ],
                    "type": "string"
                  },
                  "disable_web_page_preview": {
                    "description": "Disable link previews for text posts.",
                    "type": "boolean"
                  },
                  "poll": {
                    "description": "Telegram native poll: { question, options (2-10), allows_multiple_answers? }.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "telegram_poll": {
                    "description": "Telegram native poll: { question, options (2-10), allows_multiple_answers? }. Alias for poll.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "buttons": {
                    "description": "Inline CTA buttons: [{ text, url }] (up to 3).",
                    "type": "array",
                    "items": {}
                  },
                  "telegram_buttons": {
                    "description": "Inline CTA buttons: [{ text, url }] (up to 3). Alias for buttons.",
                    "type": "array",
                    "items": {}
                  },
                  "video_cover_url": {
                    "description": "Cover image URL for sendVideo (Bot API cover).",
                    "type": "string"
                  },
                  "cover_url": {
                    "description": "Cover image URL for sendVideo (Bot API cover). Alias for video_cover_url.",
                    "type": "string"
                  },
                  "telegram_video_cover_url": {
                    "description": "Cover image URL for sendVideo (Bot API cover). Alias for video_cover_url.",
                    "type": "string"
                  },
                  "start_timestamp": {
                    "description": "Video start timestamp in seconds for sendVideo (Bot API start_timestamp).",
                    "type": "number"
                  },
                  "telegram_start_timestamp": {
                    "description": "Video start timestamp in seconds for sendVideo (Bot API start_timestamp). Alias for start_timestamp.",
                    "type": "number"
                  },
                  "is_live_photo": {
                    "description": "Send as sendLivePhoto when both a still image and a video are attached.",
                    "type": "boolean"
                  },
                  "telegram_is_live_photo": {
                    "description": "Send as sendLivePhoto when both a still image and a video are attached. Alias for is_live_photo.",
                    "type": "boolean"
                  }
                },
                "additionalProperties": true,
                "example": {
                  "poll": {
                    "question": "Which feature next?",
                    "options": [
                      "Polls",
                      "Analytics"
                    ]
                  },
                  "buttons": [
                    {
                      "text": "Read more",
                      "url": "https://www.poster.ly"
                    }
                  ],
                  "video_cover_url": "https://example.com/cover.jpg"
                }
              },
              {
                "title": "Bluesky settings",
                "type": "object",
                "properties": {
                  "langs": {
                    "description": "Language tags for the Bluesky post.",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "content_label": {
                    "description": "Self-applied content warning (tap-to-reveal).",
                    "enum": [
                      "sexual",
                      "nudity",
                      "porn",
                      "graphic-media"
                    ],
                    "type": "string"
                  },
                  "content_warning": {
                    "description": "Self-applied content warning (tap-to-reveal). Alias for content_label.",
                    "enum": [
                      "sexual",
                      "nudity",
                      "porn",
                      "graphic-media"
                    ],
                    "type": "string"
                  },
                  "tags": {
                    "description": "Up to 8 hidden discovery tags (separate from in-text hashtags).",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "bluesky_tags": {
                    "description": "Up to 8 hidden discovery tags (separate from in-text hashtags). Alias for tags.",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "quote_url": {
                    "description": "A Bluesky post URL (or AT-URI) to quote.",
                    "type": "string"
                  },
                  "quote": {
                    "description": "A Bluesky post URL (or AT-URI) to quote. Alias for quote_url.",
                    "type": "string"
                  },
                  "bluesky_quote_url": {
                    "description": "A Bluesky post URL (or AT-URI) to quote. Alias for quote_url.",
                    "type": "string"
                  },
                  "disable_quotes": {
                    "description": "Prevent others from quote-posting this post (postgate).",
                    "type": "boolean"
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "langs": [
                    "en"
                  ],
                  "tags": [
                    "producthunt",
                    "launch"
                  ],
                  "quote_url": "https://bsky.app/profile/poster.ly/post/abc123"
                }
              },
              {
                "title": "Discord settings",
                "type": "object",
                "properties": {
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "media_alt_texts": {
                    "https://example.com/chart.png": "Q2 revenue chart"
                  }
                }
              },
              {
                "title": "Slack settings",
                "type": "object",
                "properties": {
                  "markdown": {
                    "description": "Send the caption as a Block Kit markdown block on chat.postMessage.",
                    "type": "boolean"
                  },
                  "slack_markdown": {
                    "description": "Send the caption as a Block Kit markdown block on chat.postMessage. Alias for markdown.",
                    "type": "boolean"
                  },
                  "blocks": {
                    "description": "Optional Block Kit blocks (markdown, card, or carousel) passed to chat.postMessage. File upload still uses getUploadURLExternal.",
                    "type": "array",
                    "items": {}
                  },
                  "slack_blocks": {
                    "description": "Optional Block Kit blocks (markdown, card, or carousel) passed to chat.postMessage. File upload still uses getUploadURLExternal. Alias for blocks.",
                    "type": "array",
                    "items": {}
                  }
                },
                "additionalProperties": true,
                "example": {
                  "markdown": true
                }
              },
              {
                "title": "Mastodon settings",
                "type": "object",
                "properties": {
                  "visibility": {
                    "description": "Status visibility (private means followers only).",
                    "enum": [
                      "public",
                      "unlisted",
                      "private"
                    ],
                    "type": "string"
                  },
                  "mastodon_visibility": {
                    "description": "Status visibility (private means followers only). Alias for visibility.",
                    "enum": [
                      "public",
                      "unlisted",
                      "private"
                    ],
                    "type": "string"
                  },
                  "spoiler_text": {
                    "description": "Content warning shown before the post is revealed (marks media sensitive).",
                    "type": "string"
                  },
                  "content_warning": {
                    "description": "Content warning shown before the post is revealed (marks media sensitive). Alias for spoiler_text.",
                    "type": "string"
                  },
                  "mastodon_spoiler_text": {
                    "description": "Content warning shown before the post is revealed (marks media sensitive). Alias for spoiler_text.",
                    "type": "string"
                  },
                  "language": {
                    "description": "ISO 639 language code for the status.",
                    "type": "string"
                  },
                  "mastodon_language": {
                    "description": "ISO 639 language code for the status. Alias for language.",
                    "type": "string"
                  },
                  "quoted_status_id": {
                    "description": "Mastodon status ID to quote (4.5+ quoted_status_id).",
                    "type": "string"
                  },
                  "quote_id": {
                    "description": "Mastodon status ID to quote (4.5+ quoted_status_id). Alias for quoted_status_id.",
                    "type": "string"
                  },
                  "mastodon_quoted_status_id": {
                    "description": "Mastodon status ID to quote (4.5+ quoted_status_id). Alias for quoted_status_id.",
                    "type": "string"
                  },
                  "poll": {
                    "description": "Mastodon poll: { options (2-4), expires_in seconds, multiple? }. Media and a poll can be combined on Mastodon 4.6+.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "mastodon_poll": {
                    "description": "Mastodon poll: { options (2-4), expires_in seconds, multiple? }. Media and a poll can be combined on Mastodon 4.6+. Alias for poll.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "visibility": "public",
                  "spoiler_text": "Launch spoilers",
                  "language": "en",
                  "quoted_status_id": "123",
                  "poll": {
                    "options": [
                      "Yes",
                      "No"
                    ],
                    "expires_in": 86400
                  }
                }
              },
              {
                "title": "Dev.to settings",
                "type": "object",
                "properties": {
                  "title": {
                    "description": "Article title. Falls back to the first line of the caption.",
                    "type": "string"
                  },
                  "devto_title": {
                    "description": "Article title. Falls back to the first line of the caption. Alias for title.",
                    "type": "string"
                  },
                  "tags": {
                    "description": "Up to 4 tags (lowercase alphanumeric).",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "devto_tags": {
                    "description": "Up to 4 tags (lowercase alphanumeric). Alias for tags.",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "canonical_url": {
                    "description": "Canonical URL when cross-posting from your own blog.",
                    "type": "string"
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "title": "How we ship 18 platforms",
                  "tags": [
                    "webdev",
                    "saas"
                  ]
                }
              },
              {
                "title": "Hashnode settings",
                "type": "object",
                "properties": {
                  "title": {
                    "description": "Post title. Falls back to the first line of the caption.",
                    "type": "string"
                  },
                  "hashnode_title": {
                    "description": "Post title. Falls back to the first line of the caption. Alias for title.",
                    "type": "string"
                  },
                  "tags": {
                    "description": "Up to 4 tags (lowercase alphanumeric).",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "hashnode_tags": {
                    "description": "Up to 4 tags (lowercase alphanumeric). Alias for tags.",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "publication_id": {
                    "description": "Target publication. Defaults to the account blog captured at connect time.",
                    "type": "string"
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "title": "How we ship 18 platforms",
                  "tags": [
                    "webdev",
                    "saas"
                  ]
                }
              },
              {
                "title": "WordPress settings",
                "type": "object",
                "properties": {
                  "title": {
                    "description": "Post title. Falls back to the first line of the caption.",
                    "type": "string"
                  },
                  "wordpress_title": {
                    "description": "Post title. Falls back to the first line of the caption. Alias for title.",
                    "type": "string"
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "title": "How we ship 18 platforms"
                }
              },
              {
                "title": "Lemmy settings",
                "type": "object",
                "properties": {
                  "community": {
                    "description": "Target community, e.g. technology or technology@lemmy.world.",
                    "type": "string"
                  },
                  "lemmy_community": {
                    "description": "Target community, e.g. technology or technology@lemmy.world. Alias for community.",
                    "type": "string"
                  },
                  "title": {
                    "description": "Post title. Falls back to the first line of the caption.",
                    "type": "string"
                  },
                  "lemmy_title": {
                    "description": "Post title. Falls back to the first line of the caption. Alias for title.",
                    "type": "string"
                  },
                  "url": {
                    "description": "Link post URL. Defaults to the first attached image.",
                    "type": "string"
                  },
                  "lemmy_url": {
                    "description": "Link post URL. Defaults to the first attached image. Alias for url.",
                    "type": "string"
                  },
                  "nsfw": {
                    "description": "Mark the post NSFW.",
                    "type": "boolean"
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "required": [
                  "community"
                ],
                "additionalProperties": true,
                "example": {
                  "community": "selfhosted@lemmy.world",
                  "title": "posterly now posts to Lemmy"
                }
              }
            ],
            "additionalProperties": true
          },
          "platform_settings": {
            "type": "object",
            "description": "Platform-specific composer controls. Call list_platforms or get_platform_schema for the selected account before sending settings.",
            "oneOf": [
              {
                "title": "Instagram settings",
                "type": "object",
                "properties": {
                  "__type": {
                    "description": "Instagram account type hint.",
                    "enum": [
                      "instagram",
                      "instagram-standalone"
                    ],
                    "type": "string"
                  },
                  "post_type": {
                    "description": "Instagram publishing format.",
                    "enum": [
                      "post",
                      "feed",
                      "story",
                      "reel",
                      "carousel"
                    ],
                    "type": "string"
                  },
                  "is_trial_reel": {
                    "description": "Request an Instagram Trial Reel when the account supports it.",
                    "type": "boolean"
                  },
                  "trial_reel": {
                    "description": "Request an Instagram Trial Reel when the account supports it. Alias for is_trial_reel.",
                    "type": "boolean"
                  },
                  "graduation_strategy": {
                    "description": "Trial Reel graduation strategy.",
                    "enum": [
                      "MANUAL",
                      "SS_PERFORMANCE"
                    ],
                    "type": "string"
                  },
                  "collaborators": {
                    "description": "Native co-author invitations. Meta-linked Instagram accounts only; feed images, Reels, and carousels; maximum 3; not Stories.",
                    "type": "array",
                    "items": {}
                  },
                  "user_tags": {
                    "description": "Native clickable media tags, not caption @mentions. Supported by eligible direct Instagram and Meta-linked connections; feed images, Reels/video, and Stories. Tags apply to each carousel child and the first Story in a Story Series.",
                    "type": "array",
                    "items": {}
                  },
                  "first_comment": {
                    "description": "First comment to publish after the post.",
                    "type": "string"
                  },
                  "reel_cover_url": {
                    "description": "Custom Reel cover image URL.",
                    "type": "string"
                  },
                  "cover_url": {
                    "description": "Custom Reel cover image URL. Alias for reel_cover_url.",
                    "type": "string"
                  },
                  "reel_thumb_offset": {
                    "description": "Video timestamp, in milliseconds, for a generated Reel thumbnail.",
                    "type": "number"
                  },
                  "thumb_offset": {
                    "description": "Video timestamp, in milliseconds, for a generated Reel thumbnail. Alias for reel_thumb_offset.",
                    "type": "number"
                  },
                  "is_ai_generated": {
                    "description": "Label the parent media container as AI-generated (is_ai_generated). For carousels, set this on the parent only, never on child slides.",
                    "type": "boolean"
                  },
                  "instagram_is_ai_generated": {
                    "description": "Label the parent media container as AI-generated (is_ai_generated). For carousels, set this on the parent only, never on child slides. Alias for is_ai_generated.",
                    "type": "boolean"
                  },
                  "ai_generated": {
                    "description": "Label the parent media container as AI-generated (is_ai_generated). For carousels, set this on the parent only, never on child slides. Alias for is_ai_generated.",
                    "type": "boolean"
                  },
                  "audio_id": {
                    "description": "Licensed Instagram audio ID for Reels (audio_configuration.audio_id). Meta-linked Facebook Login accounts only; hidden for Instagram Login.",
                    "type": "string"
                  },
                  "instagram_audio_id": {
                    "description": "Licensed Instagram audio ID for Reels (audio_configuration.audio_id). Meta-linked Facebook Login accounts only; hidden for Instagram Login. Alias for audio_id.",
                    "type": "string"
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "__type": "instagram",
                  "post_type": "reel",
                  "first_comment": "Full details in the caption.",
                  "is_ai_generated": true
                }
              },
              {
                "title": "Facebook settings",
                "type": "object",
                "properties": {
                  "post_type": {
                    "description": "Facebook publishing format. Reel uses the Graph Reels API and must be 90 seconds or shorter; use video for longer clips. A 90.0 second Reel is allowed.",
                    "enum": [
                      "post",
                      "feed",
                      "story",
                      "reel",
                      "cover_photo"
                    ],
                    "type": "string"
                  },
                  "text_format_preset_id": {
                    "description": "Styled text post background preset.",
                    "type": "string"
                  },
                  "background_preset_id": {
                    "description": "Styled text post background preset. Alias for text_format_preset_id.",
                    "type": "string"
                  },
                  "reel_cover_url": {
                    "description": "Custom Reel cover image URL.",
                    "type": "string"
                  },
                  "cover_url": {
                    "description": "Custom Reel cover image URL. Alias for reel_cover_url.",
                    "type": "string"
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "post_type": "reel",
                  "reel_cover_url": "https://example.com/cover.jpg"
                }
              },
              {
                "title": "TikTok settings",
                "type": "object",
                "properties": {
                  "privacy_level": {
                    "description": "TikTok direct-post privacy level from the creator info helper.",
                    "type": "string"
                  },
                  "allow_comment": {
                    "description": "Allow comments when direct posting.",
                    "type": "boolean"
                  },
                  "allow_duet": {
                    "description": "Allow duets when direct posting.",
                    "type": "boolean"
                  },
                  "allow_stitch": {
                    "description": "Allow stitches when direct posting.",
                    "type": "boolean"
                  },
                  "title": {
                    "description": "TikTok title/caption field.",
                    "type": "string"
                  },
                  "media_type": {
                    "description": "Set to PHOTO for TikTok photo posts or multi-photo slideshows.",
                    "enum": [
                      "PHOTO"
                    ],
                    "type": "string"
                  },
                  "photo_cover_index": {
                    "description": "Zero-based cover image index for TikTok photo posts.",
                    "type": "number"
                  },
                  "video_cover_timestamp_ms": {
                    "description": "Millisecond timestamp of the video frame to use as the cover (direct post only).",
                    "type": "number"
                  },
                  "cover_timestamp_ms": {
                    "description": "Millisecond timestamp of the video frame to use as the cover (direct post only). Alias for video_cover_timestamp_ms.",
                    "type": "number"
                  },
                  "auto_add_music": {
                    "description": "Ask TikTok to add recommended music to photo posts when direct posting.",
                    "type": "boolean"
                  },
                  "is_commercial_content": {
                    "description": "TikTok commercial content disclosure.",
                    "type": "boolean"
                  },
                  "is_your_brand": {
                    "description": "TikTok branded content: your own brand.",
                    "type": "boolean"
                  },
                  "is_branded_content": {
                    "description": "TikTok branded content: third-party brand.",
                    "type": "boolean"
                  },
                  "ai_generated": {
                    "description": "Label the post as AI-generated (TikTok is_aigc).",
                    "type": "boolean"
                  },
                  "ai_disclosure": {
                    "description": "Label the post as AI-generated (TikTok is_aigc). Alias for ai_generated.",
                    "type": "boolean"
                  }
                },
                "additionalProperties": true,
                "example": {
                  "privacy_level": "PUBLIC_TO_EVERYONE",
                  "media_type": "PHOTO",
                  "photo_cover_index": 0,
                  "auto_add_music": true,
                  "allow_comment": true,
                  "allow_duet": false,
                  "allow_stitch": false,
                  "video_cover_timestamp_ms": 1500
                }
              },
              {
                "title": "X settings",
                "type": "object",
                "properties": {
                  "reply_settings": {
                    "description": "Who can reply to the post.",
                    "enum": [
                      "everyone",
                      "following",
                      "mentionedUsers",
                      "subscribers",
                      "verified"
                    ],
                    "type": "string"
                  },
                  "x_reply_settings": {
                    "description": "Who can reply to the post. Alias for reply_settings.",
                    "enum": [
                      "everyone",
                      "following",
                      "mentionedUsers",
                      "subscribers",
                      "verified"
                    ],
                    "type": "string"
                  },
                  "poll": {
                    "description": "X poll settings: options and duration_minutes.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "x_poll": {
                    "description": "X poll settings: options and duration_minutes. Alias for poll.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "ai_generated": {
                    "description": "Label the post as AI-generated (X made_with_ai).",
                    "type": "boolean"
                  },
                  "ai_disclosure": {
                    "description": "Label the post as AI-generated (X made_with_ai). Alias for ai_generated.",
                    "type": "boolean"
                  },
                  "made_with_ai": {
                    "description": "Label the post as AI-generated (X made_with_ai). Alias for ai_generated.",
                    "type": "boolean"
                  },
                  "paid_partnership": {
                    "description": "Mark the post as a paid partnership (POST /2/tweets paid_partnership). Existing tweet.write.",
                    "type": "boolean"
                  },
                  "x_paid_partnership": {
                    "description": "Mark the post as a paid partnership (POST /2/tweets paid_partnership). Existing tweet.write. Alias for paid_partnership.",
                    "type": "boolean"
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "reply_settings": "following",
                  "poll": {
                    "options": [
                      "Yes",
                      "No"
                    ],
                    "duration_minutes": 1440
                  },
                  "paid_partnership": true
                }
              },
              {
                "title": "LinkedIn settings",
                "type": "object",
                "properties": {
                  "document_title": {
                    "description": "Title for a LinkedIn PDF/document post.",
                    "type": "string"
                  },
                  "linkedin_document_title": {
                    "description": "Title for a LinkedIn PDF/document post. Alias for document_title.",
                    "type": "string"
                  },
                  "document_filename": {
                    "description": "Filename for a LinkedIn document post.",
                    "type": "string"
                  },
                  "mentions": {
                    "description": "LinkedIn organization mention objects.",
                    "type": "array",
                    "items": {}
                  },
                  "linkedin_mentions": {
                    "description": "LinkedIn organization mention objects. Alias for mentions.",
                    "type": "array",
                    "items": {}
                  },
                  "poll": {
                    "description": "LinkedIn poll: { question, options (2-4), duration (ONE_DAY|THREE_DAYS|SEVEN_DAYS|FOURTEEN_DAYS) }. Mutually exclusive with media.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "linkedin_poll": {
                    "description": "LinkedIn poll: { question, options (2-4), duration (ONE_DAY|THREE_DAYS|SEVEN_DAYS|FOURTEEN_DAYS) }. Mutually exclusive with media. Alias for poll.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "thumbnail_url": {
                    "description": "Custom video thumbnail URL.",
                    "type": "string"
                  },
                  "content_call_to_action_label": {
                    "description": "LinkedIn contentCallToActionLabel, including BUY_NOW and SHOP_NOW (version 202504). Pair with content_landing_page.",
                    "enum": [
                      "APPLY",
                      "DOWNLOAD",
                      "VIEW_QUOTE",
                      "LEARN_MORE",
                      "SIGN_UP",
                      "SUBSCRIBE",
                      "REGISTER",
                      "JOIN",
                      "ATTEND",
                      "REQUEST_DEMO",
                      "SEE_MORE",
                      "BUY_NOW",
                      "SHOP_NOW"
                    ],
                    "type": "string"
                  },
                  "cta_label": {
                    "description": "LinkedIn contentCallToActionLabel, including BUY_NOW and SHOP_NOW (version 202504). Pair with content_landing_page. Alias for content_call_to_action_label.",
                    "enum": [
                      "APPLY",
                      "DOWNLOAD",
                      "VIEW_QUOTE",
                      "LEARN_MORE",
                      "SIGN_UP",
                      "SUBSCRIBE",
                      "REGISTER",
                      "JOIN",
                      "ATTEND",
                      "REQUEST_DEMO",
                      "SEE_MORE",
                      "BUY_NOW",
                      "SHOP_NOW"
                    ],
                    "type": "string"
                  },
                  "linkedin_cta_label": {
                    "description": "LinkedIn contentCallToActionLabel, including BUY_NOW and SHOP_NOW (version 202504). Pair with content_landing_page. Alias for content_call_to_action_label.",
                    "enum": [
                      "APPLY",
                      "DOWNLOAD",
                      "VIEW_QUOTE",
                      "LEARN_MORE",
                      "SIGN_UP",
                      "SUBSCRIBE",
                      "REGISTER",
                      "JOIN",
                      "ATTEND",
                      "REQUEST_DEMO",
                      "SEE_MORE",
                      "BUY_NOW",
                      "SHOP_NOW"
                    ],
                    "type": "string"
                  },
                  "content_landing_page": {
                    "description": "Landing page URL sent as contentLandingPage with the LinkedIn call to action.",
                    "type": "string"
                  },
                  "cta_url": {
                    "description": "Landing page URL sent as contentLandingPage with the LinkedIn call to action. Alias for content_landing_page.",
                    "type": "string"
                  },
                  "linkedin_cta_url": {
                    "description": "Landing page URL sent as contentLandingPage with the LinkedIn call to action. Alias for content_landing_page.",
                    "type": "string"
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "document_title": "Launch plan",
                  "mentions": [
                    {
                      "display_name": "posterly",
                      "urn": "urn:li:organization:123"
                    }
                  ],
                  "poll": {
                    "question": "Which feature next?",
                    "options": [
                      "Polls",
                      "Analytics"
                    ],
                    "duration": "THREE_DAYS"
                  },
                  "content_call_to_action_label": "BUY_NOW",
                  "content_landing_page": "https://www.poster.ly"
                }
              },
              {
                "title": "YouTube settings",
                "type": "object",
                "properties": {
                  "title": {
                    "description": "YouTube video title.",
                    "type": "string"
                  },
                  "youtube_title": {
                    "description": "YouTube video title. Alias for title.",
                    "type": "string"
                  },
                  "thumbnail_url": {
                    "description": "Custom YouTube thumbnail URL.",
                    "type": "string"
                  },
                  "privacy_status": {
                    "description": "YouTube video visibility.",
                    "enum": [
                      "public",
                      "unlisted",
                      "private"
                    ],
                    "type": "string"
                  },
                  "privacy": {
                    "description": "YouTube video visibility. Alias for privacy_status.",
                    "enum": [
                      "public",
                      "unlisted",
                      "private"
                    ],
                    "type": "string"
                  },
                  "made_for_kids": {
                    "description": "YouTube made-for-kids declaration.",
                    "type": "boolean"
                  },
                  "tags": {
                    "description": "YouTube tags.",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "category_id": {
                    "description": "YouTube category ID.",
                    "type": "string"
                  },
                  "notify_subscribers": {
                    "description": "Notify subscribers when the video publishes (default true).",
                    "type": "boolean"
                  },
                  "add_shorts_hashtag": {
                    "description": "Append #Shorts to the description for Shorts-feed eligibility (vertical clips).",
                    "type": "boolean"
                  },
                  "ai_generated": {
                    "description": "Label the video as containing AI/synthetic media (containsSyntheticMedia).",
                    "type": "boolean"
                  },
                  "ai_disclosure": {
                    "description": "Label the video as containing AI/synthetic media (containsSyntheticMedia). Alias for ai_generated.",
                    "type": "boolean"
                  },
                  "brand_partner": {
                    "description": "Optional YouTube brandPartner channel ID (UC…) or handle (@…). Added to videos.insert part=brandPartner when set.",
                    "type": "string"
                  },
                  "brandPartner": {
                    "description": "Optional YouTube brandPartner channel ID (UC…) or handle (@…). Added to videos.insert part=brandPartner when set. Alias for brand_partner.",
                    "type": "string"
                  }
                },
                "required": [
                  "title"
                ],
                "additionalProperties": true,
                "example": {
                  "title": "Launch walkthrough",
                  "privacy_status": "unlisted",
                  "notify_subscribers": false,
                  "add_shorts_hashtag": true,
                  "brand_partner": "@brand"
                }
              },
              {
                "title": "Pinterest settings",
                "type": "object",
                "properties": {
                  "board_id": {
                    "description": "Pinterest board ID from the pinterest.boards helper.",
                    "type": "string"
                  },
                  "pinterest_board_id": {
                    "description": "Pinterest board ID from the pinterest.boards helper. Alias for board_id.",
                    "type": "string"
                  },
                  "title": {
                    "description": "Pinterest Pin title.",
                    "type": "string"
                  },
                  "link": {
                    "description": "Destination URL for the Pin.",
                    "type": "string"
                  },
                  "destination_url": {
                    "description": "Destination URL for the Pin. Alias for link.",
                    "type": "string"
                  },
                  "cover_image_url": {
                    "description": "Required for video Pins: a stored, probe-verified JPEG or PNG cover URL (20 MiB maximum).",
                    "type": "string"
                  },
                  "video_cover_url": {
                    "description": "Required for video Pins: a stored, probe-verified JPEG or PNG cover URL (20 MiB maximum). Alias for cover_image_url.",
                    "type": "string"
                  },
                  "pinterest_cover_image_url": {
                    "description": "Required for video Pins: a stored, probe-verified JPEG or PNG cover URL (20 MiB maximum). Alias for cover_image_url.",
                    "type": "string"
                  },
                  "ai_generated": {
                    "description": "Label the Pin as AI-modified (ai_disclosures).",
                    "type": "boolean"
                  },
                  "ai_disclosure": {
                    "description": "Label the Pin as AI-modified (ai_disclosures). Alias for ai_generated.",
                    "type": "boolean"
                  },
                  "product_tags": {
                    "description": "Optional product tags on POST /v5/pins (product_id, optional x/y). Existing pins:write. Pin note is not written.",
                    "type": "array",
                    "items": {}
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "required": [
                  "board_id"
                ],
                "additionalProperties": true,
                "example": {
                  "board_id": "123456789",
                  "title": "Launch ideas",
                  "link": "https://www.poster.ly",
                  "cover_image_url": "https://assets.poster.ly/users/123/pinterest-video-covers/cover.jpg",
                  "product_tags": [
                    {
                      "product_id": "123"
                    }
                  ]
                }
              },
              {
                "title": "Threads settings",
                "type": "object",
                "properties": {
                  "reply_control": {
                    "description": "Threads reply control setting.",
                    "enum": [
                      "everyone",
                      "accounts_you_follow",
                      "mentioned_only",
                      "followers_only",
                      "parent_post_author_only"
                    ],
                    "type": "string"
                  },
                  "threads_reply_control": {
                    "description": "Threads reply control setting. Alias for reply_control.",
                    "enum": [
                      "everyone",
                      "accounts_you_follow",
                      "mentioned_only",
                      "followers_only",
                      "parent_post_author_only"
                    ],
                    "type": "string"
                  },
                  "poll": {
                    "description": "Threads poll: { options (2-4) }. Text-only, fixed 24h duration.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "threads_poll": {
                    "description": "Threads poll: { options (2-4) }. Text-only, fixed 24h duration. Alias for poll.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "topic_tag": {
                    "description": "A single Threads topic tag (1-50 chars, no periods/ampersands).",
                    "type": "string"
                  },
                  "threads_topic_tag": {
                    "description": "A single Threads topic tag (1-50 chars, no periods/ampersands). Alias for topic_tag.",
                    "type": "string"
                  },
                  "text_attachment": {
                    "description": "Long-form Threads text attachment.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "threads_text_attachment": {
                    "description": "Long-form Threads text attachment. Alias for text_attachment.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "share_to_instagram": {
                    "description": "Also share the published post to the Instagram account linked to the Threads profile as a Story (dark card). Requires Instagram sharing enabled for the Threads profile in the Threads app.",
                    "type": "boolean"
                  },
                  "threads_share_to_instagram": {
                    "description": "Also share the published post to the Instagram account linked to the Threads profile as a Story (dark card). Requires Instagram sharing enabled for the Threads profile in the Threads app. Alias for share_to_instagram.",
                    "type": "boolean"
                  },
                  "is_ghost_post": {
                    "description": "Publish as a Threads ghost post. Text-only.",
                    "type": "boolean"
                  },
                  "threads_is_ghost_post": {
                    "description": "Publish as a Threads ghost post. Text-only. Alias for is_ghost_post.",
                    "type": "boolean"
                  },
                  "is_spoiler": {
                    "description": "Mark the Threads post as a spoiler (full-caption text entity and/or is_spoiler_media).",
                    "type": "boolean"
                  },
                  "threads_is_spoiler": {
                    "description": "Mark the Threads post as a spoiler (full-caption text entity and/or is_spoiler_media). Alias for is_spoiler.",
                    "type": "boolean"
                  },
                  "is_spoiler_media": {
                    "description": "Set is_spoiler_media on the Threads container when media is attached.",
                    "type": "boolean"
                  },
                  "threads_is_spoiler_media": {
                    "description": "Set is_spoiler_media on the Threads container when media is attached. Alias for is_spoiler_media.",
                    "type": "boolean"
                  },
                  "text_entities": {
                    "description": "Threads text_entities, for example spoiler ranges with entity_type, offset, and length.",
                    "type": "array",
                    "items": {}
                  },
                  "threads_text_entities": {
                    "description": "Threads text_entities, for example spoiler ranges with entity_type, offset, and length. Alias for text_entities.",
                    "type": "array",
                    "items": {}
                  },
                  "enable_reply_approvals": {
                    "description": "Require approval before replies appear (enable_reply_approvals).",
                    "type": "boolean"
                  },
                  "threads_enable_reply_approvals": {
                    "description": "Require approval before replies appear (enable_reply_approvals). Alias for enable_reply_approvals.",
                    "type": "boolean"
                  },
                  "gif_attachment": {
                    "description": "GIPHY gif_attachment: { gif_id, provider: \"GIPHY\" }. Tenor is not supported.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "threads_gif_attachment": {
                    "description": "GIPHY gif_attachment: { gif_id, provider: \"GIPHY\" }. Tenor is not supported. Alias for gif_attachment.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "reply_control": "everyone",
                  "poll": {
                    "options": [
                      "Polls",
                      "Analytics"
                    ]
                  },
                  "topic_tag": "producthunt",
                  "is_ghost_post": false,
                  "enable_reply_approvals": true
                }
              },
              {
                "title": "Google Business settings",
                "type": "object",
                "properties": {
                  "post_type": {
                    "description": "Google Business Profile post type.",
                    "enum": [
                      "STANDARD",
                      "EVENT",
                      "OFFER"
                    ],
                    "type": "string"
                  },
                  "topic_type": {
                    "description": "Google Business Profile post type. Alias for post_type.",
                    "enum": [
                      "STANDARD",
                      "EVENT",
                      "OFFER"
                    ],
                    "type": "string"
                  },
                  "event": {
                    "description": "Event title and start/end date/time.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "offer": {
                    "description": "Offer coupon, redeem URL, and terms.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "cta": {
                    "description": "CTA type and URL.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "recurrence": {
                    "description": "EVENT/OFFER recurrenceInfo: { type: DAILY|WEEKLY|MONTHLY, series_end_time? }. Keeps one-off scheduledTime.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "recurrenceInfo": {
                    "description": "EVENT/OFFER recurrenceInfo: { type: DAILY|WEEKLY|MONTHLY, series_end_time? }. Keeps one-off scheduledTime. Alias for recurrence.",
                    "type": "object",
                    "additionalProperties": true
                  }
                },
                "additionalProperties": true,
                "example": {
                  "post_type": "EVENT",
                  "event": {
                    "title": "Launch night",
                    "start_date": "2026-09-01"
                  },
                  "recurrence": {
                    "type": "WEEKLY",
                    "series_end_time": "2026-12-01T00:00:00Z"
                  },
                  "cta": {
                    "type": "LEARN_MORE",
                    "url": "https://www.poster.ly"
                  }
                }
              },
              {
                "title": "Telegram settings",
                "type": "object",
                "properties": {
                  "parse_mode": {
                    "description": "Telegram caption parse mode when supported.",
                    "enum": [
                      "HTML",
                      "MarkdownV2"
                    ],
                    "type": "string"
                  },
                  "disable_web_page_preview": {
                    "description": "Disable link previews for text posts.",
                    "type": "boolean"
                  },
                  "poll": {
                    "description": "Telegram native poll: { question, options (2-10), allows_multiple_answers? }.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "telegram_poll": {
                    "description": "Telegram native poll: { question, options (2-10), allows_multiple_answers? }. Alias for poll.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "buttons": {
                    "description": "Inline CTA buttons: [{ text, url }] (up to 3).",
                    "type": "array",
                    "items": {}
                  },
                  "telegram_buttons": {
                    "description": "Inline CTA buttons: [{ text, url }] (up to 3). Alias for buttons.",
                    "type": "array",
                    "items": {}
                  },
                  "video_cover_url": {
                    "description": "Cover image URL for sendVideo (Bot API cover).",
                    "type": "string"
                  },
                  "cover_url": {
                    "description": "Cover image URL for sendVideo (Bot API cover). Alias for video_cover_url.",
                    "type": "string"
                  },
                  "telegram_video_cover_url": {
                    "description": "Cover image URL for sendVideo (Bot API cover). Alias for video_cover_url.",
                    "type": "string"
                  },
                  "start_timestamp": {
                    "description": "Video start timestamp in seconds for sendVideo (Bot API start_timestamp).",
                    "type": "number"
                  },
                  "telegram_start_timestamp": {
                    "description": "Video start timestamp in seconds for sendVideo (Bot API start_timestamp). Alias for start_timestamp.",
                    "type": "number"
                  },
                  "is_live_photo": {
                    "description": "Send as sendLivePhoto when both a still image and a video are attached.",
                    "type": "boolean"
                  },
                  "telegram_is_live_photo": {
                    "description": "Send as sendLivePhoto when both a still image and a video are attached. Alias for is_live_photo.",
                    "type": "boolean"
                  }
                },
                "additionalProperties": true,
                "example": {
                  "poll": {
                    "question": "Which feature next?",
                    "options": [
                      "Polls",
                      "Analytics"
                    ]
                  },
                  "buttons": [
                    {
                      "text": "Read more",
                      "url": "https://www.poster.ly"
                    }
                  ],
                  "video_cover_url": "https://example.com/cover.jpg"
                }
              },
              {
                "title": "Bluesky settings",
                "type": "object",
                "properties": {
                  "langs": {
                    "description": "Language tags for the Bluesky post.",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "content_label": {
                    "description": "Self-applied content warning (tap-to-reveal).",
                    "enum": [
                      "sexual",
                      "nudity",
                      "porn",
                      "graphic-media"
                    ],
                    "type": "string"
                  },
                  "content_warning": {
                    "description": "Self-applied content warning (tap-to-reveal). Alias for content_label.",
                    "enum": [
                      "sexual",
                      "nudity",
                      "porn",
                      "graphic-media"
                    ],
                    "type": "string"
                  },
                  "tags": {
                    "description": "Up to 8 hidden discovery tags (separate from in-text hashtags).",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "bluesky_tags": {
                    "description": "Up to 8 hidden discovery tags (separate from in-text hashtags). Alias for tags.",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "quote_url": {
                    "description": "A Bluesky post URL (or AT-URI) to quote.",
                    "type": "string"
                  },
                  "quote": {
                    "description": "A Bluesky post URL (or AT-URI) to quote. Alias for quote_url.",
                    "type": "string"
                  },
                  "bluesky_quote_url": {
                    "description": "A Bluesky post URL (or AT-URI) to quote. Alias for quote_url.",
                    "type": "string"
                  },
                  "disable_quotes": {
                    "description": "Prevent others from quote-posting this post (postgate).",
                    "type": "boolean"
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "langs": [
                    "en"
                  ],
                  "tags": [
                    "producthunt",
                    "launch"
                  ],
                  "quote_url": "https://bsky.app/profile/poster.ly/post/abc123"
                }
              },
              {
                "title": "Discord settings",
                "type": "object",
                "properties": {
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "media_alt_texts": {
                    "https://example.com/chart.png": "Q2 revenue chart"
                  }
                }
              },
              {
                "title": "Slack settings",
                "type": "object",
                "properties": {
                  "markdown": {
                    "description": "Send the caption as a Block Kit markdown block on chat.postMessage.",
                    "type": "boolean"
                  },
                  "slack_markdown": {
                    "description": "Send the caption as a Block Kit markdown block on chat.postMessage. Alias for markdown.",
                    "type": "boolean"
                  },
                  "blocks": {
                    "description": "Optional Block Kit blocks (markdown, card, or carousel) passed to chat.postMessage. File upload still uses getUploadURLExternal.",
                    "type": "array",
                    "items": {}
                  },
                  "slack_blocks": {
                    "description": "Optional Block Kit blocks (markdown, card, or carousel) passed to chat.postMessage. File upload still uses getUploadURLExternal. Alias for blocks.",
                    "type": "array",
                    "items": {}
                  }
                },
                "additionalProperties": true,
                "example": {
                  "markdown": true
                }
              },
              {
                "title": "Mastodon settings",
                "type": "object",
                "properties": {
                  "visibility": {
                    "description": "Status visibility (private means followers only).",
                    "enum": [
                      "public",
                      "unlisted",
                      "private"
                    ],
                    "type": "string"
                  },
                  "mastodon_visibility": {
                    "description": "Status visibility (private means followers only). Alias for visibility.",
                    "enum": [
                      "public",
                      "unlisted",
                      "private"
                    ],
                    "type": "string"
                  },
                  "spoiler_text": {
                    "description": "Content warning shown before the post is revealed (marks media sensitive).",
                    "type": "string"
                  },
                  "content_warning": {
                    "description": "Content warning shown before the post is revealed (marks media sensitive). Alias for spoiler_text.",
                    "type": "string"
                  },
                  "mastodon_spoiler_text": {
                    "description": "Content warning shown before the post is revealed (marks media sensitive). Alias for spoiler_text.",
                    "type": "string"
                  },
                  "language": {
                    "description": "ISO 639 language code for the status.",
                    "type": "string"
                  },
                  "mastodon_language": {
                    "description": "ISO 639 language code for the status. Alias for language.",
                    "type": "string"
                  },
                  "quoted_status_id": {
                    "description": "Mastodon status ID to quote (4.5+ quoted_status_id).",
                    "type": "string"
                  },
                  "quote_id": {
                    "description": "Mastodon status ID to quote (4.5+ quoted_status_id). Alias for quoted_status_id.",
                    "type": "string"
                  },
                  "mastodon_quoted_status_id": {
                    "description": "Mastodon status ID to quote (4.5+ quoted_status_id). Alias for quoted_status_id.",
                    "type": "string"
                  },
                  "poll": {
                    "description": "Mastodon poll: { options (2-4), expires_in seconds, multiple? }. Media and a poll can be combined on Mastodon 4.6+.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "mastodon_poll": {
                    "description": "Mastodon poll: { options (2-4), expires_in seconds, multiple? }. Media and a poll can be combined on Mastodon 4.6+. Alias for poll.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "visibility": "public",
                  "spoiler_text": "Launch spoilers",
                  "language": "en",
                  "quoted_status_id": "123",
                  "poll": {
                    "options": [
                      "Yes",
                      "No"
                    ],
                    "expires_in": 86400
                  }
                }
              },
              {
                "title": "Dev.to settings",
                "type": "object",
                "properties": {
                  "title": {
                    "description": "Article title. Falls back to the first line of the caption.",
                    "type": "string"
                  },
                  "devto_title": {
                    "description": "Article title. Falls back to the first line of the caption. Alias for title.",
                    "type": "string"
                  },
                  "tags": {
                    "description": "Up to 4 tags (lowercase alphanumeric).",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "devto_tags": {
                    "description": "Up to 4 tags (lowercase alphanumeric). Alias for tags.",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "canonical_url": {
                    "description": "Canonical URL when cross-posting from your own blog.",
                    "type": "string"
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "title": "How we ship 18 platforms",
                  "tags": [
                    "webdev",
                    "saas"
                  ]
                }
              },
              {
                "title": "Hashnode settings",
                "type": "object",
                "properties": {
                  "title": {
                    "description": "Post title. Falls back to the first line of the caption.",
                    "type": "string"
                  },
                  "hashnode_title": {
                    "description": "Post title. Falls back to the first line of the caption. Alias for title.",
                    "type": "string"
                  },
                  "tags": {
                    "description": "Up to 4 tags (lowercase alphanumeric).",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "hashnode_tags": {
                    "description": "Up to 4 tags (lowercase alphanumeric). Alias for tags.",
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "publication_id": {
                    "description": "Target publication. Defaults to the account blog captured at connect time.",
                    "type": "string"
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "title": "How we ship 18 platforms",
                  "tags": [
                    "webdev",
                    "saas"
                  ]
                }
              },
              {
                "title": "WordPress settings",
                "type": "object",
                "properties": {
                  "title": {
                    "description": "Post title. Falls back to the first line of the caption.",
                    "type": "string"
                  },
                  "wordpress_title": {
                    "description": "Post title. Falls back to the first line of the caption. Alias for title.",
                    "type": "string"
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "additionalProperties": true,
                "example": {
                  "title": "How we ship 18 platforms"
                }
              },
              {
                "title": "Lemmy settings",
                "type": "object",
                "properties": {
                  "community": {
                    "description": "Target community, e.g. technology or technology@lemmy.world.",
                    "type": "string"
                  },
                  "lemmy_community": {
                    "description": "Target community, e.g. technology or technology@lemmy.world. Alias for community.",
                    "type": "string"
                  },
                  "title": {
                    "description": "Post title. Falls back to the first line of the caption.",
                    "type": "string"
                  },
                  "lemmy_title": {
                    "description": "Post title. Falls back to the first line of the caption. Alias for title.",
                    "type": "string"
                  },
                  "url": {
                    "description": "Link post URL. Defaults to the first attached image.",
                    "type": "string"
                  },
                  "lemmy_url": {
                    "description": "Link post URL. Defaults to the first attached image. Alias for url.",
                    "type": "string"
                  },
                  "nsfw": {
                    "description": "Mark the post NSFW.",
                    "type": "boolean"
                  },
                  "media_alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "alt_texts": {
                    "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                    "type": "object",
                    "additionalProperties": true
                  },
                  "media_accessibility": {
                    "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "index",
                        "alt_text"
                      ],
                      "properties": {
                        "index": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "asset_id": {
                          "type": "string"
                        },
                        "source_url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "alt_text": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                },
                "required": [
                  "community"
                ],
                "additionalProperties": true,
                "example": {
                  "community": "selfhosted@lemmy.world",
                  "title": "posterly now posts to Lemmy"
                }
              }
            ],
            "additionalProperties": true
          },
          "reel_cover_url": {
            "type": "string",
            "format": "uri"
          },
          "reel_cover_method": {
            "type": "string"
          },
          "reel_thumb_offset": {
            "type": "number",
            "minimum": 0
          },
          "confirm": {
            "type": "boolean",
            "description": "Must be true after the user explicitly confirms the proposed post update."
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "Update Post",
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "update_post_status",
      "description": "Pause, resume/schedule, or move a post back to draft. DESTRUCTIVE WRITE: changes whether content will publish. Always fetch with get_post first, show the current status and proposed status/scheduled_at, and get explicit confirmation before calling.",
      "inputSchema": {
        "type": "object",
        "required": [
          "post_id",
          "status",
          "confirm"
        ],
        "properties": {
          "post_id": {
            "type": "integer"
          },
          "status": {
            "type": "string",
            "enum": [
              "scheduled",
              "paused",
              "draft"
            ]
          },
          "scheduled_at": {
            "type": "string",
            "description": "ISO 8601 UTC datetime. Required when scheduling a draft; optional when resuming a paused future post."
          },
          "confirm": {
            "type": "boolean",
            "description": "Must be true after the user explicitly confirms the status change."
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "Update Post Status",
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "update_post_release_id",
      "description": "Set or repair an external release_id and optional group_id on a post. WRITE: call get_post first, show the target post and release/group IDs, then pass confirm=true only after explicit confirmation.",
      "inputSchema": {
        "type": "object",
        "required": [
          "post_id",
          "release_id",
          "confirm"
        ],
        "properties": {
          "post_id": {
            "type": "integer"
          },
          "release_id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 160
          },
          "group_id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 160
          },
          "confirm": {
            "type": "boolean",
            "description": "Must be true after the user explicitly confirms the release/group metadata update."
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "Update Post Release Id",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "delete_post",
      "description": "Delete a scheduled or draft post. DESTRUCTIVE and IRREVERSIBLE. Cannot delete published posts. Always fetch with get_post first and confirm what will be deleted before calling.",
      "inputSchema": {
        "type": "object",
        "required": [
          "post_id",
          "confirm"
        ],
        "properties": {
          "post_id": {
            "type": "integer"
          },
          "confirm": {
            "type": "boolean",
            "description": "Must be true after the user explicitly confirms the post deletion."
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "Delete Post",
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "delete_post_group",
      "description": "Delete every draft/scheduled/failed/paused post matching a caller-defined group_id, post_group_id, api_group_id, or release_id. DESTRUCTIVE: inspect the group first, list affected posts, and pass confirm=true only after explicit confirmation.",
      "inputSchema": {
        "type": "object",
        "required": [
          "group_id",
          "confirm"
        ],
        "properties": {
          "group_id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 160
          },
          "confirm": {
            "type": "boolean",
            "description": "Must be true after the user explicitly confirms group deletion."
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "Delete Post Group",
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "get_x_posting_quota",
      "description": "Get managed X posting quota, usage, remaining posts, URL-blocking status, and add-on plan info for a workspace.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "workspace_id": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "Get X Posting Quota",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "upload_media",
      "description": "Upload a small image or video to posterly storage via base64. Returns a URL usable with create_post. Supports JPEG, PNG, GIF, WebP, MP4, MOV, WebM. Keep decoded files <=5MB on this relay path; for larger files, use create_signed_upload and PUT the raw bytes to the returned upload_url. Counts against the user's storage quota but does not publish anywhere - that's create_post's job.",
      "inputSchema": {
        "type": "object",
        "required": [
          "filename",
          "base64_data"
        ],
        "properties": {
          "base64_data": {
            "type": "string",
            "description": "Base64-encoded file data. The HTTP MCP transport requires base64 (no filesystem access)."
          },
          "filename": {
            "type": "string",
            "description": "Filename with extension, e.g. photo.jpg"
          },
          "content_type": {
            "type": "string",
            "description": "MIME type (auto-detected from filename if omitted)"
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "Upload Media",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      }
    },
    {
      "name": "upload_media_from_url",
      "description": "Fetch an image or video from a public HTTPS URL into posterly storage. Returns a URL usable with create_post. SSRF protections block localhost/private IP targets.",
      "inputSchema": {
        "type": "object",
        "required": [
          "url"
        ],
        "properties": {
          "url": {
            "type": "string",
            "format": "uri"
          },
          "filename": {
            "type": "string"
          },
          "content_type": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "Upload Media From Url",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "create_signed_upload",
      "description": "Create a signed upload URL for a larger image or video. PUT the raw bytes to the returned upload_url (object storage) with the returned headers, then pass public_url to create_post.",
      "inputSchema": {
        "type": "object",
        "required": [
          "filename",
          "content_type",
          "size"
        ],
        "properties": {
          "filename": {
            "type": "string"
          },
          "content_type": {
            "type": "string"
          },
          "size": {
            "type": "integer",
            "minimum": 1
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "Create Signed Upload",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "create_media_drop",
      "description": "Create a human drop page so ChatGPT or Claude users can upload a laptop file without dashboard login. Returns drop_url (https://www.poster.ly/drop/<token>). Send that URL to the user, wait, then call list_media. This is not the chat paperclip and not create_signed_upload.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "filename": {
            "type": "string",
            "description": "Optional filename hint, e.g. launch-video.mp4"
          },
          "max_files": {
            "type": "integer",
            "minimum": 1,
            "maximum": 10
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "Create Media Drop",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "list_media",
      "description": "List the newest media assets for the authenticated user. After create_media_drop, pass drop_session_id to see files uploaded on /drop/<token>. Use public_url with validate_post / create_post.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "default": 10
          },
          "drop_session_id": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "List Media",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "get_video_options",
      "description": "List read-only Google Veo and xAI Grok video generation options, input modes, durations, resolutions, aspect ratios, and credit-cost estimates. Does not generate video or spend credits.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "annotations": {
        "title": "Get Video Options",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "run_video_function",
      "description": "Run a read-only Google Veo or xAI Grok video helper function before generation. Does not generate video or spend credits.",
      "inputSchema": {
        "type": "object",
        "required": [
          "identifier",
          "functionName"
        ],
        "properties": {
          "identifier": {
            "type": "string",
            "enum": [
              "google_veo",
              "veo3",
              "xai_grok",
              "grok_imagine"
            ],
            "description": "Video generator identifier from get_video_options."
          },
          "functionName": {
            "type": "string",
            "enum": [
              "list_input_modes",
              "estimate_cost",
              "validate_request"
            ],
            "description": "Helper function name from get_video_options.tools."
          },
          "params": {
            "type": "object",
            "additionalProperties": true,
            "description": "Function parameters. estimate_cost accepts model, duration_seconds, resolution, output, and xAI input_image_count. validate_request accepts a generate_video-style payload."
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "Run Video Function",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "generate_video",
      "description": "Queue an AI video job with Google Veo 3.1 or xAI Grok Imagine Video 1.5. COSTS CREDITS - confirm provider, prompt, duration, resolution, aspect ratio, audio choice, and credit cost with the user before calling. Poll get_video_job for status and final video_url.",
      "inputSchema": {
        "type": "object",
        "required": [
          "prompt",
          "confirm"
        ],
        "properties": {
          "provider": {
            "type": "string",
            "enum": [
              "google",
              "xai"
            ],
            "default": "google"
          },
          "prompt": {
            "type": "string",
            "minLength": 5,
            "maxLength": 4000
          },
          "negative_prompt": {
            "type": "string",
            "maxLength": 500
          },
          "aspect_ratio": {
            "type": "string",
            "enum": [
              "1:1",
              "16:9",
              "9:16",
              "4:3",
              "3:4",
              "3:2",
              "2:3"
            ],
            "default": "16:9"
          },
          "duration_seconds": {
            "type": "integer",
            "minimum": 1,
            "maximum": 15,
            "default": 8
          },
          "resolution": {
            "type": "string",
            "enum": [
              "480p",
              "720p",
              "1080p"
            ],
            "default": "720p"
          },
          "model": {
            "type": "string",
            "enum": [
              "lite",
              "fast",
              "standard"
            ],
            "default": "fast"
          },
          "image_url": {
            "type": "string",
            "format": "uri"
          },
          "end_image_url": {
            "type": "string",
            "format": "uri"
          },
          "reference_images": {
            "type": "array",
            "maxItems": 3,
            "items": {
              "type": "object",
              "required": [
                "url",
                "type"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "format": "uri"
                },
                "type": {
                  "type": "string",
                  "enum": [
                    "character",
                    "object",
                    "scene"
                  ]
                }
              },
              "additionalProperties": false
            }
          },
          "generate_audio": {
            "type": "boolean",
            "default": true,
            "description": "Google can disable generated audio. xAI Grok includes audio and requires this to remain true."
          },
          "source_video_url": {
            "type": "string",
            "format": "uri"
          },
          "confirm": {
            "type": "boolean",
            "description": "Must be true after the user explicitly confirms prompt, model, duration, resolution, and credit cost."
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "Generate Video",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "get_video_job",
      "description": "Get one AI video job by ID, or list recent video jobs when job_id is omitted. Use after generate_video to poll for completed video_url.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "job_id": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "pending",
              "processing",
              "completed",
              "failed",
              "dismissed"
            ]
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "default": 10
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "Get Video Job",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "generate_captions",
      "description": "Generate or adapt AI caption suggestions for one or more social platforms. Uses AI Caption Assist quota and returns options only; it does not create, draft, schedule, or publish posts.",
      "inputSchema": {
        "type": "object",
        "required": [
          "platforms"
        ],
        "properties": {
          "platforms": {
            "type": "array",
            "minItems": 1,
            "maxItems": 9,
            "items": {
              "type": "string",
              "enum": [
                "instagram",
                "facebook",
                "tiktok",
                "twitter",
                "threads",
                "linkedin",
                "youtube",
                "pinterest",
                "google_business"
              ]
            }
          },
          "brief": {
            "type": "string",
            "maxLength": 1200
          },
          "tone": {
            "type": "string",
            "maxLength": 60
          },
          "allow_emojis": {
            "type": "boolean",
            "default": true
          },
          "hashtag_strategy": {
            "type": "string",
            "enum": [
              "none",
              "smart",
              "minimal",
              "aggressive"
            ],
            "default": "smart"
          },
          "count": {
            "type": "integer",
            "minimum": 1,
            "maximum": 5,
            "default": 3
          },
          "mode": {
            "type": "string",
            "enum": [
              "generate",
              "adapt"
            ],
            "default": "generate"
          },
          "source_caption": {
            "type": "string",
            "maxLength": 4000
          },
          "source_platform": {
            "type": "string",
            "enum": [
              "instagram",
              "facebook",
              "tiktok",
              "twitter",
              "threads",
              "linkedin",
              "youtube",
              "pinterest",
              "google_business"
            ]
          },
          "preserve_links": {
            "type": "boolean",
            "default": true
          },
          "preserve_mentions": {
            "type": "boolean",
            "default": true
          },
          "preserve_call_to_action": {
            "type": "boolean",
            "default": true
          },
          "social_account_id": {
            "type": "string"
          },
          "workspace_id": {
            "type": "string"
          },
          "manual_brand_voice": {
            "type": "object",
            "required": [
              "summary"
            ],
            "properties": {
              "summary": {
                "type": "string",
                "minLength": 10,
                "maxLength": 500
              },
              "traits": {
                "type": "array",
                "maxItems": 10,
                "items": {
                  "type": "string"
                }
              },
              "style_guidelines": {
                "type": "array",
                "maxItems": 10,
                "items": {
                  "type": "string"
                }
              }
            },
            "additionalProperties": true
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "Generate Captions",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "generate_image",
      "description": "Generate an AI image via posterly using Nano Banana (Gemini) or Grok Imagine Image 2.0 (xAI). Returns a URL usable with create_post. COSTS CREDITS - confirm subject + style + aspect_ratio + provider with the user before calling.",
      "inputSchema": {
        "type": "object",
        "required": [
          "prompt",
          "confirm"
        ],
        "properties": {
          "prompt": {
            "type": "string",
            "minLength": 5,
            "maxLength": 4000
          },
          "aspect_ratio": {
            "type": "string",
            "enum": [
              "1:1",
              "9:16",
              "4:5",
              "3:4",
              "2:3",
              "1:4",
              "1:8",
              "21:9",
              "16:9",
              "4:3",
              "3:2",
              "4:1",
              "8:1",
              "5:4"
            ],
            "default": "1:1"
          },
          "style": {
            "type": "string",
            "enum": [
              "photographic",
              "illustration",
              "minimal",
              "vibrant",
              "professional",
              "youtube_thumbnail",
              "reel_cover",
              "review_background"
            ],
            "default": "photographic"
          },
          "variations": {
            "type": "integer",
            "minimum": 1,
            "maximum": 4,
            "default": 1
          },
          "provider": {
            "type": "string",
            "enum": [
              "google",
              "xai"
            ],
            "default": "google",
            "description": "google for Nano Banana or xai for Grok Imagine Image 2.0."
          },
          "model": {
            "type": "string",
            "enum": [
              "lite",
              "flash",
              "pro"
            ],
            "default": "flash",
            "description": "Google-only: lite (8 credits, 1K only), flash (15 at 1K), or pro (30 at 1K). Ignored for xAI."
          },
          "resolution": {
            "type": "string",
            "enum": [
              "512",
              "1K",
              "2K",
              "4K"
            ],
            "default": "1K",
            "description": "xAI supports 1K/2K only. Google flash bills 10/15/23/35 for 512/1K/2K/4K; pro bills 30 at 1K-2K and 55 at 4K."
          },
          "quality": {
            "type": "string",
            "enum": [
              "low",
              "medium"
            ],
            "default": "medium",
            "description": "xAI only. Low costs 9/14 credits at 1K/2K; medium costs 14/18 credits."
          },
          "confirm": {
            "type": "boolean",
            "description": "Must be true after the user explicitly confirms subject, style, aspect ratio, and credit use."
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "Generate Image",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "get_account_analytics",
      "description": "Get daily analytics snapshots and a period summary for a connected social account. Supports Instagram, Facebook Pages, LinkedIn, Google Business Profile, Pinterest, YouTube, and Threads. Uses API-provided display_metrics for platform-native dashboard labels. presentation controls output: compact for Telegram/mobile, table for Markdown clients, json for custom chart/card renderers.",
      "inputSchema": {
        "type": "object",
        "required": [
          "account_id"
        ],
        "properties": {
          "account_id": {
            "type": "integer",
            "description": "Social account ID (from list_accounts)"
          },
          "from": {
            "type": "string",
            "description": "ISO date, default 30 days ago"
          },
          "to": {
            "type": "string",
            "description": "ISO date, default today"
          },
          "presentation": {
            "type": "string",
            "enum": [
              "compact",
              "table",
              "json"
            ],
            "default": "compact",
            "description": "Output style: compact bullets, Markdown table, or raw JSON for client-side chart/card rendering."
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "Get Account Analytics",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "get_post_analytics",
      "description": "Get per-post engagement metrics (likes, comments/replies, reach, impressions/views, saves, shares, reposts, quotes, plays) for a connected account. Supports Instagram, Facebook Pages, LinkedIn, Google Business Profile, Pinterest, YouTube, and Threads. Most recent posts first. presentation controls output: compact for Telegram/mobile, table for Markdown clients, json for custom chart/card renderers.",
      "inputSchema": {
        "type": "object",
        "required": [
          "account_id"
        ],
        "properties": {
          "account_id": {
            "type": "integer"
          },
          "from": {
            "type": "string",
            "description": "ISO date, default 30 days ago"
          },
          "to": {
            "type": "string",
            "description": "ISO date, default today"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 200,
            "default": 50
          },
          "offset": {
            "type": "integer",
            "minimum": 0
          },
          "presentation": {
            "type": "string",
            "enum": [
              "compact",
              "table",
              "json"
            ],
            "default": "compact",
            "description": "Output style: compact bullets, Markdown table, or raw JSON for client-side chart/card rendering."
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "Get Post Analytics",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "list_google_business_reviews",
      "description": "List Google Business Profile reviews for one location/account or every accessible GBP location. Pages through all reviews Google has (not just the first 50), returns the full untruncated review text with its date, and reports each location's total review count. Supports rating and unanswered-only filters plus limit/offset paging.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "workspace_id": {
            "type": "string"
          },
          "account_id": {
            "type": "integer",
            "description": "Google Business social account ID from list_accounts."
          },
          "location_id": {
            "type": "string",
            "description": "Google Business numeric location id (the location_id/platform_user_id from list_accounts, e.g. \"197940849675145390\"). NOT the ChIJ... Place ID returned by get_google_business_review_link. Prefer account_id."
          },
          "rating": {
            "type": "integer",
            "minimum": 1,
            "maximum": 5
          },
          "unanswered": {
            "type": "boolean",
            "default": false
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 1000,
            "default": 200,
            "description": "Maximum reviews to return in this call. Every returned review is listed in full."
          },
          "offset": {
            "type": "integer",
            "minimum": 0,
            "description": "Skip this many reviews before returning results. Use with limit to page through a location with more reviews than one call returns."
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "List Google Business Reviews",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "get_google_business_review_link",
      "description": "Get the direct public Google review link for a connected Google Business Profile location. Requires account_id or location_id. Returns reviewLink plus the Google Place ID (ChIJ...); that Place ID is output only and must NOT be passed back as location_id to other tools.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "workspace_id": {
            "type": "string"
          },
          "account_id": {
            "type": "integer",
            "description": "Google Business social account ID from list_accounts."
          },
          "location_id": {
            "type": "string",
            "description": "Google Business numeric location id (the location_id/platform_user_id from list_accounts, e.g. \"197940849675145390\"). NOT the ChIJ... Place ID returned by get_google_business_review_link. Prefer account_id."
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "Get Google Business Review Link",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "audit_google_business_profile",
      "description": "Run a live local-profile audit for a connected Google Business Profile location, including completeness, categories, media, attributes, reviews, and recommendations.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "workspace_id": {
            "type": "string"
          },
          "account_id": {
            "type": "integer",
            "description": "Google Business social account ID from list_accounts."
          },
          "location_id": {
            "type": "string",
            "description": "Google Business numeric location id (the location_id/platform_user_id from list_accounts, e.g. \"197940849675145390\"). NOT the ChIJ... Place ID returned by get_google_business_review_link. Prefer account_id."
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "Audit Google Business Profile",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "suggest_google_business_review_reply",
      "description": "Generate short, brand-aware AI reply suggestions for a Google review. Uses the AI Caption Assist allowance; does not post the reply.",
      "inputSchema": {
        "type": "object",
        "required": [
          "star_rating"
        ],
        "properties": {
          "workspace_id": {
            "type": "string"
          },
          "account_id": {
            "type": "integer",
            "description": "Optional Google Business social account ID for brand voice context."
          },
          "location_id": {
            "type": "string"
          },
          "review_text": {
            "type": "string"
          },
          "star_rating": {
            "type": "number",
            "minimum": 1,
            "maximum": 5
          },
          "reviewer_name": {
            "type": "string"
          },
          "business_name": {
            "type": "string"
          },
          "tone": {
            "type": "string",
            "enum": [
              "professional",
              "friendly",
              "apologetic"
            ],
            "default": "professional"
          },
          "count": {
            "type": "integer",
            "minimum": 1,
            "maximum": 5,
            "default": 3
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "Suggest Google Business Review Reply",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "reply_google_business_review",
      "description": "Post or update the owner reply on a Google Business Profile review. WRITE: show the review, location, and exact reply text to the user, then pass confirm=true only after explicit confirmation.",
      "inputSchema": {
        "type": "object",
        "required": [
          "review_name",
          "comment",
          "confirm"
        ],
        "properties": {
          "workspace_id": {
            "type": "string"
          },
          "account_id": {
            "type": "integer",
            "description": "Google Business social account ID from list_accounts."
          },
          "location_id": {
            "type": "string"
          },
          "review_name": {
            "type": "string",
            "description": "Full Google review resource name."
          },
          "comment": {
            "type": "string",
            "minLength": 1,
            "maxLength": 4096
          },
          "confirm": {
            "type": "boolean",
            "description": "Must be true after explicit user confirmation."
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "Reply Google Business Review",
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "delete_google_business_review_reply",
      "description": "Delete the owner reply from a Google Business Profile review. DESTRUCTIVE: confirm the review and location with the user, then pass confirm=true only after explicit confirmation.",
      "inputSchema": {
        "type": "object",
        "required": [
          "review_name",
          "confirm"
        ],
        "properties": {
          "workspace_id": {
            "type": "string"
          },
          "account_id": {
            "type": "integer",
            "description": "Google Business social account ID from list_accounts."
          },
          "location_id": {
            "type": "string"
          },
          "review_name": {
            "type": "string",
            "description": "Full Google review resource name."
          },
          "confirm": {
            "type": "boolean",
            "description": "Must be true after explicit user confirmation."
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "Delete Google Business Review Reply",
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "list_google_business_media",
      "description": "List the photos and videos on a Google Business Profile gallery (the media shown on Maps and Search) for one location/account or every accessible GBP location. This is separate from media attached to a post. Returns each item's resource name, category, format, and attribution.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "workspace_id": {
            "type": "string",
            "description": "Filter to a workspace ID from whoami."
          },
          "account_id": {
            "type": "integer",
            "description": "Google Business social account ID from list_accounts."
          },
          "location_id": {
            "type": "string",
            "description": "Google Business numeric location id (the location_id/platform_user_id from list_accounts, e.g. \"197940849675145390\"). NOT the ChIJ... Place ID returned by get_google_business_review_link. Prefer account_id."
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "List Google Business Media",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "add_google_business_media",
      "description": "Add a photo or video to a Google Business Profile gallery (the media shown on Maps and Search). Provide a public https source_url first by uploading via upload_media_from_url or upload_media. COVER and PROFILE are single-slot and replace the existing one. WRITE: show the location, category, and media URL to the user, then pass confirm=true only after explicit confirmation.",
      "inputSchema": {
        "type": "object",
        "required": [
          "source_url",
          "category",
          "confirm"
        ],
        "properties": {
          "workspace_id": {
            "type": "string",
            "description": "Filter to a workspace ID from whoami."
          },
          "account_id": {
            "type": "integer",
            "description": "Google Business social account ID from list_accounts."
          },
          "location_id": {
            "type": "string",
            "description": "Google Business numeric location id (the location_id/platform_user_id from list_accounts, e.g. \"197940849675145390\"). NOT the ChIJ... Place ID returned by get_google_business_review_link. Prefer account_id."
          },
          "source_url": {
            "type": "string",
            "format": "uri",
            "description": "Public https URL of the photo or video (from upload_media / upload_media_from_url)."
          },
          "category": {
            "type": "string",
            "enum": [
              "COVER",
              "PROFILE",
              "LOGO",
              "EXTERIOR",
              "INTERIOR",
              "PRODUCT",
              "AT_WORK",
              "FOOD_AND_DRINK",
              "MENU",
              "COMMON_AREA",
              "ROOMS",
              "TEAMS",
              "ADDITIONAL"
            ],
            "description": "Which gallery category to add the media to."
          },
          "media_format": {
            "type": "string",
            "enum": [
              "PHOTO",
              "VIDEO"
            ],
            "description": "Defaults to PHOTO. Use VIDEO for videos (Google caps profile videos at 30s / 75MB)."
          },
          "confirm": {
            "type": "boolean",
            "description": "Must be true after explicit user confirmation."
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "Add Google Business Media",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "delete_google_business_media",
      "description": "Remove a photo or video from a Google Business Profile gallery. Get media_name from list_google_business_media. This permanently deletes the item from the public profile. DESTRUCTIVE: show the exact media item and location to the user, then pass confirm=true only after explicit confirmation.",
      "inputSchema": {
        "type": "object",
        "required": [
          "media_name",
          "confirm"
        ],
        "properties": {
          "workspace_id": {
            "type": "string",
            "description": "Filter to a workspace ID from whoami."
          },
          "account_id": {
            "type": "integer",
            "description": "Google Business social account ID from list_accounts."
          },
          "location_id": {
            "type": "string",
            "description": "Google Business numeric location id (the location_id/platform_user_id from list_accounts, e.g. \"197940849675145390\"). NOT the ChIJ... Place ID returned by get_google_business_review_link. Prefer account_id."
          },
          "media_name": {
            "type": "string",
            "minLength": 1,
            "description": "Full media resource name from list_google_business_media (accounts/.../locations/.../media/...)."
          },
          "confirm": {
            "type": "boolean",
            "description": "Must be true after explicit user confirmation."
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "Delete Google Business Media",
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "list_conversations",
      "description": "List social inbox DM conversations for Instagram and Facebook Page inboxes. Filter by account, platform, unread/starred/archived, or search. Requires a Pro plan or higher plus posts:read. Threads has no DMs.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "workspace_id": {
            "type": "string",
            "description": "Filter to a workspace ID from whoami."
          },
          "account_id": {
            "type": "integer",
            "description": "Social account ID from list_accounts."
          },
          "platform": {
            "type": "string",
            "enum": [
              "instagram",
              "facebook",
              "threads"
            ],
            "description": "instagram or facebook. Threads has no DMs."
          },
          "filter": {
            "type": "string",
            "enum": [
              "all",
              "unread",
              "starred",
              "archived"
            ],
            "description": "Conversation filter. Defaults to all (excludes archived)."
          },
          "search": {
            "type": "string",
            "description": "Search participant username or last message preview."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Number of conversations to return. Default 50, max 100."
          },
          "offset": {
            "type": "integer",
            "minimum": 0,
            "description": "Skip this many conversations before returning results."
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "List Conversations",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "get_conversation",
      "description": "Get one social inbox DM conversation and its messages. Instagram and Facebook Page DMs only. Requires a Pro plan or higher plus posts:read.",
      "inputSchema": {
        "type": "object",
        "required": [
          "conversation_id"
        ],
        "properties": {
          "conversation_id": {
            "type": "string",
            "minLength": 1,
            "description": "Conversation ID from list_conversations."
          },
          "workspace_id": {
            "type": "string",
            "description": "Filter to a workspace ID from whoami."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Maximum messages to return. Default 50, max 100."
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "Get Conversation",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "send_message",
      "description": "Send a DM reply in an Instagram or Facebook Page inbox conversation. WRITE: posts to the social network. Honor the 24-hour messaging window. Threads has no DMs. Requires a Pro plan or higher plus posts:write. Pass confirm=true only after explicit user confirmation.",
      "inputSchema": {
        "type": "object",
        "required": [
          "conversation_id",
          "content",
          "confirm"
        ],
        "properties": {
          "conversation_id": {
            "type": "string",
            "minLength": 1,
            "description": "Conversation ID from list_conversations."
          },
          "content": {
            "type": "string",
            "minLength": 1,
            "description": "Message text to send."
          },
          "workspace_id": {
            "type": "string",
            "description": "Workspace ID from whoami."
          },
          "confirm": {
            "type": "boolean",
            "description": "Must be true after explicit user confirmation."
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "Send Message",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "list_comments",
      "description": "List social inbox comments and replies for Instagram, Facebook Pages, and Threads. Filter by account, platform, unread/flagged, or search. Requires a Pro plan or higher plus posts:read.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "workspace_id": {
            "type": "string",
            "description": "Filter to a workspace ID from whoami."
          },
          "account_id": {
            "type": "integer",
            "description": "Social account ID from list_accounts."
          },
          "platform": {
            "type": "string",
            "enum": [
              "instagram",
              "facebook",
              "threads"
            ],
            "description": "instagram, facebook, or threads."
          },
          "filter": {
            "type": "string",
            "enum": [
              "all",
              "unread",
              "flagged"
            ],
            "description": "Comment filter. Defaults to all."
          },
          "search": {
            "type": "string",
            "description": "Search comment content or author username."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "Number of comments to return. Default 50, max 100."
          },
          "offset": {
            "type": "integer",
            "minimum": 0,
            "description": "Skip this many comments before returning results."
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "List Comments",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "get_comment",
      "description": "Get one social inbox comment and its replies. Instagram, Facebook Page, and Threads comments. Requires a Pro plan or higher plus posts:read.",
      "inputSchema": {
        "type": "object",
        "required": [
          "comment_id"
        ],
        "properties": {
          "comment_id": {
            "type": "string",
            "minLength": 1,
            "description": "Comment ID from list_comments."
          },
          "workspace_id": {
            "type": "string",
            "description": "Filter to a workspace ID from whoami."
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "Get Comment",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "reply_to_comment",
      "description": "Reply to an Instagram, Facebook Page, or Threads inbox comment. WRITE: posts to the social network. Facebook has no private comment replies. Threads has no DMs, so only public replies. Instagram supports public or private. Requires a Pro plan or higher plus posts:write. Pass confirm=true only after explicit user confirmation.",
      "inputSchema": {
        "type": "object",
        "required": [
          "comment_id",
          "content",
          "confirm"
        ],
        "properties": {
          "comment_id": {
            "type": "string",
            "minLength": 1,
            "description": "Comment ID from list_comments."
          },
          "content": {
            "type": "string",
            "minLength": 1,
            "description": "Reply text to post."
          },
          "type": {
            "type": "string",
            "enum": [
              "public",
              "private"
            ],
            "description": "public (default) or private. Private is Instagram only."
          },
          "workspace_id": {
            "type": "string",
            "description": "Workspace ID from whoami."
          },
          "confirm": {
            "type": "boolean",
            "description": "Must be true after explicit user confirmation."
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "Reply To Comment",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "update_comment",
      "description": "Update an inbox comment: hide/unhide it on the platform, or mark it read/unread. Hide is reversible and does not delete the comment. Requires a Pro plan or higher plus posts:write.",
      "inputSchema": {
        "type": "object",
        "required": [
          "comment_id"
        ],
        "properties": {
          "comment_id": {
            "type": "string",
            "minLength": 1,
            "description": "Comment ID from list_comments."
          },
          "is_hidden": {
            "type": "boolean",
            "description": "Hide or unhide the comment on Instagram, Facebook, or Threads."
          },
          "is_read": {
            "type": "boolean",
            "description": "Mark the comment read or unread in posterly."
          },
          "workspace_id": {
            "type": "string",
            "description": "Workspace ID from whoami."
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "Update Comment",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "delete_comment",
      "description": "Delete an Instagram or Facebook Page inbox comment. DESTRUCTIVE and IRREVERSIBLE. Threads replies cannot be deleted; hide them with update_comment instead. Requires a Pro plan or higher, posts:write, and admin workspace access. Fetch with get_comment first and pass confirm=true only after explicit user confirmation.",
      "inputSchema": {
        "type": "object",
        "required": [
          "comment_id",
          "confirm"
        ],
        "properties": {
          "comment_id": {
            "type": "string",
            "minLength": 1,
            "description": "Comment ID from list_comments or get_comment."
          },
          "workspace_id": {
            "type": "string",
            "description": "Workspace ID from whoami."
          },
          "confirm": {
            "type": "boolean",
            "description": "Must be true after the user explicitly confirms the comment deletion."
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "Delete Comment",
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "sync_inbox",
      "description": "Pull the latest Instagram, Facebook Page, or Threads inbox data for one connected account. Honors a 30-second cooldown. Threads syncs replies only (no DMs). Requires a Pro plan or higher plus posts:write.",
      "inputSchema": {
        "type": "object",
        "required": [
          "account_id"
        ],
        "properties": {
          "account_id": {
            "type": "integer",
            "description": "Social account ID from list_accounts."
          },
          "sync_type": {
            "type": "string",
            "enum": [
              "all",
              "dm",
              "comments"
            ],
            "description": "What to sync. Defaults to all. Threads is comments-only."
          },
          "workspace_id": {
            "type": "string",
            "description": "Workspace ID from whoami."
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "Sync Inbox",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "list_activity",
      "description": "List recent activity and publish events for posts, including status changes, publish attempts, failures, and retries. Use this as the agent notifications feed.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "workspace_id": {
            "type": "string"
          },
          "post_id": {
            "type": "integer"
          },
          "since": {
            "type": "string",
            "description": "ISO datetime. Return events created at or after this time."
          },
          "type": {
            "type": "string",
            "enum": [
              "all",
              "activity",
              "publish"
            ],
            "default": "all"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "default": 50
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "List Activity",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "list_webhooks",
      "description": "List API webhook subscriptions, their event filters, active state, and most recent delivery status.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "workspace_id": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "List Webhooks",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "create_webhook",
      "description": "Create a webhook subscription for post/account/analytics events. WRITE WITH OUTBOUND SIDE EFFECTS: show the user the target URL, workspace, events, and active state, then get explicit confirmation before calling. The response includes the signing secret once.",
      "inputSchema": {
        "type": "object",
        "required": [
          "url",
          "confirm"
        ],
        "properties": {
          "url": {
            "type": "string",
            "format": "uri"
          },
          "events": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "webhook.test",
                "post.created",
                "post.updated",
                "post.deleted",
                "post.publishing",
                "post.published",
                "post.failed",
                "account.disconnected",
                "analytics.synced"
              ]
            }
          },
          "workspace_id": {
            "type": "string"
          },
          "description": {
            "type": "string",
            "maxLength": 240
          },
          "is_active": {
            "type": "boolean",
            "default": true
          },
          "confirm": {
            "type": "boolean",
            "description": "Must be true after the user explicitly confirms webhook creation."
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "Create Webhook",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "update_webhook",
      "description": "Update a webhook URL, events, workspace, description, or active state. WRITE WITH OUTBOUND SIDE EFFECTS: list the current webhook first and get explicit confirmation before calling.",
      "inputSchema": {
        "type": "object",
        "required": [
          "webhook_id",
          "confirm"
        ],
        "properties": {
          "webhook_id": {
            "type": "string"
          },
          "url": {
            "type": "string",
            "format": "uri"
          },
          "events": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "webhook.test",
                "post.created",
                "post.updated",
                "post.deleted",
                "post.publishing",
                "post.published",
                "post.failed",
                "account.disconnected",
                "analytics.synced"
              ]
            }
          },
          "workspace_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "description": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 240
          },
          "is_active": {
            "type": "boolean"
          },
          "confirm": {
            "type": "boolean",
            "description": "Must be true after the user explicitly confirms the webhook update."
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "Update Webhook",
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "delete_webhook",
      "description": "Delete a webhook subscription. DESTRUCTIVE: list the webhook first, show the user its URL/events/workspace, and get explicit confirmation before calling.",
      "inputSchema": {
        "type": "object",
        "required": [
          "webhook_id",
          "confirm"
        ],
        "properties": {
          "webhook_id": {
            "type": "string"
          },
          "confirm": {
            "type": "boolean",
            "description": "Must be true after the user explicitly confirms webhook deletion."
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "Delete Webhook",
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "test_webhook",
      "description": "Send a signed webhook.test delivery to a webhook URL. OUTBOUND SIDE EFFECT: get explicit confirmation before sending a test request.",
      "inputSchema": {
        "type": "object",
        "required": [
          "webhook_id",
          "confirm"
        ],
        "properties": {
          "webhook_id": {
            "type": "string"
          },
          "confirm": {
            "type": "boolean",
            "description": "Must be true after the user explicitly confirms the test delivery."
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "Test Webhook",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "get_credits",
      "description": "Get the authenticated user's posterly AI credit balance: what is available to spend now, how much of the monthly included allowance is left, purchased pack balance, plan tier, and when the included pool next resets. Credits are a shared WORKSPACE wallet, so this reports the balance the caller can actually spend, not a personal figure. Read-only, spends nothing. Requires the billing:read scope.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "annotations": {
        "title": "Get Credits",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "get_subscription",
      "description": "Get the authenticated user's posterly subscription: status, tier, cancel-at-period-end, current period end, trial end, and pause state. Read-only. Requires the billing:read scope.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "annotations": {
        "title": "Get Subscription",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "cancel_subscription",
      "description": "Cancel the authenticated user's posterly subscription. DESTRUCTIVE billing action; requires the billing:write scope. ALWAYS ask the user why they are cancelling FIRST and pass their answer as `reason` (one of the allowed values). By default the subscription is set to cancel at the end of the current period; pass immediate=true only if the user explicitly wants it cancelled right now. Only call after the user explicitly confirms.",
      "inputSchema": {
        "type": "object",
        "required": [
          "confirm",
          "reason"
        ],
        "properties": {
          "reason": {
            "type": "string",
            "enum": [
              "too_expensive",
              "not_using",
              "missing_features",
              "technical_issues",
              "switching_service",
              "temporary_break",
              "other"
            ],
            "description": "Why the user is cancelling. Ask the user before calling; do not guess."
          },
          "feedback": {
            "type": "string",
            "maxLength": 2000,
            "description": "Optional free-text detail the user gave about why they are cancelling."
          },
          "immediate": {
            "type": "boolean",
            "description": "Cancel immediately instead of at period end. Defaults to false (cancel at period end)."
          },
          "confirm": {
            "type": "boolean",
            "const": true,
            "description": "Must be true after the user explicitly confirms the cancellation."
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "Cancel Subscription",
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "pause_subscription",
      "description": "Pause the authenticated user's posterly subscription for 30 days (one pause allowed per 90-day cooldown). Billing action; requires the billing:write scope. Only call after the user explicitly confirms.",
      "inputSchema": {
        "type": "object",
        "required": [
          "confirm"
        ],
        "properties": {
          "confirm": {
            "type": "boolean",
            "const": true,
            "description": "Must be true after the user explicitly confirms pausing the subscription."
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "Pause Subscription",
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "resume_subscription",
      "description": "Resume the authenticated user's paused posterly subscription, restoring active billing. Requires the billing:write scope.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "annotations": {
        "title": "Resume Subscription",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "downgrade_subscription",
      "description": "Downgrade the authenticated user's posterly subscription one tier (or to an explicit lower `tier`) at the next renewal with no proration. Billing action; requires the billing:write scope. Only call after the user explicitly confirms.",
      "inputSchema": {
        "type": "object",
        "required": [
          "confirm"
        ],
        "properties": {
          "tier": {
            "type": "string",
            "enum": [
              "starter",
              "pro",
              "power_user",
              "agency"
            ],
            "description": "Optional explicit target tier. Omit to drop one tier automatically."
          },
          "confirm": {
            "type": "boolean",
            "const": true,
            "description": "Must be true after the user explicitly confirms the downgrade."
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "Downgrade Subscription",
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "get_updates",
      "description": "Get the latest posterly product updates and news from the updates feed: new features, improvements, and fixes. Requires an active posterly subscription.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "default": 10,
            "description": "Number of updates to return. Default 10, max 50."
          },
          "since": {
            "type": "string",
            "description": "ISO date. Return updates published on or after this date."
          },
          "include_content": {
            "type": "boolean",
            "default": false,
            "description": "Include the full markdown body of each update. Defaults to false."
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "title": "Get Updates",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    }
  ],
  "resources": [],
  "prompts": [],
  "capabilities": {
    "tools": [
      {
        "name": "get_mcp_status",
        "description": "Report the hosted posterly MCP server version, latest npm version for local app clients, MCP endpoint health, API auth health, and update guidance.",
        "inputSchema": {
          "type": "object",
          "properties": {},
          "additionalProperties": false
        },
        "annotations": {
          "title": "Get MCP Status",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": true
        }
      },
      {
        "name": "whoami",
        "description": "Return the authenticated user, API key scopes, workspaces, and onboarding next step. Call this first. If onboarding.completed is false, walk About you, Connect, Brand voice, and First post IN THIS conversation. Do not send the user to /onboarding-v2.",
        "inputSchema": {
          "type": "object",
          "properties": {},
          "additionalProperties": false
        },
        "annotations": {
          "title": "Whoami",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false
        }
      },
      {
        "name": "create_api_key",
        "description": "Create a new posterly API key for the authenticated user. SECRET-CREATING WRITE: only use after explicit user confirmation. The new key can only request scopes already present on the calling dashboard-created API key; OAuth and managed assistant tokens cannot mint keys.",
        "inputSchema": {
          "type": "object",
          "required": [
            "confirm"
          ],
          "properties": {
            "name": {
              "type": "string",
              "minLength": 1,
              "maxLength": 120,
              "description": "Human-readable key name."
            },
            "scopes": {
              "type": "array",
              "minItems": 1,
              "maxItems": 8,
              "items": {
                "type": "string",
                "enum": [
                  "accounts:read",
                  "accounts:write",
                  "posts:read",
                  "posts:write",
                  "media:write",
                  "analytics:read",
                  "billing:read",
                  "billing:write"
                ]
              },
              "description": "Scopes for the new key. Omit to copy the calling key scopes. Cannot exceed the calling key scopes. billing:read and billing:write allow managing the posterly subscription (cancel/pause/resume/downgrade)."
            },
            "workspace_id": {
              "type": "string",
              "description": "Optional workspace restriction. Workspace-scoped calling keys cannot create keys outside their workspace."
            },
            "expires_in_days": {
              "type": "integer",
              "minimum": 1,
              "maximum": 365,
              "description": "Optional expiry from now, up to 365 days. Omit for no expiry."
            },
            "confirm": {
              "type": "boolean",
              "const": true,
              "description": "Must be true after the user explicitly confirms that a new secret API key should be created."
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "Create API Key",
          "readOnlyHint": false,
          "destructiveHint": false,
          "idempotentHint": false,
          "openWorldHint": false
        }
      },
      {
        "name": "delete_api_key",
        "description": "Revoke a posterly API key owned by the authenticated user. DESTRUCTIVE: show the user the exact key ID/prefix/name if available and get explicit confirmation before calling. Cannot revoke the key currently authenticating this request, OAuth-issued keys, or managed assistant keys.",
        "inputSchema": {
          "type": "object",
          "required": [
            "key_id",
            "confirm"
          ],
          "properties": {
            "key_id": {
              "type": "string",
              "format": "uuid",
              "description": "API key ID to revoke. This is the API key resource ID, not the secret pst_live_ value."
            },
            "confirm": {
              "type": "boolean",
              "const": true,
              "description": "Must be true after the user explicitly confirms API key revocation."
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "Delete API Key",
          "readOnlyHint": false,
          "destructiveHint": true,
          "idempotentHint": true,
          "openWorldHint": false
        }
      },
      {
        "name": "list_accounts",
        "description": "List connected social media accounts. Instagram rows also show whether the account is direct-login or Meta-linked and whether native media tags/collaborators are available. Check this before using Instagram user_tags or collaborators.",
        "inputSchema": {
          "type": "object",
          "properties": {
            "workspace_id": {
              "type": "string",
              "description": "Filter to a specific workspace; omit for all the caller can access."
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "List Accounts",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false
        }
      },
      {
        "name": "disconnect_account",
        "description": "Disconnect a connected social account from posterly. DESTRUCTIVE and IRREVERSIBLE: this removes the account connection, emits account.disconnected webhooks, and may transfer Instagram scheduled posts to a replacement account. Always call list_accounts first, show the user the exact account/platform/workspace, and get explicit confirmation before calling.",
        "inputSchema": {
          "type": "object",
          "required": [
            "account_id",
            "confirm"
          ],
          "properties": {
            "account_id": {
              "type": "string",
              "description": "Connected social account ID from list_accounts."
            },
            "confirm": {
              "type": "boolean",
              "description": "Must be true after the user explicitly confirms the account disconnect."
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "Disconnect Account",
          "readOnlyHint": false,
          "destructiveHint": true,
          "idempotentHint": true,
          "openWorldHint": true
        }
      },
      {
        "name": "get_connect_link",
        "description": "List dashboard handoff links/readiness for connecting accounts, or get one platform connection URL. For a guided user flow with pollable status, call create_connect_session next. Credential-based platforms (telegram, bluesky, discord, wordpress, devto, hashnode, lemmy) can instead be connected headlessly with connect_account; this tool shows their credential_fields.",
        "inputSchema": {
          "type": "object",
          "properties": {
            "platform": {
              "type": "string",
              "enum": [
                "instagram",
                "meta",
                "facebook",
                "youtube",
                "tiktok",
                "linkedin",
                "linkedin_page",
                "threads",
                "google_business",
                "pinterest",
                "twitter",
                "telegram",
                "bluesky",
                "discord",
                "slack",
                "mastodon",
                "devto",
                "hashnode",
                "wordpress",
                "lemmy",
                "reddit",
                "medium",
                "skool",
                "whop"
              ],
              "description": "Optional connection target such as instagram, meta, linkedin_page, twitter, telegram, reddit, or wordpress."
            },
            "workspace_id": {
              "type": "string",
              "description": "Filter connected account counts to a workspace."
            },
            "include_planned": {
              "type": "boolean",
              "description": "Include planned provider expansion targets such as reddit, medium, skool, whop."
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "Get Connect Link",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false
        }
      },
      {
        "name": "connect_account",
        "description": "Connect a credential-based social account (telegram, bluesky, discord, wordpress, devto, hashnode, lemmy) directly, without a browser session. Call get_connect_link first to discover the exact credential fields the platform needs. Prefer scoped secrets: app passwords (Bluesky, WordPress), bot tokens (Telegram), webhook URLs (Discord), and API tokens (Dev.to, Hashnode) over primary passwords. Warn the user that any credential they share passes through this conversation. For OAuth platforms (Instagram, X, LinkedIn, ...) use create_connect_session instead.",
        "inputSchema": {
          "type": "object",
          "required": [
            "platform"
          ],
          "properties": {
            "platform": {
              "type": "string",
              "enum": [
                "telegram",
                "bluesky",
                "discord",
                "wordpress",
                "devto",
                "hashnode",
                "lemmy"
              ],
              "description": "Credential-based connection target: telegram, bluesky, discord, wordpress, devto, hashnode, or lemmy."
            },
            "bot_token": {
              "type": "string",
              "description": "Telegram: bot token from BotFather."
            },
            "chat_id": {
              "type": "string",
              "description": "Telegram: target channel or group chat ID."
            },
            "handle": {
              "type": "string",
              "description": "Bluesky: handle, for example posterly.bsky.social."
            },
            "app_password": {
              "type": "string",
              "description": "Bluesky: app password from account settings. WordPress: application password from wp-admin Users, Profile, Application Passwords."
            },
            "webhook_url": {
              "type": "string",
              "description": "Discord: channel webhook URL from channel settings, Integrations, Webhooks."
            },
            "site_url": {
              "type": "string",
              "description": "WordPress: site URL, e.g. https://blog.example.com."
            },
            "username": {
              "type": "string",
              "description": "WordPress: username the application password belongs to. Lemmy: username or email."
            },
            "password": {
              "type": "string",
              "description": "Lemmy: account password (TOTP-enabled accounts are not supported)."
            },
            "api_key": {
              "type": "string",
              "description": "Dev.to: API key from Settings, Extensions, DEV Community API Keys."
            },
            "pat": {
              "type": "string",
              "description": "Hashnode: personal access token from Account Settings, Developer."
            },
            "instance": {
              "type": "string",
              "description": "Lemmy: instance domain, for example lemmy.world."
            },
            "workspace_id": {
              "type": "string",
              "description": "Workspace to connect the account into. Workspace-scoped API keys ignore this."
            },
            "connect_session_id": {
              "type": "string",
              "description": "Optional connect session ID to mark connected or failed based on the outcome."
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "Connect Account",
          "readOnlyHint": false,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": true
        }
      },
      {
        "name": "create_connect_session",
        "description": "Create a short-lived dashboard handoff session for connecting a social account. Open connect_session.connect_url for the user, then poll get_connect_session so you can narrate progress.",
        "inputSchema": {
          "type": "object",
          "required": [
            "platform"
          ],
          "properties": {
            "platform": {
              "type": "string",
              "enum": [
                "instagram",
                "meta",
                "facebook",
                "youtube",
                "tiktok",
                "linkedin",
                "linkedin_page",
                "threads",
                "google_business",
                "pinterest",
                "twitter",
                "telegram",
                "bluesky",
                "discord",
                "slack",
                "mastodon",
                "devto",
                "hashnode",
                "wordpress",
                "lemmy",
                "reddit",
                "medium",
                "skool",
                "whop"
              ],
              "description": "Connection target such as instagram, meta, linkedin_page, twitter, telegram, bluesky, discord, slack, mastodon, devto, hashnode, wordpress, or lemmy."
            },
            "workspace_id": {
              "type": "string",
              "description": "Workspace to connect the account into. Workspace-scoped API keys ignore this."
            },
            "auto_start": {
              "type": "boolean",
              "default": true,
              "description": "When true, the posterly dashboard starts the provider flow after the user opens the URL."
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "Create Connect Session",
          "readOnlyHint": false,
          "destructiveHint": false,
          "idempotentHint": false,
          "openWorldHint": true
        }
      },
      {
        "name": "get_connect_session",
        "description": "Poll a connect session created by create_connect_session. Read status_message to tell the user what is happening; stop when status is connected, failed, cancelled, or expired.",
        "inputSchema": {
          "type": "object",
          "required": [
            "session_id"
          ],
          "properties": {
            "session_id": {
              "type": "string",
              "description": "Connect session ID returned by create_connect_session."
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "Get Connect Session",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": true
        }
      },
      {
        "name": "list_oauth_clients",
        "description": "List self-serve OAuth developer clients owned by the user. These are public PKCE clients for third-party app integrations.",
        "inputSchema": {
          "type": "object",
          "properties": {},
          "additionalProperties": false
        },
        "annotations": {
          "title": "List OAuth Clients",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false
        }
      },
      {
        "name": "create_oauth_client",
        "description": "Create a public OAuth 2.1 + PKCE developer client. WRITE: confirm app name, redirect URIs, and scopes with the user before calling.",
        "inputSchema": {
          "type": "object",
          "required": [
            "client_name",
            "allowed_redirect_uris",
            "default_scopes",
            "confirm"
          ],
          "properties": {
            "client_name": {
              "type": "string",
              "minLength": 1,
              "maxLength": 120
            },
            "description": {
              "type": "string",
              "maxLength": 500
            },
            "homepage": {
              "type": "string",
              "format": "uri"
            },
            "allowed_redirect_uris": {
              "type": "array",
              "minItems": 1,
              "maxItems": 10,
              "items": {
                "type": "string",
                "format": "uri"
              }
            },
            "default_scopes": {
              "type": "array",
              "minItems": 1,
              "items": {
                "type": "string",
                "enum": [
                  "accounts:read",
                  "accounts:write",
                  "posts:read",
                  "posts:write",
                  "media:write",
                  "analytics:read"
                ]
              }
            },
            "is_active": {
              "type": "boolean",
              "default": true
            },
            "confirm": {
              "type": "boolean",
              "description": "Must be true after explicit user confirmation."
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "Create OAuth Client",
          "readOnlyHint": false,
          "destructiveHint": false,
          "idempotentHint": false,
          "openWorldHint": false
        }
      },
      {
        "name": "update_oauth_client",
        "description": "Update a self-serve OAuth developer client. WRITE: confirm changed redirect URIs, scopes, and active state before calling.",
        "inputSchema": {
          "type": "object",
          "required": [
            "client_id",
            "confirm"
          ],
          "properties": {
            "client_id": {
              "type": "string"
            },
            "client_name": {
              "type": "string",
              "minLength": 1,
              "maxLength": 120
            },
            "description": {
              "type": "string",
              "maxLength": 500
            },
            "homepage": {
              "type": "string",
              "format": "uri"
            },
            "allowed_redirect_uris": {
              "type": "array",
              "minItems": 1,
              "maxItems": 10,
              "items": {
                "type": "string",
                "format": "uri"
              }
            },
            "default_scopes": {
              "type": "array",
              "minItems": 1,
              "items": {
                "type": "string",
                "enum": [
                  "accounts:read",
                  "accounts:write",
                  "posts:read",
                  "posts:write",
                  "media:write",
                  "analytics:read"
                ]
              }
            },
            "is_active": {
              "type": "boolean"
            },
            "confirm": {
              "type": "boolean",
              "description": "Must be true after explicit user confirmation."
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "Update OAuth Client",
          "readOnlyHint": false,
          "destructiveHint": true,
          "idempotentHint": true,
          "openWorldHint": false
        }
      },
      {
        "name": "delete_oauth_client",
        "description": "Delete a self-serve OAuth developer client. DESTRUCTIVE: prevents new authorizations for that client_id; existing access tokens remain revocable as API keys.",
        "inputSchema": {
          "type": "object",
          "required": [
            "client_id",
            "confirm"
          ],
          "properties": {
            "client_id": {
              "type": "string"
            },
            "confirm": {
              "type": "boolean",
              "description": "Must be true after explicit user confirmation."
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "Delete OAuth Client",
          "readOnlyHint": false,
          "destructiveHint": true,
          "idempotentHint": true,
          "openWorldHint": false
        }
      },
      {
        "name": "list_platforms",
        "description": "List posterly platform integrations and their posting capabilities, content limits, media limits, settings schemas, helper tools, and analytics support.",
        "inputSchema": {
          "type": "object",
          "properties": {
            "include_planned": {
              "type": "boolean",
              "description": "Include planned integration possibilities such as reddit, medium, skool, whop."
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "List Platforms",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false
        }
      },
      {
        "name": "get_platform_schema",
        "description": "Get the platform schema for a platform or a specific connected account. Use account_id before Instagram native tags/collaborators so the account-specific connection mode and capabilities are returned.",
        "inputSchema": {
          "type": "object",
          "properties": {
            "account_id": {
              "type": "string",
              "description": "Connected social account ID from list_accounts. Preferred because it returns account context."
            },
            "platform": {
              "type": "string",
              "enum": [
                "instagram",
                "facebook",
                "tiktok",
                "twitter",
                "linkedin",
                "youtube",
                "pinterest",
                "threads",
                "google_business",
                "telegram",
                "bluesky",
                "discord",
                "slack",
                "mastodon",
                "devto",
                "hashnode",
                "wordpress",
                "lemmy",
                "reddit",
                "medium",
                "skool",
                "whop"
              ],
              "description": "Platform ID. Aliases x, gmb, and instagram-standalone are also accepted by the API."
            },
            "include_planned": {
              "type": "boolean"
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "Get Platform Schema",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false
        }
      },
      {
        "name": "trigger_platform_helper",
        "description": "Run a platform helper for account-specific discovery, such as pinterest.boards, tiktok.creator_info, linkedin.recent_mentions, or x.quota.",
        "inputSchema": {
          "type": "object",
          "required": [
            "helper"
          ],
          "properties": {
            "helper": {
              "type": "string",
              "enum": [
                "linkedin.recent_mentions",
                "pinterest.boards",
                "tiktok.creator_info",
                "x.quota"
              ]
            },
            "account_id": {
              "type": "string",
              "description": "Connected social account ID when the helper needs account context."
            },
            "platform": {
              "type": "string",
              "description": "Platform hint when no account_id is supplied."
            },
            "params": {
              "type": "object",
              "additionalProperties": true
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "Trigger Platform Helper",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": true
        }
      },
      {
        "name": "list_brands",
        "description": "List brands/clients the caller can access. Returns each brand ID, name, workspace ID, source, and how many social accounts are assigned to it.",
        "inputSchema": {
          "type": "object",
          "properties": {
            "workspace_id": {
              "type": "string",
              "description": "Filter to a specific workspace; omit to list brands across every accessible workspace."
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "List Brands",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false
        }
      },
      {
        "name": "get_brand",
        "description": "Get one brand/client by ID. Returns its workspace, source, linked legacy brand group if present, and the number of social accounts assigned to it.",
        "inputSchema": {
          "type": "object",
          "required": [
            "brand_id"
          ],
          "properties": {
            "brand_id": {
              "type": "string",
              "description": "The brand ID to look up (from list_brands)."
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "Get Brand",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false
        }
      },
      {
        "name": "list_brand_accounts",
        "description": "List the connected social accounts assigned to a brand/client. Use this when the user refers to a brand rather than a raw account handle.",
        "inputSchema": {
          "type": "object",
          "required": [
            "brand_id"
          ],
          "properties": {
            "brand_id": {
              "type": "string",
              "description": "The brand ID to inspect (from list_brands)."
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "List Brand Accounts",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false
        }
      },
      {
        "name": "get_brand_profile",
        "description": "Get the extended brand profile for a brand/client. Returns voice/tone guidance, audience, keywords, dos and don’ts, visual notes, and other saved brand context.",
        "inputSchema": {
          "type": "object",
          "required": [
            "brand_id"
          ],
          "properties": {
            "brand_id": {
              "type": "string",
              "description": "The brand ID to inspect (from list_brands)."
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "Get Brand Profile",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false
        }
      },
      {
        "name": "get_learned_voice",
        "description": "Get the voice posterly has learned from a connected account’s real published captions (the \"learned captions\" shown on the dashboard). Returns a narrative summary, voice traits, style guidelines, and observed posting habits. Keyed by social account ID (from list_accounts or list_brand_accounts). Returns nothing until the account has enough published posts. Read-only; never overwrites the saved brand profile.",
        "inputSchema": {
          "type": "object",
          "required": [
            "account_id"
          ],
          "properties": {
            "account_id": {
              "type": "string",
              "description": "The social account ID to inspect (from list_accounts or list_brand_accounts)."
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "Get Learned Voice",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false
        }
      },
      {
        "name": "get_performance_profile",
        "description": "Get the performance profile posterly has derived for a connected account from the last 90 days of per-post analytics. Returns coaching stats (format, timing, caption-length patterns), an engagement-rate trend, and a narrative summary. Keyed by social account ID (from list_accounts). Returns performance_profile: null with a reason (insufficient_data, platform_not_measurable) when there is no profile yet. Read-only; requires a Pro plan or higher.",
        "inputSchema": {
          "type": "object",
          "required": [
            "account_id"
          ],
          "properties": {
            "account_id": {
              "type": "string",
              "description": "The social account ID to inspect (from list_accounts or list_brand_accounts)."
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "Get Performance Profile",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false
        }
      },
      {
        "name": "get_post_insights",
        "description": "List per-post feedback insights from the posterly performance feedback loop: for recently published posts, the performance tier (great/good/mixed/poor), a diagnosis, a suggested next action, metrics, and the baseline it was compared against. Filter by account_id, post_id, and checkpoint (1h, 6h, 24h, 72h, 7d). Read-only; requires a Pro plan or higher.",
        "inputSchema": {
          "type": "object",
          "properties": {
            "account_id": {
              "type": "string",
              "description": "Filter to one social account ID (from list_accounts)."
            },
            "post_id": {
              "type": "integer",
              "minimum": 1,
              "description": "Filter to one post ID."
            },
            "checkpoint": {
              "type": "string",
              "enum": [
                "1h",
                "6h",
                "24h",
                "72h",
                "7d"
              ],
              "description": "Filter to one checkpoint after publish."
            },
            "limit": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 20
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "Get Post Insights",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false
        }
      },
      {
        "name": "list_post_suggestions",
        "description": "List proactive post suggestions: evidence-based weekly drafts posterly writes in each account's learned voice, each with a rationale tying it back to what has performed well. Filter by account_id and status (pending, scheduled, dismissed; default pending). Read-only; requires a Pro plan or higher. Use dismiss_suggestion to hide one.",
        "inputSchema": {
          "type": "object",
          "properties": {
            "account_id": {
              "type": "string",
              "description": "Filter to one social account ID (from list_accounts)."
            },
            "status": {
              "type": "string",
              "enum": [
                "pending",
                "scheduled",
                "dismissed"
              ],
              "default": "pending"
            },
            "limit": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 20
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "List Post Suggestions",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false
        }
      },
      {
        "name": "dismiss_suggestion",
        "description": "Dismiss a proactive post suggestion so it stops appearing. WRITE: confirm the exact suggestion with the user first. Never dismisses a suggestion that was already turned into a scheduled post.",
        "inputSchema": {
          "type": "object",
          "required": [
            "suggestion_id"
          ],
          "properties": {
            "suggestion_id": {
              "type": "string",
              "format": "uuid",
              "description": "Suggestion ID from list_post_suggestions."
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "Dismiss Suggestion",
          "readOnlyHint": false,
          "destructiveHint": true,
          "idempotentHint": true,
          "openWorldHint": false
        }
      },
      {
        "name": "list_posts",
        "description": "List upcoming or recent posts. Filter by status (scheduled, published, failed, draft), platform, account_id, or workspace_id.",
        "inputSchema": {
          "type": "object",
          "properties": {
            "status": {
              "type": "string",
              "enum": [
                "scheduled",
                "published",
                "failed",
                "draft"
              ]
            },
            "platform": {
              "type": "string"
            },
            "account_id": {
              "type": "string"
            },
            "workspace_id": {
              "type": "string"
            },
            "limit": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 20
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "List Posts",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false
        }
      },
      {
        "name": "get_post",
        "description": "Get details of a specific post by ID. Returns caption, status, scheduled time, media, and platform info.",
        "inputSchema": {
          "type": "object",
          "required": [
            "post_id"
          ],
          "properties": {
            "post_id": {
              "type": "integer",
              "description": "The post ID to look up"
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "Get Post",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false
        }
      },
      {
        "name": "get_post_missing",
        "description": "Inspect whether a post is missing required content, media, account, platform settings, or metadata before it can publish. Use this to repair failed or imported posts.",
        "inputSchema": {
          "type": "object",
          "required": [
            "post_id"
          ],
          "properties": {
            "post_id": {
              "type": "integer",
              "description": "The post ID to inspect."
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "Get Post Missing",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false
        }
      },
      {
        "name": "ask_support",
        "description": "Ask posterly Support AI an authenticated question using posterly docs plus read-only account/post diagnostics for the caller workspace. Requires API auth and accounts:read + posts:read scopes. Human tickets are never opened on the first answer; ticket creation requires a follow-up in a continued conversation with an assistant answer plus request_human=true and confirm_escalation=true after explicit user confirmation.",
        "inputSchema": {
          "type": "object",
          "required": [
            "question"
          ],
          "properties": {
            "question": {
              "type": "string",
              "minLength": 1,
              "maxLength": 4000
            },
            "workspace_id": {
              "type": "string",
              "description": "Workspace to inspect. Omit to use the API-key scoped workspace or personal workspace."
            },
            "conversation_id": {
              "type": "string",
              "description": "Continue a previous support conversation."
            },
            "page_url": {
              "type": "string",
              "maxLength": 2000,
              "description": "Optional posterly page URL for context."
            },
            "post_id": {
              "type": "integer",
              "minimum": 1,
              "description": "Optional post ID to inspect directly."
            },
            "referenced_post_ids": {
              "type": "array",
              "maxItems": 5,
              "items": {
                "type": "integer",
                "minimum": 1
              },
              "description": "Optional post IDs to include in read-only diagnostics."
            },
            "request_human": {
              "type": "boolean",
              "default": false,
              "description": "Ask for human review. Does not create a ticket unless this is a follow-up in a conversation that already has an assistant answer and confirm_escalation is also true."
            },
            "confirm_escalation": {
              "type": "boolean",
              "default": false,
              "description": "Must be true after explicit user confirmation that the previous assistant answer did not solve the issue."
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "Ask Support",
          "readOnlyHint": false,
          "destructiveHint": false,
          "idempotentHint": false,
          "openWorldHint": true
        }
      },
      {
        "name": "find_available_slot",
        "description": "Find available time slots for posting. Respects a 1-hour gap between posts and preferred hours. Always pass timezone explicitly (default is America/New_York).",
        "inputSchema": {
          "type": "object",
          "properties": {
            "account_ids": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "timezone": {
              "type": "string",
              "description": "IANA timezone, e.g. Europe/London"
            },
            "workspace_id": {
              "type": "string"
            },
            "count": {
              "type": "integer",
              "minimum": 1,
              "maximum": 10,
              "default": 5
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "Find Available Slot",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false
        }
      },
      {
        "name": "submit_agent_feedback",
        "description": "Submit bounded private operational telemetry after a concrete posterly workflow outcome. This is non-destructive to product content but writes a private feedback event. Never include API keys, prompts, captions, media URLs, personal data, or fabricated outcomes. Requires an authenticated bearer API key and paid API add-on.",
        "inputSchema": {
          "type": "object",
          "required": [
            "source",
            "tool",
            "outcome"
          ],
          "properties": {
            "source": {
              "type": "string",
              "enum": [
                "mcp",
                "cli",
                "rest",
                "skill"
              ]
            },
            "tool": {
              "type": "string",
              "minLength": 1,
              "maxLength": 64,
              "pattern": "^[a-z0-9][a-z0-9_.:-]{0,63}$"
            },
            "outcome": {
              "type": "string",
              "enum": [
                "success",
                "error",
                "abandoned"
              ]
            },
            "error_code": {
              "type": "string",
              "maxLength": 64,
              "pattern": "^[a-z0-9][a-z0-9_.:-]{0,63}$"
            },
            "client": {
              "type": "string",
              "minLength": 1,
              "maxLength": 80
            },
            "comment": {
              "type": "string",
              "minLength": 1,
              "maxLength": 1000
            },
            "context": {
              "type": "object",
              "properties": {
                "request_id": {
                  "type": "string",
                  "minLength": 8,
                  "maxLength": 80,
                  "pattern": "^[a-zA-Z0-9_.:-]{8,80}$"
                },
                "http_status": {
                  "type": "integer",
                  "minimum": 100,
                  "maximum": 599
                },
                "latency_ms": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 300000
                },
                "attempt": {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 20
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "Submit Agent Feedback",
          "readOnlyHint": false,
          "destructiveHint": false,
          "idempotentHint": false,
          "openWorldHint": false
        }
      },
      {
        "name": "submit_product_feedback",
        "description": "File a product bug, idea, or general feedback on the public posterly feedback board (same board users see in the dashboard). Only call this when the human explicitly asks to report a bug, suggest a feature, or send feedback to posterly. Require confirm=true after they approve the title and category. Never use this for tool failures or retries - use submit_agent_feedback for private operational telemetry. Never include API keys, secrets, captions, media URLs, or personal data about third parties. Requires an authenticated bearer API key and paid API add-on.",
        "inputSchema": {
          "type": "object",
          "required": [
            "category",
            "title",
            "confirm"
          ],
          "properties": {
            "category": {
              "type": "string",
              "enum": [
                "bug",
                "idea",
                "feedback"
              ]
            },
            "title": {
              "type": "string",
              "minLength": 3,
              "maxLength": 120
            },
            "description": {
              "type": "string",
              "minLength": 1,
              "maxLength": 4000
            },
            "client": {
              "type": "string",
              "minLength": 1,
              "maxLength": 80
            },
            "confirm": {
              "type": "boolean",
              "const": true
            },
            "source": {
              "type": "string",
              "enum": [
                "mcp",
                "cli",
                "rest",
                "skill"
              ]
            },
            "context": {
              "type": "object",
              "properties": {
                "request_id": {
                  "type": "string",
                  "minLength": 8,
                  "maxLength": 80,
                  "pattern": "^[a-zA-Z0-9_.:-]{8,80}$"
                },
                "related_tool": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 64,
                  "pattern": "^[a-z0-9][a-z0-9_.:-]{0,63}$"
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "Submit Product Feedback",
          "readOnlyHint": false,
          "destructiveHint": false,
          "idempotentHint": false,
          "openWorldHint": false
        }
      },
      {
        "name": "validate_post",
        "description": "Validate and normalize one post without creating it. This is non-destructive: it does not create records, copy remote media, consume post-item/storage quota, reserve X quota, emit webhooks, or enqueue publication. Third-party media may return remote_media_not_materialized because live create performs storage copy and final byte validation. Use this before showing the final preview and asking for confirmation to call create_post.",
        "inputSchema": {
          "type": "object",
          "properties": {
            "account_id": {
              "type": "string",
              "description": "Social account ID from list_accounts."
            },
            "username": {
              "type": "string",
              "description": "Account username; requires platform."
            },
            "platform": {
              "type": "string",
              "enum": [
                "instagram",
                "facebook",
                "tiktok",
                "twitter",
                "linkedin",
                "youtube",
                "pinterest",
                "threads",
                "google_business",
                "telegram",
                "bluesky",
                "discord",
                "slack",
                "mastodon",
                "devto",
                "hashnode",
                "wordpress",
                "lemmy"
              ],
              "description": "Platform name when using username. Supported: instagram, facebook, tiktok, twitter, linkedin, youtube, pinterest, threads, google_business, telegram, bluesky, discord, slack, mastodon, devto, hashnode, wordpress, lemmy. Aliases x, gmb, and instagram-standalone are also accepted by the API."
            },
            "caption": {
              "type": "string",
              "description": "Post caption/text. On Instagram, @username creates a caption mention only; it is not a native media tag or collaborator invitation. Ignored when thread_posts is provided."
            },
            "scheduled_at": {
              "type": "string",
              "description": "ISO 8601 UTC datetime. Omit to publish immediately."
            },
            "media_url": {
              "type": "string",
              "format": "uri",
              "description": "Media URL. Posterly storage URLs are used as-is; third-party HTTP(S) URLs are copied into Posterly storage before the post is saved. Short-lived signed URLs must still be live when this tool runs."
            },
            "media_urls": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "uri"
              },
              "description": "Media URLs. Posterly storage URLs are used as-is; third-party HTTP(S) URLs are copied into Posterly storage before the post is saved."
            },
            "post_type": {
              "type": "string",
              "enum": [
                "text",
                "image",
                "document",
                "video",
                "reel",
                "carousel",
                "story",
                "story_series",
                "x_thread",
                "threads_thread",
                "photo",
                "cover_photo",
                "post",
                "feed",
                "feed-post",
                "cover-photo",
                "photos",
                "stories",
                "reels"
              ],
              "description": "Optional post type. Omit for auto-detection from media. Supported semantic values include text, image, video, carousel, reel, story, story_series, document, x_thread, threads_thread, photo, and cover_photo."
            },
            "thread_posts": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "description": "For X or Threads: 2+ entries, one per post in the reply chain."
            },
            "platform_settings": {
              "type": "object",
              "description": "Platform-specific composer controls. Call list_platforms or get_platform_schema for the selected account before sending settings.",
              "oneOf": [
                {
                  "title": "Instagram settings",
                  "type": "object",
                  "properties": {
                    "__type": {
                      "description": "Instagram account type hint.",
                      "enum": [
                        "instagram",
                        "instagram-standalone"
                      ],
                      "type": "string"
                    },
                    "post_type": {
                      "description": "Instagram publishing format.",
                      "enum": [
                        "post",
                        "feed",
                        "story",
                        "reel",
                        "carousel"
                      ],
                      "type": "string"
                    },
                    "is_trial_reel": {
                      "description": "Request an Instagram Trial Reel when the account supports it.",
                      "type": "boolean"
                    },
                    "trial_reel": {
                      "description": "Request an Instagram Trial Reel when the account supports it. Alias for is_trial_reel.",
                      "type": "boolean"
                    },
                    "graduation_strategy": {
                      "description": "Trial Reel graduation strategy.",
                      "enum": [
                        "MANUAL",
                        "SS_PERFORMANCE"
                      ],
                      "type": "string"
                    },
                    "collaborators": {
                      "description": "Native co-author invitations. Meta-linked Instagram accounts only; feed images, Reels, and carousels; maximum 3; not Stories.",
                      "type": "array",
                      "items": {}
                    },
                    "user_tags": {
                      "description": "Native clickable media tags, not caption @mentions. Supported by eligible direct Instagram and Meta-linked connections; feed images, Reels/video, and Stories. Tags apply to each carousel child and the first Story in a Story Series.",
                      "type": "array",
                      "items": {}
                    },
                    "first_comment": {
                      "description": "First comment to publish after the post.",
                      "type": "string"
                    },
                    "reel_cover_url": {
                      "description": "Custom Reel cover image URL.",
                      "type": "string"
                    },
                    "cover_url": {
                      "description": "Custom Reel cover image URL. Alias for reel_cover_url.",
                      "type": "string"
                    },
                    "reel_thumb_offset": {
                      "description": "Video timestamp, in milliseconds, for a generated Reel thumbnail.",
                      "type": "number"
                    },
                    "thumb_offset": {
                      "description": "Video timestamp, in milliseconds, for a generated Reel thumbnail. Alias for reel_thumb_offset.",
                      "type": "number"
                    },
                    "is_ai_generated": {
                      "description": "Label the parent media container as AI-generated (is_ai_generated). For carousels, set this on the parent only, never on child slides.",
                      "type": "boolean"
                    },
                    "instagram_is_ai_generated": {
                      "description": "Label the parent media container as AI-generated (is_ai_generated). For carousels, set this on the parent only, never on child slides. Alias for is_ai_generated.",
                      "type": "boolean"
                    },
                    "ai_generated": {
                      "description": "Label the parent media container as AI-generated (is_ai_generated). For carousels, set this on the parent only, never on child slides. Alias for is_ai_generated.",
                      "type": "boolean"
                    },
                    "audio_id": {
                      "description": "Licensed Instagram audio ID for Reels (audio_configuration.audio_id). Meta-linked Facebook Login accounts only; hidden for Instagram Login.",
                      "type": "string"
                    },
                    "instagram_audio_id": {
                      "description": "Licensed Instagram audio ID for Reels (audio_configuration.audio_id). Meta-linked Facebook Login accounts only; hidden for Instagram Login. Alias for audio_id.",
                      "type": "string"
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "__type": "instagram",
                    "post_type": "reel",
                    "first_comment": "Full details in the caption.",
                    "is_ai_generated": true
                  }
                },
                {
                  "title": "Facebook settings",
                  "type": "object",
                  "properties": {
                    "post_type": {
                      "description": "Facebook publishing format. Reel uses the Graph Reels API and must be 90 seconds or shorter; use video for longer clips. A 90.0 second Reel is allowed.",
                      "enum": [
                        "post",
                        "feed",
                        "story",
                        "reel",
                        "cover_photo"
                      ],
                      "type": "string"
                    },
                    "text_format_preset_id": {
                      "description": "Styled text post background preset.",
                      "type": "string"
                    },
                    "background_preset_id": {
                      "description": "Styled text post background preset. Alias for text_format_preset_id.",
                      "type": "string"
                    },
                    "reel_cover_url": {
                      "description": "Custom Reel cover image URL.",
                      "type": "string"
                    },
                    "cover_url": {
                      "description": "Custom Reel cover image URL. Alias for reel_cover_url.",
                      "type": "string"
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "post_type": "reel",
                    "reel_cover_url": "https://example.com/cover.jpg"
                  }
                },
                {
                  "title": "TikTok settings",
                  "type": "object",
                  "properties": {
                    "privacy_level": {
                      "description": "TikTok direct-post privacy level from the creator info helper.",
                      "type": "string"
                    },
                    "allow_comment": {
                      "description": "Allow comments when direct posting.",
                      "type": "boolean"
                    },
                    "allow_duet": {
                      "description": "Allow duets when direct posting.",
                      "type": "boolean"
                    },
                    "allow_stitch": {
                      "description": "Allow stitches when direct posting.",
                      "type": "boolean"
                    },
                    "title": {
                      "description": "TikTok title/caption field.",
                      "type": "string"
                    },
                    "media_type": {
                      "description": "Set to PHOTO for TikTok photo posts or multi-photo slideshows.",
                      "enum": [
                        "PHOTO"
                      ],
                      "type": "string"
                    },
                    "photo_cover_index": {
                      "description": "Zero-based cover image index for TikTok photo posts.",
                      "type": "number"
                    },
                    "video_cover_timestamp_ms": {
                      "description": "Millisecond timestamp of the video frame to use as the cover (direct post only).",
                      "type": "number"
                    },
                    "cover_timestamp_ms": {
                      "description": "Millisecond timestamp of the video frame to use as the cover (direct post only). Alias for video_cover_timestamp_ms.",
                      "type": "number"
                    },
                    "auto_add_music": {
                      "description": "Ask TikTok to add recommended music to photo posts when direct posting.",
                      "type": "boolean"
                    },
                    "is_commercial_content": {
                      "description": "TikTok commercial content disclosure.",
                      "type": "boolean"
                    },
                    "is_your_brand": {
                      "description": "TikTok branded content: your own brand.",
                      "type": "boolean"
                    },
                    "is_branded_content": {
                      "description": "TikTok branded content: third-party brand.",
                      "type": "boolean"
                    },
                    "ai_generated": {
                      "description": "Label the post as AI-generated (TikTok is_aigc).",
                      "type": "boolean"
                    },
                    "ai_disclosure": {
                      "description": "Label the post as AI-generated (TikTok is_aigc). Alias for ai_generated.",
                      "type": "boolean"
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "privacy_level": "PUBLIC_TO_EVERYONE",
                    "media_type": "PHOTO",
                    "photo_cover_index": 0,
                    "auto_add_music": true,
                    "allow_comment": true,
                    "allow_duet": false,
                    "allow_stitch": false,
                    "video_cover_timestamp_ms": 1500
                  }
                },
                {
                  "title": "X settings",
                  "type": "object",
                  "properties": {
                    "reply_settings": {
                      "description": "Who can reply to the post.",
                      "enum": [
                        "everyone",
                        "following",
                        "mentionedUsers",
                        "subscribers",
                        "verified"
                      ],
                      "type": "string"
                    },
                    "x_reply_settings": {
                      "description": "Who can reply to the post. Alias for reply_settings.",
                      "enum": [
                        "everyone",
                        "following",
                        "mentionedUsers",
                        "subscribers",
                        "verified"
                      ],
                      "type": "string"
                    },
                    "poll": {
                      "description": "X poll settings: options and duration_minutes.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "x_poll": {
                      "description": "X poll settings: options and duration_minutes. Alias for poll.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "ai_generated": {
                      "description": "Label the post as AI-generated (X made_with_ai).",
                      "type": "boolean"
                    },
                    "ai_disclosure": {
                      "description": "Label the post as AI-generated (X made_with_ai). Alias for ai_generated.",
                      "type": "boolean"
                    },
                    "made_with_ai": {
                      "description": "Label the post as AI-generated (X made_with_ai). Alias for ai_generated.",
                      "type": "boolean"
                    },
                    "paid_partnership": {
                      "description": "Mark the post as a paid partnership (POST /2/tweets paid_partnership). Existing tweet.write.",
                      "type": "boolean"
                    },
                    "x_paid_partnership": {
                      "description": "Mark the post as a paid partnership (POST /2/tweets paid_partnership). Existing tweet.write. Alias for paid_partnership.",
                      "type": "boolean"
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "reply_settings": "following",
                    "poll": {
                      "options": [
                        "Yes",
                        "No"
                      ],
                      "duration_minutes": 1440
                    },
                    "paid_partnership": true
                  }
                },
                {
                  "title": "LinkedIn settings",
                  "type": "object",
                  "properties": {
                    "document_title": {
                      "description": "Title for a LinkedIn PDF/document post.",
                      "type": "string"
                    },
                    "linkedin_document_title": {
                      "description": "Title for a LinkedIn PDF/document post. Alias for document_title.",
                      "type": "string"
                    },
                    "document_filename": {
                      "description": "Filename for a LinkedIn document post.",
                      "type": "string"
                    },
                    "mentions": {
                      "description": "LinkedIn organization mention objects.",
                      "type": "array",
                      "items": {}
                    },
                    "linkedin_mentions": {
                      "description": "LinkedIn organization mention objects. Alias for mentions.",
                      "type": "array",
                      "items": {}
                    },
                    "poll": {
                      "description": "LinkedIn poll: { question, options (2-4), duration (ONE_DAY|THREE_DAYS|SEVEN_DAYS|FOURTEEN_DAYS) }. Mutually exclusive with media.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "linkedin_poll": {
                      "description": "LinkedIn poll: { question, options (2-4), duration (ONE_DAY|THREE_DAYS|SEVEN_DAYS|FOURTEEN_DAYS) }. Mutually exclusive with media. Alias for poll.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "thumbnail_url": {
                      "description": "Custom video thumbnail URL.",
                      "type": "string"
                    },
                    "content_call_to_action_label": {
                      "description": "LinkedIn contentCallToActionLabel, including BUY_NOW and SHOP_NOW (version 202504). Pair with content_landing_page.",
                      "enum": [
                        "APPLY",
                        "DOWNLOAD",
                        "VIEW_QUOTE",
                        "LEARN_MORE",
                        "SIGN_UP",
                        "SUBSCRIBE",
                        "REGISTER",
                        "JOIN",
                        "ATTEND",
                        "REQUEST_DEMO",
                        "SEE_MORE",
                        "BUY_NOW",
                        "SHOP_NOW"
                      ],
                      "type": "string"
                    },
                    "cta_label": {
                      "description": "LinkedIn contentCallToActionLabel, including BUY_NOW and SHOP_NOW (version 202504). Pair with content_landing_page. Alias for content_call_to_action_label.",
                      "enum": [
                        "APPLY",
                        "DOWNLOAD",
                        "VIEW_QUOTE",
                        "LEARN_MORE",
                        "SIGN_UP",
                        "SUBSCRIBE",
                        "REGISTER",
                        "JOIN",
                        "ATTEND",
                        "REQUEST_DEMO",
                        "SEE_MORE",
                        "BUY_NOW",
                        "SHOP_NOW"
                      ],
                      "type": "string"
                    },
                    "linkedin_cta_label": {
                      "description": "LinkedIn contentCallToActionLabel, including BUY_NOW and SHOP_NOW (version 202504). Pair with content_landing_page. Alias for content_call_to_action_label.",
                      "enum": [
                        "APPLY",
                        "DOWNLOAD",
                        "VIEW_QUOTE",
                        "LEARN_MORE",
                        "SIGN_UP",
                        "SUBSCRIBE",
                        "REGISTER",
                        "JOIN",
                        "ATTEND",
                        "REQUEST_DEMO",
                        "SEE_MORE",
                        "BUY_NOW",
                        "SHOP_NOW"
                      ],
                      "type": "string"
                    },
                    "content_landing_page": {
                      "description": "Landing page URL sent as contentLandingPage with the LinkedIn call to action.",
                      "type": "string"
                    },
                    "cta_url": {
                      "description": "Landing page URL sent as contentLandingPage with the LinkedIn call to action. Alias for content_landing_page.",
                      "type": "string"
                    },
                    "linkedin_cta_url": {
                      "description": "Landing page URL sent as contentLandingPage with the LinkedIn call to action. Alias for content_landing_page.",
                      "type": "string"
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "document_title": "Launch plan",
                    "mentions": [
                      {
                        "display_name": "posterly",
                        "urn": "urn:li:organization:123"
                      }
                    ],
                    "poll": {
                      "question": "Which feature next?",
                      "options": [
                        "Polls",
                        "Analytics"
                      ],
                      "duration": "THREE_DAYS"
                    },
                    "content_call_to_action_label": "BUY_NOW",
                    "content_landing_page": "https://www.poster.ly"
                  }
                },
                {
                  "title": "YouTube settings",
                  "type": "object",
                  "properties": {
                    "title": {
                      "description": "YouTube video title.",
                      "type": "string"
                    },
                    "youtube_title": {
                      "description": "YouTube video title. Alias for title.",
                      "type": "string"
                    },
                    "thumbnail_url": {
                      "description": "Custom YouTube thumbnail URL.",
                      "type": "string"
                    },
                    "privacy_status": {
                      "description": "YouTube video visibility.",
                      "enum": [
                        "public",
                        "unlisted",
                        "private"
                      ],
                      "type": "string"
                    },
                    "privacy": {
                      "description": "YouTube video visibility. Alias for privacy_status.",
                      "enum": [
                        "public",
                        "unlisted",
                        "private"
                      ],
                      "type": "string"
                    },
                    "made_for_kids": {
                      "description": "YouTube made-for-kids declaration.",
                      "type": "boolean"
                    },
                    "tags": {
                      "description": "YouTube tags.",
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "category_id": {
                      "description": "YouTube category ID.",
                      "type": "string"
                    },
                    "notify_subscribers": {
                      "description": "Notify subscribers when the video publishes (default true).",
                      "type": "boolean"
                    },
                    "add_shorts_hashtag": {
                      "description": "Append #Shorts to the description for Shorts-feed eligibility (vertical clips).",
                      "type": "boolean"
                    },
                    "ai_generated": {
                      "description": "Label the video as containing AI/synthetic media (containsSyntheticMedia).",
                      "type": "boolean"
                    },
                    "ai_disclosure": {
                      "description": "Label the video as containing AI/synthetic media (containsSyntheticMedia). Alias for ai_generated.",
                      "type": "boolean"
                    },
                    "brand_partner": {
                      "description": "Optional YouTube brandPartner channel ID (UC…) or handle (@…). Added to videos.insert part=brandPartner when set.",
                      "type": "string"
                    },
                    "brandPartner": {
                      "description": "Optional YouTube brandPartner channel ID (UC…) or handle (@…). Added to videos.insert part=brandPartner when set. Alias for brand_partner.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "title"
                  ],
                  "additionalProperties": true,
                  "example": {
                    "title": "Launch walkthrough",
                    "privacy_status": "unlisted",
                    "notify_subscribers": false,
                    "add_shorts_hashtag": true,
                    "brand_partner": "@brand"
                  }
                },
                {
                  "title": "Pinterest settings",
                  "type": "object",
                  "properties": {
                    "board_id": {
                      "description": "Pinterest board ID from the pinterest.boards helper.",
                      "type": "string"
                    },
                    "pinterest_board_id": {
                      "description": "Pinterest board ID from the pinterest.boards helper. Alias for board_id.",
                      "type": "string"
                    },
                    "title": {
                      "description": "Pinterest Pin title.",
                      "type": "string"
                    },
                    "link": {
                      "description": "Destination URL for the Pin.",
                      "type": "string"
                    },
                    "destination_url": {
                      "description": "Destination URL for the Pin. Alias for link.",
                      "type": "string"
                    },
                    "cover_image_url": {
                      "description": "Required for video Pins: a stored, probe-verified JPEG or PNG cover URL (20 MiB maximum).",
                      "type": "string"
                    },
                    "video_cover_url": {
                      "description": "Required for video Pins: a stored, probe-verified JPEG or PNG cover URL (20 MiB maximum). Alias for cover_image_url.",
                      "type": "string"
                    },
                    "pinterest_cover_image_url": {
                      "description": "Required for video Pins: a stored, probe-verified JPEG or PNG cover URL (20 MiB maximum). Alias for cover_image_url.",
                      "type": "string"
                    },
                    "ai_generated": {
                      "description": "Label the Pin as AI-modified (ai_disclosures).",
                      "type": "boolean"
                    },
                    "ai_disclosure": {
                      "description": "Label the Pin as AI-modified (ai_disclosures). Alias for ai_generated.",
                      "type": "boolean"
                    },
                    "product_tags": {
                      "description": "Optional product tags on POST /v5/pins (product_id, optional x/y). Existing pins:write. Pin note is not written.",
                      "type": "array",
                      "items": {}
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "required": [
                    "board_id"
                  ],
                  "additionalProperties": true,
                  "example": {
                    "board_id": "123456789",
                    "title": "Launch ideas",
                    "link": "https://www.poster.ly",
                    "cover_image_url": "https://assets.poster.ly/users/123/pinterest-video-covers/cover.jpg",
                    "product_tags": [
                      {
                        "product_id": "123"
                      }
                    ]
                  }
                },
                {
                  "title": "Threads settings",
                  "type": "object",
                  "properties": {
                    "reply_control": {
                      "description": "Threads reply control setting.",
                      "enum": [
                        "everyone",
                        "accounts_you_follow",
                        "mentioned_only",
                        "followers_only",
                        "parent_post_author_only"
                      ],
                      "type": "string"
                    },
                    "threads_reply_control": {
                      "description": "Threads reply control setting. Alias for reply_control.",
                      "enum": [
                        "everyone",
                        "accounts_you_follow",
                        "mentioned_only",
                        "followers_only",
                        "parent_post_author_only"
                      ],
                      "type": "string"
                    },
                    "poll": {
                      "description": "Threads poll: { options (2-4) }. Text-only, fixed 24h duration.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "threads_poll": {
                      "description": "Threads poll: { options (2-4) }. Text-only, fixed 24h duration. Alias for poll.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "topic_tag": {
                      "description": "A single Threads topic tag (1-50 chars, no periods/ampersands).",
                      "type": "string"
                    },
                    "threads_topic_tag": {
                      "description": "A single Threads topic tag (1-50 chars, no periods/ampersands). Alias for topic_tag.",
                      "type": "string"
                    },
                    "text_attachment": {
                      "description": "Long-form Threads text attachment.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "threads_text_attachment": {
                      "description": "Long-form Threads text attachment. Alias for text_attachment.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "share_to_instagram": {
                      "description": "Also share the published post to the Instagram account linked to the Threads profile as a Story (dark card). Requires Instagram sharing enabled for the Threads profile in the Threads app.",
                      "type": "boolean"
                    },
                    "threads_share_to_instagram": {
                      "description": "Also share the published post to the Instagram account linked to the Threads profile as a Story (dark card). Requires Instagram sharing enabled for the Threads profile in the Threads app. Alias for share_to_instagram.",
                      "type": "boolean"
                    },
                    "is_ghost_post": {
                      "description": "Publish as a Threads ghost post. Text-only.",
                      "type": "boolean"
                    },
                    "threads_is_ghost_post": {
                      "description": "Publish as a Threads ghost post. Text-only. Alias for is_ghost_post.",
                      "type": "boolean"
                    },
                    "is_spoiler": {
                      "description": "Mark the Threads post as a spoiler (full-caption text entity and/or is_spoiler_media).",
                      "type": "boolean"
                    },
                    "threads_is_spoiler": {
                      "description": "Mark the Threads post as a spoiler (full-caption text entity and/or is_spoiler_media). Alias for is_spoiler.",
                      "type": "boolean"
                    },
                    "is_spoiler_media": {
                      "description": "Set is_spoiler_media on the Threads container when media is attached.",
                      "type": "boolean"
                    },
                    "threads_is_spoiler_media": {
                      "description": "Set is_spoiler_media on the Threads container when media is attached. Alias for is_spoiler_media.",
                      "type": "boolean"
                    },
                    "text_entities": {
                      "description": "Threads text_entities, for example spoiler ranges with entity_type, offset, and length.",
                      "type": "array",
                      "items": {}
                    },
                    "threads_text_entities": {
                      "description": "Threads text_entities, for example spoiler ranges with entity_type, offset, and length. Alias for text_entities.",
                      "type": "array",
                      "items": {}
                    },
                    "enable_reply_approvals": {
                      "description": "Require approval before replies appear (enable_reply_approvals).",
                      "type": "boolean"
                    },
                    "threads_enable_reply_approvals": {
                      "description": "Require approval before replies appear (enable_reply_approvals). Alias for enable_reply_approvals.",
                      "type": "boolean"
                    },
                    "gif_attachment": {
                      "description": "GIPHY gif_attachment: { gif_id, provider: \"GIPHY\" }. Tenor is not supported.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "threads_gif_attachment": {
                      "description": "GIPHY gif_attachment: { gif_id, provider: \"GIPHY\" }. Tenor is not supported. Alias for gif_attachment.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "reply_control": "everyone",
                    "poll": {
                      "options": [
                        "Polls",
                        "Analytics"
                      ]
                    },
                    "topic_tag": "producthunt",
                    "is_ghost_post": false,
                    "enable_reply_approvals": true
                  }
                },
                {
                  "title": "Google Business settings",
                  "type": "object",
                  "properties": {
                    "post_type": {
                      "description": "Google Business Profile post type.",
                      "enum": [
                        "STANDARD",
                        "EVENT",
                        "OFFER"
                      ],
                      "type": "string"
                    },
                    "topic_type": {
                      "description": "Google Business Profile post type. Alias for post_type.",
                      "enum": [
                        "STANDARD",
                        "EVENT",
                        "OFFER"
                      ],
                      "type": "string"
                    },
                    "event": {
                      "description": "Event title and start/end date/time.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "offer": {
                      "description": "Offer coupon, redeem URL, and terms.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "cta": {
                      "description": "CTA type and URL.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "recurrence": {
                      "description": "EVENT/OFFER recurrenceInfo: { type: DAILY|WEEKLY|MONTHLY, series_end_time? }. Keeps one-off scheduledTime.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "recurrenceInfo": {
                      "description": "EVENT/OFFER recurrenceInfo: { type: DAILY|WEEKLY|MONTHLY, series_end_time? }. Keeps one-off scheduledTime. Alias for recurrence.",
                      "type": "object",
                      "additionalProperties": true
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "post_type": "EVENT",
                    "event": {
                      "title": "Launch night",
                      "start_date": "2026-09-01"
                    },
                    "recurrence": {
                      "type": "WEEKLY",
                      "series_end_time": "2026-12-01T00:00:00Z"
                    },
                    "cta": {
                      "type": "LEARN_MORE",
                      "url": "https://www.poster.ly"
                    }
                  }
                },
                {
                  "title": "Telegram settings",
                  "type": "object",
                  "properties": {
                    "parse_mode": {
                      "description": "Telegram caption parse mode when supported.",
                      "enum": [
                        "HTML",
                        "MarkdownV2"
                      ],
                      "type": "string"
                    },
                    "disable_web_page_preview": {
                      "description": "Disable link previews for text posts.",
                      "type": "boolean"
                    },
                    "poll": {
                      "description": "Telegram native poll: { question, options (2-10), allows_multiple_answers? }.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "telegram_poll": {
                      "description": "Telegram native poll: { question, options (2-10), allows_multiple_answers? }. Alias for poll.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "buttons": {
                      "description": "Inline CTA buttons: [{ text, url }] (up to 3).",
                      "type": "array",
                      "items": {}
                    },
                    "telegram_buttons": {
                      "description": "Inline CTA buttons: [{ text, url }] (up to 3). Alias for buttons.",
                      "type": "array",
                      "items": {}
                    },
                    "video_cover_url": {
                      "description": "Cover image URL for sendVideo (Bot API cover).",
                      "type": "string"
                    },
                    "cover_url": {
                      "description": "Cover image URL for sendVideo (Bot API cover). Alias for video_cover_url.",
                      "type": "string"
                    },
                    "telegram_video_cover_url": {
                      "description": "Cover image URL for sendVideo (Bot API cover). Alias for video_cover_url.",
                      "type": "string"
                    },
                    "start_timestamp": {
                      "description": "Video start timestamp in seconds for sendVideo (Bot API start_timestamp).",
                      "type": "number"
                    },
                    "telegram_start_timestamp": {
                      "description": "Video start timestamp in seconds for sendVideo (Bot API start_timestamp). Alias for start_timestamp.",
                      "type": "number"
                    },
                    "is_live_photo": {
                      "description": "Send as sendLivePhoto when both a still image and a video are attached.",
                      "type": "boolean"
                    },
                    "telegram_is_live_photo": {
                      "description": "Send as sendLivePhoto when both a still image and a video are attached. Alias for is_live_photo.",
                      "type": "boolean"
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "poll": {
                      "question": "Which feature next?",
                      "options": [
                        "Polls",
                        "Analytics"
                      ]
                    },
                    "buttons": [
                      {
                        "text": "Read more",
                        "url": "https://www.poster.ly"
                      }
                    ],
                    "video_cover_url": "https://example.com/cover.jpg"
                  }
                },
                {
                  "title": "Bluesky settings",
                  "type": "object",
                  "properties": {
                    "langs": {
                      "description": "Language tags for the Bluesky post.",
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "content_label": {
                      "description": "Self-applied content warning (tap-to-reveal).",
                      "enum": [
                        "sexual",
                        "nudity",
                        "porn",
                        "graphic-media"
                      ],
                      "type": "string"
                    },
                    "content_warning": {
                      "description": "Self-applied content warning (tap-to-reveal). Alias for content_label.",
                      "enum": [
                        "sexual",
                        "nudity",
                        "porn",
                        "graphic-media"
                      ],
                      "type": "string"
                    },
                    "tags": {
                      "description": "Up to 8 hidden discovery tags (separate from in-text hashtags).",
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "bluesky_tags": {
                      "description": "Up to 8 hidden discovery tags (separate from in-text hashtags). Alias for tags.",
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "quote_url": {
                      "description": "A Bluesky post URL (or AT-URI) to quote.",
                      "type": "string"
                    },
                    "quote": {
                      "description": "A Bluesky post URL (or AT-URI) to quote. Alias for quote_url.",
                      "type": "string"
                    },
                    "bluesky_quote_url": {
                      "description": "A Bluesky post URL (or AT-URI) to quote. Alias for quote_url.",
                      "type": "string"
                    },
                    "disable_quotes": {
                      "description": "Prevent others from quote-posting this post (postgate).",
                      "type": "boolean"
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "langs": [
                      "en"
                    ],
                    "tags": [
                      "producthunt",
                      "launch"
                    ],
                    "quote_url": "https://bsky.app/profile/poster.ly/post/abc123"
                  }
                },
                {
                  "title": "Discord settings",
                  "type": "object",
                  "properties": {
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "media_alt_texts": {
                      "https://example.com/chart.png": "Q2 revenue chart"
                    }
                  }
                },
                {
                  "title": "Slack settings",
                  "type": "object",
                  "properties": {
                    "markdown": {
                      "description": "Send the caption as a Block Kit markdown block on chat.postMessage.",
                      "type": "boolean"
                    },
                    "slack_markdown": {
                      "description": "Send the caption as a Block Kit markdown block on chat.postMessage. Alias for markdown.",
                      "type": "boolean"
                    },
                    "blocks": {
                      "description": "Optional Block Kit blocks (markdown, card, or carousel) passed to chat.postMessage. File upload still uses getUploadURLExternal.",
                      "type": "array",
                      "items": {}
                    },
                    "slack_blocks": {
                      "description": "Optional Block Kit blocks (markdown, card, or carousel) passed to chat.postMessage. File upload still uses getUploadURLExternal. Alias for blocks.",
                      "type": "array",
                      "items": {}
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "markdown": true
                  }
                },
                {
                  "title": "Mastodon settings",
                  "type": "object",
                  "properties": {
                    "visibility": {
                      "description": "Status visibility (private means followers only).",
                      "enum": [
                        "public",
                        "unlisted",
                        "private"
                      ],
                      "type": "string"
                    },
                    "mastodon_visibility": {
                      "description": "Status visibility (private means followers only). Alias for visibility.",
                      "enum": [
                        "public",
                        "unlisted",
                        "private"
                      ],
                      "type": "string"
                    },
                    "spoiler_text": {
                      "description": "Content warning shown before the post is revealed (marks media sensitive).",
                      "type": "string"
                    },
                    "content_warning": {
                      "description": "Content warning shown before the post is revealed (marks media sensitive). Alias for spoiler_text.",
                      "type": "string"
                    },
                    "mastodon_spoiler_text": {
                      "description": "Content warning shown before the post is revealed (marks media sensitive). Alias for spoiler_text.",
                      "type": "string"
                    },
                    "language": {
                      "description": "ISO 639 language code for the status.",
                      "type": "string"
                    },
                    "mastodon_language": {
                      "description": "ISO 639 language code for the status. Alias for language.",
                      "type": "string"
                    },
                    "quoted_status_id": {
                      "description": "Mastodon status ID to quote (4.5+ quoted_status_id).",
                      "type": "string"
                    },
                    "quote_id": {
                      "description": "Mastodon status ID to quote (4.5+ quoted_status_id). Alias for quoted_status_id.",
                      "type": "string"
                    },
                    "mastodon_quoted_status_id": {
                      "description": "Mastodon status ID to quote (4.5+ quoted_status_id). Alias for quoted_status_id.",
                      "type": "string"
                    },
                    "poll": {
                      "description": "Mastodon poll: { options (2-4), expires_in seconds, multiple? }. Media and a poll can be combined on Mastodon 4.6+.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "mastodon_poll": {
                      "description": "Mastodon poll: { options (2-4), expires_in seconds, multiple? }. Media and a poll can be combined on Mastodon 4.6+. Alias for poll.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "visibility": "public",
                    "spoiler_text": "Launch spoilers",
                    "language": "en",
                    "quoted_status_id": "123",
                    "poll": {
                      "options": [
                        "Yes",
                        "No"
                      ],
                      "expires_in": 86400
                    }
                  }
                },
                {
                  "title": "Dev.to settings",
                  "type": "object",
                  "properties": {
                    "title": {
                      "description": "Article title. Falls back to the first line of the caption.",
                      "type": "string"
                    },
                    "devto_title": {
                      "description": "Article title. Falls back to the first line of the caption. Alias for title.",
                      "type": "string"
                    },
                    "tags": {
                      "description": "Up to 4 tags (lowercase alphanumeric).",
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "devto_tags": {
                      "description": "Up to 4 tags (lowercase alphanumeric). Alias for tags.",
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "canonical_url": {
                      "description": "Canonical URL when cross-posting from your own blog.",
                      "type": "string"
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "title": "How we ship 18 platforms",
                    "tags": [
                      "webdev",
                      "saas"
                    ]
                  }
                },
                {
                  "title": "Hashnode settings",
                  "type": "object",
                  "properties": {
                    "title": {
                      "description": "Post title. Falls back to the first line of the caption.",
                      "type": "string"
                    },
                    "hashnode_title": {
                      "description": "Post title. Falls back to the first line of the caption. Alias for title.",
                      "type": "string"
                    },
                    "tags": {
                      "description": "Up to 4 tags (lowercase alphanumeric).",
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "hashnode_tags": {
                      "description": "Up to 4 tags (lowercase alphanumeric). Alias for tags.",
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "publication_id": {
                      "description": "Target publication. Defaults to the account blog captured at connect time.",
                      "type": "string"
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "title": "How we ship 18 platforms",
                    "tags": [
                      "webdev",
                      "saas"
                    ]
                  }
                },
                {
                  "title": "WordPress settings",
                  "type": "object",
                  "properties": {
                    "title": {
                      "description": "Post title. Falls back to the first line of the caption.",
                      "type": "string"
                    },
                    "wordpress_title": {
                      "description": "Post title. Falls back to the first line of the caption. Alias for title.",
                      "type": "string"
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "title": "How we ship 18 platforms"
                  }
                },
                {
                  "title": "Lemmy settings",
                  "type": "object",
                  "properties": {
                    "community": {
                      "description": "Target community, e.g. technology or technology@lemmy.world.",
                      "type": "string"
                    },
                    "lemmy_community": {
                      "description": "Target community, e.g. technology or technology@lemmy.world. Alias for community.",
                      "type": "string"
                    },
                    "title": {
                      "description": "Post title. Falls back to the first line of the caption.",
                      "type": "string"
                    },
                    "lemmy_title": {
                      "description": "Post title. Falls back to the first line of the caption. Alias for title.",
                      "type": "string"
                    },
                    "url": {
                      "description": "Link post URL. Defaults to the first attached image.",
                      "type": "string"
                    },
                    "lemmy_url": {
                      "description": "Link post URL. Defaults to the first attached image. Alias for url.",
                      "type": "string"
                    },
                    "nsfw": {
                      "description": "Mark the post NSFW.",
                      "type": "boolean"
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "required": [
                    "community"
                  ],
                  "additionalProperties": true,
                  "example": {
                    "community": "selfhosted@lemmy.world",
                    "title": "posterly now posts to Lemmy"
                  }
                }
              ],
              "additionalProperties": true
            },
            "instagram_settings": {
              "type": "object",
              "description": "Platform-specific composer controls. Call list_platforms or get_platform_schema for the selected account before sending settings.",
              "oneOf": [
                {
                  "title": "Instagram settings",
                  "type": "object",
                  "properties": {
                    "__type": {
                      "description": "Instagram account type hint.",
                      "enum": [
                        "instagram",
                        "instagram-standalone"
                      ],
                      "type": "string"
                    },
                    "post_type": {
                      "description": "Instagram publishing format.",
                      "enum": [
                        "post",
                        "feed",
                        "story",
                        "reel",
                        "carousel"
                      ],
                      "type": "string"
                    },
                    "is_trial_reel": {
                      "description": "Request an Instagram Trial Reel when the account supports it.",
                      "type": "boolean"
                    },
                    "trial_reel": {
                      "description": "Request an Instagram Trial Reel when the account supports it. Alias for is_trial_reel.",
                      "type": "boolean"
                    },
                    "graduation_strategy": {
                      "description": "Trial Reel graduation strategy.",
                      "enum": [
                        "MANUAL",
                        "SS_PERFORMANCE"
                      ],
                      "type": "string"
                    },
                    "collaborators": {
                      "description": "Native co-author invitations. Meta-linked Instagram accounts only; feed images, Reels, and carousels; maximum 3; not Stories.",
                      "type": "array",
                      "items": {}
                    },
                    "user_tags": {
                      "description": "Native clickable media tags, not caption @mentions. Supported by eligible direct Instagram and Meta-linked connections; feed images, Reels/video, and Stories. Tags apply to each carousel child and the first Story in a Story Series.",
                      "type": "array",
                      "items": {}
                    },
                    "first_comment": {
                      "description": "First comment to publish after the post.",
                      "type": "string"
                    },
                    "reel_cover_url": {
                      "description": "Custom Reel cover image URL.",
                      "type": "string"
                    },
                    "cover_url": {
                      "description": "Custom Reel cover image URL. Alias for reel_cover_url.",
                      "type": "string"
                    },
                    "reel_thumb_offset": {
                      "description": "Video timestamp, in milliseconds, for a generated Reel thumbnail.",
                      "type": "number"
                    },
                    "thumb_offset": {
                      "description": "Video timestamp, in milliseconds, for a generated Reel thumbnail. Alias for reel_thumb_offset.",
                      "type": "number"
                    },
                    "is_ai_generated": {
                      "description": "Label the parent media container as AI-generated (is_ai_generated). For carousels, set this on the parent only, never on child slides.",
                      "type": "boolean"
                    },
                    "instagram_is_ai_generated": {
                      "description": "Label the parent media container as AI-generated (is_ai_generated). For carousels, set this on the parent only, never on child slides. Alias for is_ai_generated.",
                      "type": "boolean"
                    },
                    "ai_generated": {
                      "description": "Label the parent media container as AI-generated (is_ai_generated). For carousels, set this on the parent only, never on child slides. Alias for is_ai_generated.",
                      "type": "boolean"
                    },
                    "audio_id": {
                      "description": "Licensed Instagram audio ID for Reels (audio_configuration.audio_id). Meta-linked Facebook Login accounts only; hidden for Instagram Login.",
                      "type": "string"
                    },
                    "instagram_audio_id": {
                      "description": "Licensed Instagram audio ID for Reels (audio_configuration.audio_id). Meta-linked Facebook Login accounts only; hidden for Instagram Login. Alias for audio_id.",
                      "type": "string"
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "__type": "instagram",
                    "post_type": "reel",
                    "first_comment": "Full details in the caption.",
                    "is_ai_generated": true
                  }
                },
                {
                  "title": "Facebook settings",
                  "type": "object",
                  "properties": {
                    "post_type": {
                      "description": "Facebook publishing format. Reel uses the Graph Reels API and must be 90 seconds or shorter; use video for longer clips. A 90.0 second Reel is allowed.",
                      "enum": [
                        "post",
                        "feed",
                        "story",
                        "reel",
                        "cover_photo"
                      ],
                      "type": "string"
                    },
                    "text_format_preset_id": {
                      "description": "Styled text post background preset.",
                      "type": "string"
                    },
                    "background_preset_id": {
                      "description": "Styled text post background preset. Alias for text_format_preset_id.",
                      "type": "string"
                    },
                    "reel_cover_url": {
                      "description": "Custom Reel cover image URL.",
                      "type": "string"
                    },
                    "cover_url": {
                      "description": "Custom Reel cover image URL. Alias for reel_cover_url.",
                      "type": "string"
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "post_type": "reel",
                    "reel_cover_url": "https://example.com/cover.jpg"
                  }
                },
                {
                  "title": "TikTok settings",
                  "type": "object",
                  "properties": {
                    "privacy_level": {
                      "description": "TikTok direct-post privacy level from the creator info helper.",
                      "type": "string"
                    },
                    "allow_comment": {
                      "description": "Allow comments when direct posting.",
                      "type": "boolean"
                    },
                    "allow_duet": {
                      "description": "Allow duets when direct posting.",
                      "type": "boolean"
                    },
                    "allow_stitch": {
                      "description": "Allow stitches when direct posting.",
                      "type": "boolean"
                    },
                    "title": {
                      "description": "TikTok title/caption field.",
                      "type": "string"
                    },
                    "media_type": {
                      "description": "Set to PHOTO for TikTok photo posts or multi-photo slideshows.",
                      "enum": [
                        "PHOTO"
                      ],
                      "type": "string"
                    },
                    "photo_cover_index": {
                      "description": "Zero-based cover image index for TikTok photo posts.",
                      "type": "number"
                    },
                    "video_cover_timestamp_ms": {
                      "description": "Millisecond timestamp of the video frame to use as the cover (direct post only).",
                      "type": "number"
                    },
                    "cover_timestamp_ms": {
                      "description": "Millisecond timestamp of the video frame to use as the cover (direct post only). Alias for video_cover_timestamp_ms.",
                      "type": "number"
                    },
                    "auto_add_music": {
                      "description": "Ask TikTok to add recommended music to photo posts when direct posting.",
                      "type": "boolean"
                    },
                    "is_commercial_content": {
                      "description": "TikTok commercial content disclosure.",
                      "type": "boolean"
                    },
                    "is_your_brand": {
                      "description": "TikTok branded content: your own brand.",
                      "type": "boolean"
                    },
                    "is_branded_content": {
                      "description": "TikTok branded content: third-party brand.",
                      "type": "boolean"
                    },
                    "ai_generated": {
                      "description": "Label the post as AI-generated (TikTok is_aigc).",
                      "type": "boolean"
                    },
                    "ai_disclosure": {
                      "description": "Label the post as AI-generated (TikTok is_aigc). Alias for ai_generated.",
                      "type": "boolean"
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "privacy_level": "PUBLIC_TO_EVERYONE",
                    "media_type": "PHOTO",
                    "photo_cover_index": 0,
                    "auto_add_music": true,
                    "allow_comment": true,
                    "allow_duet": false,
                    "allow_stitch": false,
                    "video_cover_timestamp_ms": 1500
                  }
                },
                {
                  "title": "X settings",
                  "type": "object",
                  "properties": {
                    "reply_settings": {
                      "description": "Who can reply to the post.",
                      "enum": [
                        "everyone",
                        "following",
                        "mentionedUsers",
                        "subscribers",
                        "verified"
                      ],
                      "type": "string"
                    },
                    "x_reply_settings": {
                      "description": "Who can reply to the post. Alias for reply_settings.",
                      "enum": [
                        "everyone",
                        "following",
                        "mentionedUsers",
                        "subscribers",
                        "verified"
                      ],
                      "type": "string"
                    },
                    "poll": {
                      "description": "X poll settings: options and duration_minutes.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "x_poll": {
                      "description": "X poll settings: options and duration_minutes. Alias for poll.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "ai_generated": {
                      "description": "Label the post as AI-generated (X made_with_ai).",
                      "type": "boolean"
                    },
                    "ai_disclosure": {
                      "description": "Label the post as AI-generated (X made_with_ai). Alias for ai_generated.",
                      "type": "boolean"
                    },
                    "made_with_ai": {
                      "description": "Label the post as AI-generated (X made_with_ai). Alias for ai_generated.",
                      "type": "boolean"
                    },
                    "paid_partnership": {
                      "description": "Mark the post as a paid partnership (POST /2/tweets paid_partnership). Existing tweet.write.",
                      "type": "boolean"
                    },
                    "x_paid_partnership": {
                      "description": "Mark the post as a paid partnership (POST /2/tweets paid_partnership). Existing tweet.write. Alias for paid_partnership.",
                      "type": "boolean"
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "reply_settings": "following",
                    "poll": {
                      "options": [
                        "Yes",
                        "No"
                      ],
                      "duration_minutes": 1440
                    },
                    "paid_partnership": true
                  }
                },
                {
                  "title": "LinkedIn settings",
                  "type": "object",
                  "properties": {
                    "document_title": {
                      "description": "Title for a LinkedIn PDF/document post.",
                      "type": "string"
                    },
                    "linkedin_document_title": {
                      "description": "Title for a LinkedIn PDF/document post. Alias for document_title.",
                      "type": "string"
                    },
                    "document_filename": {
                      "description": "Filename for a LinkedIn document post.",
                      "type": "string"
                    },
                    "mentions": {
                      "description": "LinkedIn organization mention objects.",
                      "type": "array",
                      "items": {}
                    },
                    "linkedin_mentions": {
                      "description": "LinkedIn organization mention objects. Alias for mentions.",
                      "type": "array",
                      "items": {}
                    },
                    "poll": {
                      "description": "LinkedIn poll: { question, options (2-4), duration (ONE_DAY|THREE_DAYS|SEVEN_DAYS|FOURTEEN_DAYS) }. Mutually exclusive with media.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "linkedin_poll": {
                      "description": "LinkedIn poll: { question, options (2-4), duration (ONE_DAY|THREE_DAYS|SEVEN_DAYS|FOURTEEN_DAYS) }. Mutually exclusive with media. Alias for poll.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "thumbnail_url": {
                      "description": "Custom video thumbnail URL.",
                      "type": "string"
                    },
                    "content_call_to_action_label": {
                      "description": "LinkedIn contentCallToActionLabel, including BUY_NOW and SHOP_NOW (version 202504). Pair with content_landing_page.",
                      "enum": [
                        "APPLY",
                        "DOWNLOAD",
                        "VIEW_QUOTE",
                        "LEARN_MORE",
                        "SIGN_UP",
                        "SUBSCRIBE",
                        "REGISTER",
                        "JOIN",
                        "ATTEND",
                        "REQUEST_DEMO",
                        "SEE_MORE",
                        "BUY_NOW",
                        "SHOP_NOW"
                      ],
                      "type": "string"
                    },
                    "cta_label": {
                      "description": "LinkedIn contentCallToActionLabel, including BUY_NOW and SHOP_NOW (version 202504). Pair with content_landing_page. Alias for content_call_to_action_label.",
                      "enum": [
                        "APPLY",
                        "DOWNLOAD",
                        "VIEW_QUOTE",
                        "LEARN_MORE",
                        "SIGN_UP",
                        "SUBSCRIBE",
                        "REGISTER",
                        "JOIN",
                        "ATTEND",
                        "REQUEST_DEMO",
                        "SEE_MORE",
                        "BUY_NOW",
                        "SHOP_NOW"
                      ],
                      "type": "string"
                    },
                    "linkedin_cta_label": {
                      "description": "LinkedIn contentCallToActionLabel, including BUY_NOW and SHOP_NOW (version 202504). Pair with content_landing_page. Alias for content_call_to_action_label.",
                      "enum": [
                        "APPLY",
                        "DOWNLOAD",
                        "VIEW_QUOTE",
                        "LEARN_MORE",
                        "SIGN_UP",
                        "SUBSCRIBE",
                        "REGISTER",
                        "JOIN",
                        "ATTEND",
                        "REQUEST_DEMO",
                        "SEE_MORE",
                        "BUY_NOW",
                        "SHOP_NOW"
                      ],
                      "type": "string"
                    },
                    "content_landing_page": {
                      "description": "Landing page URL sent as contentLandingPage with the LinkedIn call to action.",
                      "type": "string"
                    },
                    "cta_url": {
                      "description": "Landing page URL sent as contentLandingPage with the LinkedIn call to action. Alias for content_landing_page.",
                      "type": "string"
                    },
                    "linkedin_cta_url": {
                      "description": "Landing page URL sent as contentLandingPage with the LinkedIn call to action. Alias for content_landing_page.",
                      "type": "string"
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "document_title": "Launch plan",
                    "mentions": [
                      {
                        "display_name": "posterly",
                        "urn": "urn:li:organization:123"
                      }
                    ],
                    "poll": {
                      "question": "Which feature next?",
                      "options": [
                        "Polls",
                        "Analytics"
                      ],
                      "duration": "THREE_DAYS"
                    },
                    "content_call_to_action_label": "BUY_NOW",
                    "content_landing_page": "https://www.poster.ly"
                  }
                },
                {
                  "title": "YouTube settings",
                  "type": "object",
                  "properties": {
                    "title": {
                      "description": "YouTube video title.",
                      "type": "string"
                    },
                    "youtube_title": {
                      "description": "YouTube video title. Alias for title.",
                      "type": "string"
                    },
                    "thumbnail_url": {
                      "description": "Custom YouTube thumbnail URL.",
                      "type": "string"
                    },
                    "privacy_status": {
                      "description": "YouTube video visibility.",
                      "enum": [
                        "public",
                        "unlisted",
                        "private"
                      ],
                      "type": "string"
                    },
                    "privacy": {
                      "description": "YouTube video visibility. Alias for privacy_status.",
                      "enum": [
                        "public",
                        "unlisted",
                        "private"
                      ],
                      "type": "string"
                    },
                    "made_for_kids": {
                      "description": "YouTube made-for-kids declaration.",
                      "type": "boolean"
                    },
                    "tags": {
                      "description": "YouTube tags.",
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "category_id": {
                      "description": "YouTube category ID.",
                      "type": "string"
                    },
                    "notify_subscribers": {
                      "description": "Notify subscribers when the video publishes (default true).",
                      "type": "boolean"
                    },
                    "add_shorts_hashtag": {
                      "description": "Append #Shorts to the description for Shorts-feed eligibility (vertical clips).",
                      "type": "boolean"
                    },
                    "ai_generated": {
                      "description": "Label the video as containing AI/synthetic media (containsSyntheticMedia).",
                      "type": "boolean"
                    },
                    "ai_disclosure": {
                      "description": "Label the video as containing AI/synthetic media (containsSyntheticMedia). Alias for ai_generated.",
                      "type": "boolean"
                    },
                    "brand_partner": {
                      "description": "Optional YouTube brandPartner channel ID (UC…) or handle (@…). Added to videos.insert part=brandPartner when set.",
                      "type": "string"
                    },
                    "brandPartner": {
                      "description": "Optional YouTube brandPartner channel ID (UC…) or handle (@…). Added to videos.insert part=brandPartner when set. Alias for brand_partner.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "title"
                  ],
                  "additionalProperties": true,
                  "example": {
                    "title": "Launch walkthrough",
                    "privacy_status": "unlisted",
                    "notify_subscribers": false,
                    "add_shorts_hashtag": true,
                    "brand_partner": "@brand"
                  }
                },
                {
                  "title": "Pinterest settings",
                  "type": "object",
                  "properties": {
                    "board_id": {
                      "description": "Pinterest board ID from the pinterest.boards helper.",
                      "type": "string"
                    },
                    "pinterest_board_id": {
                      "description": "Pinterest board ID from the pinterest.boards helper. Alias for board_id.",
                      "type": "string"
                    },
                    "title": {
                      "description": "Pinterest Pin title.",
                      "type": "string"
                    },
                    "link": {
                      "description": "Destination URL for the Pin.",
                      "type": "string"
                    },
                    "destination_url": {
                      "description": "Destination URL for the Pin. Alias for link.",
                      "type": "string"
                    },
                    "cover_image_url": {
                      "description": "Required for video Pins: a stored, probe-verified JPEG or PNG cover URL (20 MiB maximum).",
                      "type": "string"
                    },
                    "video_cover_url": {
                      "description": "Required for video Pins: a stored, probe-verified JPEG or PNG cover URL (20 MiB maximum). Alias for cover_image_url.",
                      "type": "string"
                    },
                    "pinterest_cover_image_url": {
                      "description": "Required for video Pins: a stored, probe-verified JPEG or PNG cover URL (20 MiB maximum). Alias for cover_image_url.",
                      "type": "string"
                    },
                    "ai_generated": {
                      "description": "Label the Pin as AI-modified (ai_disclosures).",
                      "type": "boolean"
                    },
                    "ai_disclosure": {
                      "description": "Label the Pin as AI-modified (ai_disclosures). Alias for ai_generated.",
                      "type": "boolean"
                    },
                    "product_tags": {
                      "description": "Optional product tags on POST /v5/pins (product_id, optional x/y). Existing pins:write. Pin note is not written.",
                      "type": "array",
                      "items": {}
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "required": [
                    "board_id"
                  ],
                  "additionalProperties": true,
                  "example": {
                    "board_id": "123456789",
                    "title": "Launch ideas",
                    "link": "https://www.poster.ly",
                    "cover_image_url": "https://assets.poster.ly/users/123/pinterest-video-covers/cover.jpg",
                    "product_tags": [
                      {
                        "product_id": "123"
                      }
                    ]
                  }
                },
                {
                  "title": "Threads settings",
                  "type": "object",
                  "properties": {
                    "reply_control": {
                      "description": "Threads reply control setting.",
                      "enum": [
                        "everyone",
                        "accounts_you_follow",
                        "mentioned_only",
                        "followers_only",
                        "parent_post_author_only"
                      ],
                      "type": "string"
                    },
                    "threads_reply_control": {
                      "description": "Threads reply control setting. Alias for reply_control.",
                      "enum": [
                        "everyone",
                        "accounts_you_follow",
                        "mentioned_only",
                        "followers_only",
                        "parent_post_author_only"
                      ],
                      "type": "string"
                    },
                    "poll": {
                      "description": "Threads poll: { options (2-4) }. Text-only, fixed 24h duration.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "threads_poll": {
                      "description": "Threads poll: { options (2-4) }. Text-only, fixed 24h duration. Alias for poll.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "topic_tag": {
                      "description": "A single Threads topic tag (1-50 chars, no periods/ampersands).",
                      "type": "string"
                    },
                    "threads_topic_tag": {
                      "description": "A single Threads topic tag (1-50 chars, no periods/ampersands). Alias for topic_tag.",
                      "type": "string"
                    },
                    "text_attachment": {
                      "description": "Long-form Threads text attachment.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "threads_text_attachment": {
                      "description": "Long-form Threads text attachment. Alias for text_attachment.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "share_to_instagram": {
                      "description": "Also share the published post to the Instagram account linked to the Threads profile as a Story (dark card). Requires Instagram sharing enabled for the Threads profile in the Threads app.",
                      "type": "boolean"
                    },
                    "threads_share_to_instagram": {
                      "description": "Also share the published post to the Instagram account linked to the Threads profile as a Story (dark card). Requires Instagram sharing enabled for the Threads profile in the Threads app. Alias for share_to_instagram.",
                      "type": "boolean"
                    },
                    "is_ghost_post": {
                      "description": "Publish as a Threads ghost post. Text-only.",
                      "type": "boolean"
                    },
                    "threads_is_ghost_post": {
                      "description": "Publish as a Threads ghost post. Text-only. Alias for is_ghost_post.",
                      "type": "boolean"
                    },
                    "is_spoiler": {
                      "description": "Mark the Threads post as a spoiler (full-caption text entity and/or is_spoiler_media).",
                      "type": "boolean"
                    },
                    "threads_is_spoiler": {
                      "description": "Mark the Threads post as a spoiler (full-caption text entity and/or is_spoiler_media). Alias for is_spoiler.",
                      "type": "boolean"
                    },
                    "is_spoiler_media": {
                      "description": "Set is_spoiler_media on the Threads container when media is attached.",
                      "type": "boolean"
                    },
                    "threads_is_spoiler_media": {
                      "description": "Set is_spoiler_media on the Threads container when media is attached. Alias for is_spoiler_media.",
                      "type": "boolean"
                    },
                    "text_entities": {
                      "description": "Threads text_entities, for example spoiler ranges with entity_type, offset, and length.",
                      "type": "array",
                      "items": {}
                    },
                    "threads_text_entities": {
                      "description": "Threads text_entities, for example spoiler ranges with entity_type, offset, and length. Alias for text_entities.",
                      "type": "array",
                      "items": {}
                    },
                    "enable_reply_approvals": {
                      "description": "Require approval before replies appear (enable_reply_approvals).",
                      "type": "boolean"
                    },
                    "threads_enable_reply_approvals": {
                      "description": "Require approval before replies appear (enable_reply_approvals). Alias for enable_reply_approvals.",
                      "type": "boolean"
                    },
                    "gif_attachment": {
                      "description": "GIPHY gif_attachment: { gif_id, provider: \"GIPHY\" }. Tenor is not supported.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "threads_gif_attachment": {
                      "description": "GIPHY gif_attachment: { gif_id, provider: \"GIPHY\" }. Tenor is not supported. Alias for gif_attachment.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "reply_control": "everyone",
                    "poll": {
                      "options": [
                        "Polls",
                        "Analytics"
                      ]
                    },
                    "topic_tag": "producthunt",
                    "is_ghost_post": false,
                    "enable_reply_approvals": true
                  }
                },
                {
                  "title": "Google Business settings",
                  "type": "object",
                  "properties": {
                    "post_type": {
                      "description": "Google Business Profile post type.",
                      "enum": [
                        "STANDARD",
                        "EVENT",
                        "OFFER"
                      ],
                      "type": "string"
                    },
                    "topic_type": {
                      "description": "Google Business Profile post type. Alias for post_type.",
                      "enum": [
                        "STANDARD",
                        "EVENT",
                        "OFFER"
                      ],
                      "type": "string"
                    },
                    "event": {
                      "description": "Event title and start/end date/time.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "offer": {
                      "description": "Offer coupon, redeem URL, and terms.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "cta": {
                      "description": "CTA type and URL.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "recurrence": {
                      "description": "EVENT/OFFER recurrenceInfo: { type: DAILY|WEEKLY|MONTHLY, series_end_time? }. Keeps one-off scheduledTime.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "recurrenceInfo": {
                      "description": "EVENT/OFFER recurrenceInfo: { type: DAILY|WEEKLY|MONTHLY, series_end_time? }. Keeps one-off scheduledTime. Alias for recurrence.",
                      "type": "object",
                      "additionalProperties": true
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "post_type": "EVENT",
                    "event": {
                      "title": "Launch night",
                      "start_date": "2026-09-01"
                    },
                    "recurrence": {
                      "type": "WEEKLY",
                      "series_end_time": "2026-12-01T00:00:00Z"
                    },
                    "cta": {
                      "type": "LEARN_MORE",
                      "url": "https://www.poster.ly"
                    }
                  }
                },
                {
                  "title": "Telegram settings",
                  "type": "object",
                  "properties": {
                    "parse_mode": {
                      "description": "Telegram caption parse mode when supported.",
                      "enum": [
                        "HTML",
                        "MarkdownV2"
                      ],
                      "type": "string"
                    },
                    "disable_web_page_preview": {
                      "description": "Disable link previews for text posts.",
                      "type": "boolean"
                    },
                    "poll": {
                      "description": "Telegram native poll: { question, options (2-10), allows_multiple_answers? }.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "telegram_poll": {
                      "description": "Telegram native poll: { question, options (2-10), allows_multiple_answers? }. Alias for poll.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "buttons": {
                      "description": "Inline CTA buttons: [{ text, url }] (up to 3).",
                      "type": "array",
                      "items": {}
                    },
                    "telegram_buttons": {
                      "description": "Inline CTA buttons: [{ text, url }] (up to 3). Alias for buttons.",
                      "type": "array",
                      "items": {}
                    },
                    "video_cover_url": {
                      "description": "Cover image URL for sendVideo (Bot API cover).",
                      "type": "string"
                    },
                    "cover_url": {
                      "description": "Cover image URL for sendVideo (Bot API cover). Alias for video_cover_url.",
                      "type": "string"
                    },
                    "telegram_video_cover_url": {
                      "description": "Cover image URL for sendVideo (Bot API cover). Alias for video_cover_url.",
                      "type": "string"
                    },
                    "start_timestamp": {
                      "description": "Video start timestamp in seconds for sendVideo (Bot API start_timestamp).",
                      "type": "number"
                    },
                    "telegram_start_timestamp": {
                      "description": "Video start timestamp in seconds for sendVideo (Bot API start_timestamp). Alias for start_timestamp.",
                      "type": "number"
                    },
                    "is_live_photo": {
                      "description": "Send as sendLivePhoto when both a still image and a video are attached.",
                      "type": "boolean"
                    },
                    "telegram_is_live_photo": {
                      "description": "Send as sendLivePhoto when both a still image and a video are attached. Alias for is_live_photo.",
                      "type": "boolean"
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "poll": {
                      "question": "Which feature next?",
                      "options": [
                        "Polls",
                        "Analytics"
                      ]
                    },
                    "buttons": [
                      {
                        "text": "Read more",
                        "url": "https://www.poster.ly"
                      }
                    ],
                    "video_cover_url": "https://example.com/cover.jpg"
                  }
                },
                {
                  "title": "Bluesky settings",
                  "type": "object",
                  "properties": {
                    "langs": {
                      "description": "Language tags for the Bluesky post.",
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "content_label": {
                      "description": "Self-applied content warning (tap-to-reveal).",
                      "enum": [
                        "sexual",
                        "nudity",
                        "porn",
                        "graphic-media"
                      ],
                      "type": "string"
                    },
                    "content_warning": {
                      "description": "Self-applied content warning (tap-to-reveal). Alias for content_label.",
                      "enum": [
                        "sexual",
                        "nudity",
                        "porn",
                        "graphic-media"
                      ],
                      "type": "string"
                    },
                    "tags": {
                      "description": "Up to 8 hidden discovery tags (separate from in-text hashtags).",
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "bluesky_tags": {
                      "description": "Up to 8 hidden discovery tags (separate from in-text hashtags). Alias for tags.",
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "quote_url": {
                      "description": "A Bluesky post URL (or AT-URI) to quote.",
                      "type": "string"
                    },
                    "quote": {
                      "description": "A Bluesky post URL (or AT-URI) to quote. Alias for quote_url.",
                      "type": "string"
                    },
                    "bluesky_quote_url": {
                      "description": "A Bluesky post URL (or AT-URI) to quote. Alias for quote_url.",
                      "type": "string"
                    },
                    "disable_quotes": {
                      "description": "Prevent others from quote-posting this post (postgate).",
                      "type": "boolean"
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "langs": [
                      "en"
                    ],
                    "tags": [
                      "producthunt",
                      "launch"
                    ],
                    "quote_url": "https://bsky.app/profile/poster.ly/post/abc123"
                  }
                },
                {
                  "title": "Discord settings",
                  "type": "object",
                  "properties": {
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "media_alt_texts": {
                      "https://example.com/chart.png": "Q2 revenue chart"
                    }
                  }
                },
                {
                  "title": "Slack settings",
                  "type": "object",
                  "properties": {
                    "markdown": {
                      "description": "Send the caption as a Block Kit markdown block on chat.postMessage.",
                      "type": "boolean"
                    },
                    "slack_markdown": {
                      "description": "Send the caption as a Block Kit markdown block on chat.postMessage. Alias for markdown.",
                      "type": "boolean"
                    },
                    "blocks": {
                      "description": "Optional Block Kit blocks (markdown, card, or carousel) passed to chat.postMessage. File upload still uses getUploadURLExternal.",
                      "type": "array",
                      "items": {}
                    },
                    "slack_blocks": {
                      "description": "Optional Block Kit blocks (markdown, card, or carousel) passed to chat.postMessage. File upload still uses getUploadURLExternal. Alias for blocks.",
                      "type": "array",
                      "items": {}
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "markdown": true
                  }
                },
                {
                  "title": "Mastodon settings",
                  "type": "object",
                  "properties": {
                    "visibility": {
                      "description": "Status visibility (private means followers only).",
                      "enum": [
                        "public",
                        "unlisted",
                        "private"
                      ],
                      "type": "string"
                    },
                    "mastodon_visibility": {
                      "description": "Status visibility (private means followers only). Alias for visibility.",
                      "enum": [
                        "public",
                        "unlisted",
                        "private"
                      ],
                      "type": "string"
                    },
                    "spoiler_text": {
                      "description": "Content warning shown before the post is revealed (marks media sensitive).",
                      "type": "string"
                    },
                    "content_warning": {
                      "description": "Content warning shown before the post is revealed (marks media sensitive). Alias for spoiler_text.",
                      "type": "string"
                    },
                    "mastodon_spoiler_text": {
                      "description": "Content warning shown before the post is revealed (marks media sensitive). Alias for spoiler_text.",
                      "type": "string"
                    },
                    "language": {
                      "description": "ISO 639 language code for the status.",
                      "type": "string"
                    },
                    "mastodon_language": {
                      "description": "ISO 639 language code for the status. Alias for language.",
                      "type": "string"
                    },
                    "quoted_status_id": {
                      "description": "Mastodon status ID to quote (4.5+ quoted_status_id).",
                      "type": "string"
                    },
                    "quote_id": {
                      "description": "Mastodon status ID to quote (4.5+ quoted_status_id). Alias for quoted_status_id.",
                      "type": "string"
                    },
                    "mastodon_quoted_status_id": {
                      "description": "Mastodon status ID to quote (4.5+ quoted_status_id). Alias for quoted_status_id.",
                      "type": "string"
                    },
                    "poll": {
                      "description": "Mastodon poll: { options (2-4), expires_in seconds, multiple? }. Media and a poll can be combined on Mastodon 4.6+.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "mastodon_poll": {
                      "description": "Mastodon poll: { options (2-4), expires_in seconds, multiple? }. Media and a poll can be combined on Mastodon 4.6+. Alias for poll.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "visibility": "public",
                    "spoiler_text": "Launch spoilers",
                    "language": "en",
                    "quoted_status_id": "123",
                    "poll": {
                      "options": [
                        "Yes",
                        "No"
                      ],
                      "expires_in": 86400
                    }
                  }
                },
                {
                  "title": "Dev.to settings",
                  "type": "object",
                  "properties": {
                    "title": {
                      "description": "Article title. Falls back to the first line of the caption.",
                      "type": "string"
                    },
                    "devto_title": {
                      "description": "Article title. Falls back to the first line of the caption. Alias for title.",
                      "type": "string"
                    },
                    "tags": {
                      "description": "Up to 4 tags (lowercase alphanumeric).",
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "devto_tags": {
                      "description": "Up to 4 tags (lowercase alphanumeric). Alias for tags.",
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "canonical_url": {
                      "description": "Canonical URL when cross-posting from your own blog.",
                      "type": "string"
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "title": "How we ship 18 platforms",
                    "tags": [
                      "webdev",
                      "saas"
                    ]
                  }
                },
                {
                  "title": "Hashnode settings",
                  "type": "object",
                  "properties": {
                    "title": {
                      "description": "Post title. Falls back to the first line of the caption.",
                      "type": "string"
                    },
                    "hashnode_title": {
                      "description": "Post title. Falls back to the first line of the caption. Alias for title.",
                      "type": "string"
                    },
                    "tags": {
                      "description": "Up to 4 tags (lowercase alphanumeric).",
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "hashnode_tags": {
                      "description": "Up to 4 tags (lowercase alphanumeric). Alias for tags.",
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "publication_id": {
                      "description": "Target publication. Defaults to the account blog captured at connect time.",
                      "type": "string"
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "title": "How we ship 18 platforms",
                    "tags": [
                      "webdev",
                      "saas"
                    ]
                  }
                },
                {
                  "title": "WordPress settings",
                  "type": "object",
                  "properties": {
                    "title": {
                      "description": "Post title. Falls back to the first line of the caption.",
                      "type": "string"
                    },
                    "wordpress_title": {
                      "description": "Post title. Falls back to the first line of the caption. Alias for title.",
                      "type": "string"
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "title": "How we ship 18 platforms"
                  }
                },
                {
                  "title": "Lemmy settings",
                  "type": "object",
                  "properties": {
                    "community": {
                      "description": "Target community, e.g. technology or technology@lemmy.world.",
                      "type": "string"
                    },
                    "lemmy_community": {
                      "description": "Target community, e.g. technology or technology@lemmy.world. Alias for community.",
                      "type": "string"
                    },
                    "title": {
                      "description": "Post title. Falls back to the first line of the caption.",
                      "type": "string"
                    },
                    "lemmy_title": {
                      "description": "Post title. Falls back to the first line of the caption. Alias for title.",
                      "type": "string"
                    },
                    "url": {
                      "description": "Link post URL. Defaults to the first attached image.",
                      "type": "string"
                    },
                    "lemmy_url": {
                      "description": "Link post URL. Defaults to the first attached image. Alias for url.",
                      "type": "string"
                    },
                    "nsfw": {
                      "description": "Mark the post NSFW.",
                      "type": "boolean"
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "required": [
                    "community"
                  ],
                  "additionalProperties": true,
                  "example": {
                    "community": "selfhosted@lemmy.world",
                    "title": "posterly now posts to Lemmy"
                  }
                }
              ],
              "additionalProperties": true
            },
            "settings": {
              "type": "object",
              "description": "Platform-specific composer controls. Call list_platforms or get_platform_schema for the selected account before sending settings.",
              "oneOf": [
                {
                  "title": "Instagram settings",
                  "type": "object",
                  "properties": {
                    "__type": {
                      "description": "Instagram account type hint.",
                      "enum": [
                        "instagram",
                        "instagram-standalone"
                      ],
                      "type": "string"
                    },
                    "post_type": {
                      "description": "Instagram publishing format.",
                      "enum": [
                        "post",
                        "feed",
                        "story",
                        "reel",
                        "carousel"
                      ],
                      "type": "string"
                    },
                    "is_trial_reel": {
                      "description": "Request an Instagram Trial Reel when the account supports it.",
                      "type": "boolean"
                    },
                    "trial_reel": {
                      "description": "Request an Instagram Trial Reel when the account supports it. Alias for is_trial_reel.",
                      "type": "boolean"
                    },
                    "graduation_strategy": {
                      "description": "Trial Reel graduation strategy.",
                      "enum": [
                        "MANUAL",
                        "SS_PERFORMANCE"
                      ],
                      "type": "string"
                    },
                    "collaborators": {
                      "description": "Native co-author invitations. Meta-linked Instagram accounts only; feed images, Reels, and carousels; maximum 3; not Stories.",
                      "type": "array",
                      "items": {}
                    },
                    "user_tags": {
                      "description": "Native clickable media tags, not caption @mentions. Supported by eligible direct Instagram and Meta-linked connections; feed images, Reels/video, and Stories. Tags apply to each carousel child and the first Story in a Story Series.",
                      "type": "array",
                      "items": {}
                    },
                    "first_comment": {
                      "description": "First comment to publish after the post.",
                      "type": "string"
                    },
                    "reel_cover_url": {
                      "description": "Custom Reel cover image URL.",
                      "type": "string"
                    },
                    "cover_url": {
                      "description": "Custom Reel cover image URL. Alias for reel_cover_url.",
                      "type": "string"
                    },
                    "reel_thumb_offset": {
                      "description": "Video timestamp, in milliseconds, for a generated Reel thumbnail.",
                      "type": "number"
                    },
                    "thumb_offset": {
                      "description": "Video timestamp, in milliseconds, for a generated Reel thumbnail. Alias for reel_thumb_offset.",
                      "type": "number"
                    },
                    "is_ai_generated": {
                      "description": "Label the parent media container as AI-generated (is_ai_generated). For carousels, set this on the parent only, never on child slides.",
                      "type": "boolean"
                    },
                    "instagram_is_ai_generated": {
                      "description": "Label the parent media container as AI-generated (is_ai_generated). For carousels, set this on the parent only, never on child slides. Alias for is_ai_generated.",
                      "type": "boolean"
                    },
                    "ai_generated": {
                      "description": "Label the parent media container as AI-generated (is_ai_generated). For carousels, set this on the parent only, never on child slides. Alias for is_ai_generated.",
                      "type": "boolean"
                    },
                    "audio_id": {
                      "description": "Licensed Instagram audio ID for Reels (audio_configuration.audio_id). Meta-linked Facebook Login accounts only; hidden for Instagram Login.",
                      "type": "string"
                    },
                    "instagram_audio_id": {
                      "description": "Licensed Instagram audio ID for Reels (audio_configuration.audio_id). Meta-linked Facebook Login accounts only; hidden for Instagram Login. Alias for audio_id.",
                      "type": "string"
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "__type": "instagram",
                    "post_type": "reel",
                    "first_comment": "Full details in the caption.",
                    "is_ai_generated": true
                  }
                },
                {
                  "title": "Facebook settings",
                  "type": "object",
                  "properties": {
                    "post_type": {
                      "description": "Facebook publishing format. Reel uses the Graph Reels API and must be 90 seconds or shorter; use video for longer clips. A 90.0 second Reel is allowed.",
                      "enum": [
                        "post",
                        "feed",
                        "story",
                        "reel",
                        "cover_photo"
                      ],
                      "type": "string"
                    },
                    "text_format_preset_id": {
                      "description": "Styled text post background preset.",
                      "type": "string"
                    },
                    "background_preset_id": {
                      "description": "Styled text post background preset. Alias for text_format_preset_id.",
                      "type": "string"
                    },
                    "reel_cover_url": {
                      "description": "Custom Reel cover image URL.",
                      "type": "string"
                    },
                    "cover_url": {
                      "description": "Custom Reel cover image URL. Alias for reel_cover_url.",
                      "type": "string"
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "post_type": "reel",
                    "reel_cover_url": "https://example.com/cover.jpg"
                  }
                },
                {
                  "title": "TikTok settings",
                  "type": "object",
                  "properties": {
                    "privacy_level": {
                      "description": "TikTok direct-post privacy level from the creator info helper.",
                      "type": "string"
                    },
                    "allow_comment": {
                      "description": "Allow comments when direct posting.",
                      "type": "boolean"
                    },
                    "allow_duet": {
                      "description": "Allow duets when direct posting.",
                      "type": "boolean"
                    },
                    "allow_stitch": {
                      "description": "Allow stitches when direct posting.",
                      "type": "boolean"
                    },
                    "title": {
                      "description": "TikTok title/caption field.",
                      "type": "string"
                    },
                    "media_type": {
                      "description": "Set to PHOTO for TikTok photo posts or multi-photo slideshows.",
                      "enum": [
                        "PHOTO"
                      ],
                      "type": "string"
                    },
                    "photo_cover_index": {
                      "description": "Zero-based cover image index for TikTok photo posts.",
                      "type": "number"
                    },
                    "video_cover_timestamp_ms": {
                      "description": "Millisecond timestamp of the video frame to use as the cover (direct post only).",
                      "type": "number"
                    },
                    "cover_timestamp_ms": {
                      "description": "Millisecond timestamp of the video frame to use as the cover (direct post only). Alias for video_cover_timestamp_ms.",
                      "type": "number"
                    },
                    "auto_add_music": {
                      "description": "Ask TikTok to add recommended music to photo posts when direct posting.",
                      "type": "boolean"
                    },
                    "is_commercial_content": {
                      "description": "TikTok commercial content disclosure.",
                      "type": "boolean"
                    },
                    "is_your_brand": {
                      "description": "TikTok branded content: your own brand.",
                      "type": "boolean"
                    },
                    "is_branded_content": {
                      "description": "TikTok branded content: third-party brand.",
                      "type": "boolean"
                    },
                    "ai_generated": {
                      "description": "Label the post as AI-generated (TikTok is_aigc).",
                      "type": "boolean"
                    },
                    "ai_disclosure": {
                      "description": "Label the post as AI-generated (TikTok is_aigc). Alias for ai_generated.",
                      "type": "boolean"
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "privacy_level": "PUBLIC_TO_EVERYONE",
                    "media_type": "PHOTO",
                    "photo_cover_index": 0,
                    "auto_add_music": true,
                    "allow_comment": true,
                    "allow_duet": false,
                    "allow_stitch": false,
                    "video_cover_timestamp_ms": 1500
                  }
                },
                {
                  "title": "X settings",
                  "type": "object",
                  "properties": {
                    "reply_settings": {
                      "description": "Who can reply to the post.",
                      "enum": [
                        "everyone",
                        "following",
                        "mentionedUsers",
                        "subscribers",
                        "verified"
                      ],
                      "type": "string"
                    },
                    "x_reply_settings": {
                      "description": "Who can reply to the post. Alias for reply_settings.",
                      "enum": [
                        "everyone",
                        "following",
                        "mentionedUsers",
                        "subscribers",
                        "verified"
                      ],
                      "type": "string"
                    },
                    "poll": {
                      "description": "X poll settings: options and duration_minutes.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "x_poll": {
                      "description": "X poll settings: options and duration_minutes. Alias for poll.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "ai_generated": {
                      "description": "Label the post as AI-generated (X made_with_ai).",
                      "type": "boolean"
                    },
                    "ai_disclosure": {
                      "description": "Label the post as AI-generated (X made_with_ai). Alias for ai_generated.",
                      "type": "boolean"
                    },
                    "made_with_ai": {
                      "description": "Label the post as AI-generated (X made_with_ai). Alias for ai_generated.",
                      "type": "boolean"
                    },
                    "paid_partnership": {
                      "description": "Mark the post as a paid partnership (POST /2/tweets paid_partnership). Existing tweet.write.",
                      "type": "boolean"
                    },
                    "x_paid_partnership": {
                      "description": "Mark the post as a paid partnership (POST /2/tweets paid_partnership). Existing tweet.write. Alias for paid_partnership.",
                      "type": "boolean"
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "reply_settings": "following",
                    "poll": {
                      "options": [
                        "Yes",
                        "No"
                      ],
                      "duration_minutes": 1440
                    },
                    "paid_partnership": true
                  }
                },
                {
                  "title": "LinkedIn settings",
                  "type": "object",
                  "properties": {
                    "document_title": {
                      "description": "Title for a LinkedIn PDF/document post.",
                      "type": "string"
                    },
                    "linkedin_document_title": {
                      "description": "Title for a LinkedIn PDF/document post. Alias for document_title.",
                      "type": "string"
                    },
                    "document_filename": {
                      "description": "Filename for a LinkedIn document post.",
                      "type": "string"
                    },
                    "mentions": {
                      "description": "LinkedIn organization mention objects.",
                      "type": "array",
                      "items": {}
                    },
                    "linkedin_mentions": {
                      "description": "LinkedIn organization mention objects. Alias for mentions.",
                      "type": "array",
                      "items": {}
                    },
                    "poll": {
                      "description": "LinkedIn poll: { question, options (2-4), duration (ONE_DAY|THREE_DAYS|SEVEN_DAYS|FOURTEEN_DAYS) }. Mutually exclusive with media.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "linkedin_poll": {
                      "description": "LinkedIn poll: { question, options (2-4), duration (ONE_DAY|THREE_DAYS|SEVEN_DAYS|FOURTEEN_DAYS) }. Mutually exclusive with media. Alias for poll.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "thumbnail_url": {
                      "description": "Custom video thumbnail URL.",
                      "type": "string"
                    },
                    "content_call_to_action_label": {
                      "description": "LinkedIn contentCallToActionLabel, including BUY_NOW and SHOP_NOW (version 202504). Pair with content_landing_page.",
                      "enum": [
                        "APPLY",
                        "DOWNLOAD",
                        "VIEW_QUOTE",
                        "LEARN_MORE",
                        "SIGN_UP",
                        "SUBSCRIBE",
                        "REGISTER",
                        "JOIN",
                        "ATTEND",
                        "REQUEST_DEMO",
                        "SEE_MORE",
                        "BUY_NOW",
                        "SHOP_NOW"
                      ],
                      "type": "string"
                    },
                    "cta_label": {
                      "description": "LinkedIn contentCallToActionLabel, including BUY_NOW and SHOP_NOW (version 202504). Pair with content_landing_page. Alias for content_call_to_action_label.",
                      "enum": [
                        "APPLY",
                        "DOWNLOAD",
                        "VIEW_QUOTE",
                        "LEARN_MORE",
                        "SIGN_UP",
                        "SUBSCRIBE",
                        "REGISTER",
                        "JOIN",
                        "ATTEND",
                        "REQUEST_DEMO",
                        "SEE_MORE",
                        "BUY_NOW",
                        "SHOP_NOW"
                      ],
                      "type": "string"
                    },
                    "linkedin_cta_label": {
                      "description": "LinkedIn contentCallToActionLabel, including BUY_NOW and SHOP_NOW (version 202504). Pair with content_landing_page. Alias for content_call_to_action_label.",
                      "enum": [
                        "APPLY",
                        "DOWNLOAD",
                        "VIEW_QUOTE",
                        "LEARN_MORE",
                        "SIGN_UP",
                        "SUBSCRIBE",
                        "REGISTER",
                        "JOIN",
                        "ATTEND",
                        "REQUEST_DEMO",
                        "SEE_MORE",
                        "BUY_NOW",
                        "SHOP_NOW"
                      ],
                      "type": "string"
                    },
                    "content_landing_page": {
                      "description": "Landing page URL sent as contentLandingPage with the LinkedIn call to action.",
                      "type": "string"
                    },
                    "cta_url": {
                      "description": "Landing page URL sent as contentLandingPage with the LinkedIn call to action. Alias for content_landing_page.",
                      "type": "string"
                    },
                    "linkedin_cta_url": {
                      "description": "Landing page URL sent as contentLandingPage with the LinkedIn call to action. Alias for content_landing_page.",
                      "type": "string"
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "document_title": "Launch plan",
                    "mentions": [
                      {
                        "display_name": "posterly",
                        "urn": "urn:li:organization:123"
                      }
                    ],
                    "poll": {
                      "question": "Which feature next?",
                      "options": [
                        "Polls",
                        "Analytics"
                      ],
                      "duration": "THREE_DAYS"
                    },
                    "content_call_to_action_label": "BUY_NOW",
                    "content_landing_page": "https://www.poster.ly"
                  }
                },
                {
                  "title": "YouTube settings",
                  "type": "object",
                  "properties": {
                    "title": {
                      "description": "YouTube video title.",
                      "type": "string"
                    },
                    "youtube_title": {
                      "description": "YouTube video title. Alias for title.",
                      "type": "string"
                    },
                    "thumbnail_url": {
                      "description": "Custom YouTube thumbnail URL.",
                      "type": "string"
                    },
                    "privacy_status": {
                      "description": "YouTube video visibility.",
                      "enum": [
                        "public",
                        "unlisted",
                        "private"
                      ],
                      "type": "string"
                    },
                    "privacy": {
                      "description": "YouTube video visibility. Alias for privacy_status.",
                      "enum": [
                        "public",
                        "unlisted",
                        "private"
                      ],
                      "type": "string"
                    },
                    "made_for_kids": {
                      "description": "YouTube made-for-kids declaration.",
                      "type": "boolean"
                    },
                    "tags": {
                      "description": "YouTube tags.",
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "category_id": {
                      "description": "YouTube category ID.",
                      "type": "string"
                    },
                    "notify_subscribers": {
                      "description": "Notify subscribers when the video publishes (default true).",
                      "type": "boolean"
                    },
                    "add_shorts_hashtag": {
                      "description": "Append #Shorts to the description for Shorts-feed eligibility (vertical clips).",
                      "type": "boolean"
                    },
                    "ai_generated": {
                      "description": "Label the video as containing AI/synthetic media (containsSyntheticMedia).",
                      "type": "boolean"
                    },
                    "ai_disclosure": {
                      "description": "Label the video as containing AI/synthetic media (containsSyntheticMedia). Alias for ai_generated.",
                      "type": "boolean"
                    },
                    "brand_partner": {
                      "description": "Optional YouTube brandPartner channel ID (UC…) or handle (@…). Added to videos.insert part=brandPartner when set.",
                      "type": "string"
                    },
                    "brandPartner": {
                      "description": "Optional YouTube brandPartner channel ID (UC…) or handle (@…). Added to videos.insert part=brandPartner when set. Alias for brand_partner.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "title"
                  ],
                  "additionalProperties": true,
                  "example": {
                    "title": "Launch walkthrough",
                    "privacy_status": "unlisted",
                    "notify_subscribers": false,
                    "add_shorts_hashtag": true,
                    "brand_partner": "@brand"
                  }
                },
                {
                  "title": "Pinterest settings",
                  "type": "object",
                  "properties": {
                    "board_id": {
                      "description": "Pinterest board ID from the pinterest.boards helper.",
                      "type": "string"
                    },
                    "pinterest_board_id": {
                      "description": "Pinterest board ID from the pinterest.boards helper. Alias for board_id.",
                      "type": "string"
                    },
                    "title": {
                      "description": "Pinterest Pin title.",
                      "type": "string"
                    },
                    "link": {
                      "description": "Destination URL for the Pin.",
                      "type": "string"
                    },
                    "destination_url": {
                      "description": "Destination URL for the Pin. Alias for link.",
                      "type": "string"
                    },
                    "cover_image_url": {
                      "description": "Required for video Pins: a stored, probe-verified JPEG or PNG cover URL (20 MiB maximum).",
                      "type": "string"
                    },
                    "video_cover_url": {
                      "description": "Required for video Pins: a stored, probe-verified JPEG or PNG cover URL (20 MiB maximum). Alias for cover_image_url.",
                      "type": "string"
                    },
                    "pinterest_cover_image_url": {
                      "description": "Required for video Pins: a stored, probe-verified JPEG or PNG cover URL (20 MiB maximum). Alias for cover_image_url.",
                      "type": "string"
                    },
                    "ai_generated": {
                      "description": "Label the Pin as AI-modified (ai_disclosures).",
                      "type": "boolean"
                    },
                    "ai_disclosure": {
                      "description": "Label the Pin as AI-modified (ai_disclosures). Alias for ai_generated.",
                      "type": "boolean"
                    },
                    "product_tags": {
                      "description": "Optional product tags on POST /v5/pins (product_id, optional x/y). Existing pins:write. Pin note is not written.",
                      "type": "array",
                      "items": {}
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "required": [
                    "board_id"
                  ],
                  "additionalProperties": true,
                  "example": {
                    "board_id": "123456789",
                    "title": "Launch ideas",
                    "link": "https://www.poster.ly",
                    "cover_image_url": "https://assets.poster.ly/users/123/pinterest-video-covers/cover.jpg",
                    "product_tags": [
                      {
                        "product_id": "123"
                      }
                    ]
                  }
                },
                {
                  "title": "Threads settings",
                  "type": "object",
                  "properties": {
                    "reply_control": {
                      "description": "Threads reply control setting.",
                      "enum": [
                        "everyone",
                        "accounts_you_follow",
                        "mentioned_only",
                        "followers_only",
                        "parent_post_author_only"
                      ],
                      "type": "string"
                    },
                    "threads_reply_control": {
                      "description": "Threads reply control setting. Alias for reply_control.",
                      "enum": [
                        "everyone",
                        "accounts_you_follow",
                        "mentioned_only",
                        "followers_only",
                        "parent_post_author_only"
                      ],
                      "type": "string"
                    },
                    "poll": {
                      "description": "Threads poll: { options (2-4) }. Text-only, fixed 24h duration.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "threads_poll": {
                      "description": "Threads poll: { options (2-4) }. Text-only, fixed 24h duration. Alias for poll.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "topic_tag": {
                      "description": "A single Threads topic tag (1-50 chars, no periods/ampersands).",
                      "type": "string"
                    },
                    "threads_topic_tag": {
                      "description": "A single Threads topic tag (1-50 chars, no periods/ampersands). Alias for topic_tag.",
                      "type": "string"
                    },
                    "text_attachment": {
                      "description": "Long-form Threads text attachment.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "threads_text_attachment": {
                      "description": "Long-form Threads text attachment. Alias for text_attachment.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "share_to_instagram": {
                      "description": "Also share the published post to the Instagram account linked to the Threads profile as a Story (dark card). Requires Instagram sharing enabled for the Threads profile in the Threads app.",
                      "type": "boolean"
                    },
                    "threads_share_to_instagram": {
                      "description": "Also share the published post to the Instagram account linked to the Threads profile as a Story (dark card). Requires Instagram sharing enabled for the Threads profile in the Threads app. Alias for share_to_instagram.",
                      "type": "boolean"
                    },
                    "is_ghost_post": {
                      "description": "Publish as a Threads ghost post. Text-only.",
                      "type": "boolean"
                    },
                    "threads_is_ghost_post": {
                      "description": "Publish as a Threads ghost post. Text-only. Alias for is_ghost_post.",
                      "type": "boolean"
                    },
                    "is_spoiler": {
                      "description": "Mark the Threads post as a spoiler (full-caption text entity and/or is_spoiler_media).",
                      "type": "boolean"
                    },
                    "threads_is_spoiler": {
                      "description": "Mark the Threads post as a spoiler (full-caption text entity and/or is_spoiler_media). Alias for is_spoiler.",
                      "type": "boolean"
                    },
                    "is_spoiler_media": {
                      "description": "Set is_spoiler_media on the Threads container when media is attached.",
                      "type": "boolean"
                    },
                    "threads_is_spoiler_media": {
                      "description": "Set is_spoiler_media on the Threads container when media is attached. Alias for is_spoiler_media.",
                      "type": "boolean"
                    },
                    "text_entities": {
                      "description": "Threads text_entities, for example spoiler ranges with entity_type, offset, and length.",
                      "type": "array",
                      "items": {}
                    },
                    "threads_text_entities": {
                      "description": "Threads text_entities, for example spoiler ranges with entity_type, offset, and length. Alias for text_entities.",
                      "type": "array",
                      "items": {}
                    },
                    "enable_reply_approvals": {
                      "description": "Require approval before replies appear (enable_reply_approvals).",
                      "type": "boolean"
                    },
                    "threads_enable_reply_approvals": {
                      "description": "Require approval before replies appear (enable_reply_approvals). Alias for enable_reply_approvals.",
                      "type": "boolean"
                    },
                    "gif_attachment": {
                      "description": "GIPHY gif_attachment: { gif_id, provider: \"GIPHY\" }. Tenor is not supported.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "threads_gif_attachment": {
                      "description": "GIPHY gif_attachment: { gif_id, provider: \"GIPHY\" }. Tenor is not supported. Alias for gif_attachment.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "reply_control": "everyone",
                    "poll": {
                      "options": [
                        "Polls",
                        "Analytics"
                      ]
                    },
                    "topic_tag": "producthunt",
                    "is_ghost_post": false,
                    "enable_reply_approvals": true
                  }
                },
                {
                  "title": "Google Business settings",
                  "type": "object",
                  "properties": {
                    "post_type": {
                      "description": "Google Business Profile post type.",
                      "enum": [
                        "STANDARD",
                        "EVENT",
                        "OFFER"
                      ],
                      "type": "string"
                    },
                    "topic_type": {
                      "description": "Google Business Profile post type. Alias for post_type.",
                      "enum": [
                        "STANDARD",
                        "EVENT",
                        "OFFER"
                      ],
                      "type": "string"
                    },
                    "event": {
                      "description": "Event title and start/end date/time.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "offer": {
                      "description": "Offer coupon, redeem URL, and terms.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "cta": {
                      "description": "CTA type and URL.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "recurrence": {
                      "description": "EVENT/OFFER recurrenceInfo: { type: DAILY|WEEKLY|MONTHLY, series_end_time? }. Keeps one-off scheduledTime.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "recurrenceInfo": {
                      "description": "EVENT/OFFER recurrenceInfo: { type: DAILY|WEEKLY|MONTHLY, series_end_time? }. Keeps one-off scheduledTime. Alias for recurrence.",
                      "type": "object",
                      "additionalProperties": true
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "post_type": "EVENT",
                    "event": {
                      "title": "Launch night",
                      "start_date": "2026-09-01"
                    },
                    "recurrence": {
                      "type": "WEEKLY",
                      "series_end_time": "2026-12-01T00:00:00Z"
                    },
                    "cta": {
                      "type": "LEARN_MORE",
                      "url": "https://www.poster.ly"
                    }
                  }
                },
                {
                  "title": "Telegram settings",
                  "type": "object",
                  "properties": {
                    "parse_mode": {
                      "description": "Telegram caption parse mode when supported.",
                      "enum": [
                        "HTML",
                        "MarkdownV2"
                      ],
                      "type": "string"
                    },
                    "disable_web_page_preview": {
                      "description": "Disable link previews for text posts.",
                      "type": "boolean"
                    },
                    "poll": {
                      "description": "Telegram native poll: { question, options (2-10), allows_multiple_answers? }.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "telegram_poll": {
                      "description": "Telegram native poll: { question, options (2-10), allows_multiple_answers? }. Alias for poll.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "buttons": {
                      "description": "Inline CTA buttons: [{ text, url }] (up to 3).",
                      "type": "array",
                      "items": {}
                    },
                    "telegram_buttons": {
                      "description": "Inline CTA buttons: [{ text, url }] (up to 3). Alias for buttons.",
                      "type": "array",
                      "items": {}
                    },
                    "video_cover_url": {
                      "description": "Cover image URL for sendVideo (Bot API cover).",
                      "type": "string"
                    },
                    "cover_url": {
                      "description": "Cover image URL for sendVideo (Bot API cover). Alias for video_cover_url.",
                      "type": "string"
                    },
                    "telegram_video_cover_url": {
                      "description": "Cover image URL for sendVideo (Bot API cover). Alias for video_cover_url.",
                      "type": "string"
                    },
                    "start_timestamp": {
                      "description": "Video start timestamp in seconds for sendVideo (Bot API start_timestamp).",
                      "type": "number"
                    },
                    "telegram_start_timestamp": {
                      "description": "Video start timestamp in seconds for sendVideo (Bot API start_timestamp). Alias for start_timestamp.",
                      "type": "number"
                    },
                    "is_live_photo": {
                      "description": "Send as sendLivePhoto when both a still image and a video are attached.",
                      "type": "boolean"
                    },
                    "telegram_is_live_photo": {
                      "description": "Send as sendLivePhoto when both a still image and a video are attached. Alias for is_live_photo.",
                      "type": "boolean"
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "poll": {
                      "question": "Which feature next?",
                      "options": [
                        "Polls",
                        "Analytics"
                      ]
                    },
                    "buttons": [
                      {
                        "text": "Read more",
                        "url": "https://www.poster.ly"
                      }
                    ],
                    "video_cover_url": "https://example.com/cover.jpg"
                  }
                },
                {
                  "title": "Bluesky settings",
                  "type": "object",
                  "properties": {
                    "langs": {
                      "description": "Language tags for the Bluesky post.",
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "content_label": {
                      "description": "Self-applied content warning (tap-to-reveal).",
                      "enum": [
                        "sexual",
                        "nudity",
                        "porn",
                        "graphic-media"
                      ],
                      "type": "string"
                    },
                    "content_warning": {
                      "description": "Self-applied content warning (tap-to-reveal). Alias for content_label.",
                      "enum": [
                        "sexual",
                        "nudity",
                        "porn",
                        "graphic-media"
                      ],
                      "type": "string"
                    },
                    "tags": {
                      "description": "Up to 8 hidden discovery tags (separate from in-text hashtags).",
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "bluesky_tags": {
                      "description": "Up to 8 hidden discovery tags (separate from in-text hashtags). Alias for tags.",
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "quote_url": {
                      "description": "A Bluesky post URL (or AT-URI) to quote.",
                      "type": "string"
                    },
                    "quote": {
                      "description": "A Bluesky post URL (or AT-URI) to quote. Alias for quote_url.",
                      "type": "string"
                    },
                    "bluesky_quote_url": {
                      "description": "A Bluesky post URL (or AT-URI) to quote. Alias for quote_url.",
                      "type": "string"
                    },
                    "disable_quotes": {
                      "description": "Prevent others from quote-posting this post (postgate).",
                      "type": "boolean"
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "langs": [
                      "en"
                    ],
                    "tags": [
                      "producthunt",
                      "launch"
                    ],
                    "quote_url": "https://bsky.app/profile/poster.ly/post/abc123"
                  }
                },
                {
                  "title": "Discord settings",
                  "type": "object",
                  "properties": {
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "media_alt_texts": {
                      "https://example.com/chart.png": "Q2 revenue chart"
                    }
                  }
                },
                {
                  "title": "Slack settings",
                  "type": "object",
                  "properties": {
                    "markdown": {
                      "description": "Send the caption as a Block Kit markdown block on chat.postMessage.",
                      "type": "boolean"
                    },
                    "slack_markdown": {
                      "description": "Send the caption as a Block Kit markdown block on chat.postMessage. Alias for markdown.",
                      "type": "boolean"
                    },
                    "blocks": {
                      "description": "Optional Block Kit blocks (markdown, card, or carousel) passed to chat.postMessage. File upload still uses getUploadURLExternal.",
                      "type": "array",
                      "items": {}
                    },
                    "slack_blocks": {
                      "description": "Optional Block Kit blocks (markdown, card, or carousel) passed to chat.postMessage. File upload still uses getUploadURLExternal. Alias for blocks.",
                      "type": "array",
                      "items": {}
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "markdown": true
                  }
                },
                {
                  "title": "Mastodon settings",
                  "type": "object",
                  "properties": {
                    "visibility": {
                      "description": "Status visibility (private means followers only).",
                      "enum": [
                        "public",
                        "unlisted",
                        "private"
                      ],
                      "type": "string"
                    },
                    "mastodon_visibility": {
                      "description": "Status visibility (private means followers only). Alias for visibility.",
                      "enum": [
                        "public",
                        "unlisted",
                        "private"
                      ],
                      "type": "string"
                    },
                    "spoiler_text": {
                      "description": "Content warning shown before the post is revealed (marks media sensitive).",
                      "type": "string"
                    },
                    "content_warning": {
                      "description": "Content warning shown before the post is revealed (marks media sensitive). Alias for spoiler_text.",
                      "type": "string"
                    },
                    "mastodon_spoiler_text": {
                      "description": "Content warning shown before the post is revealed (marks media sensitive). Alias for spoiler_text.",
                      "type": "string"
                    },
                    "language": {
                      "description": "ISO 639 language code for the status.",
                      "type": "string"
                    },
                    "mastodon_language": {
                      "description": "ISO 639 language code for the status. Alias for language.",
                      "type": "string"
                    },
                    "quoted_status_id": {
                      "description": "Mastodon status ID to quote (4.5+ quoted_status_id).",
                      "type": "string"
                    },
                    "quote_id": {
                      "description": "Mastodon status ID to quote (4.5+ quoted_status_id). Alias for quoted_status_id.",
                      "type": "string"
                    },
                    "mastodon_quoted_status_id": {
                      "description": "Mastodon status ID to quote (4.5+ quoted_status_id). Alias for quoted_status_id.",
                      "type": "string"
                    },
                    "poll": {
                      "description": "Mastodon poll: { options (2-4), expires_in seconds, multiple? }. Media and a poll can be combined on Mastodon 4.6+.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "mastodon_poll": {
                      "description": "Mastodon poll: { options (2-4), expires_in seconds, multiple? }. Media and a poll can be combined on Mastodon 4.6+. Alias for poll.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "visibility": "public",
                    "spoiler_text": "Launch spoilers",
                    "language": "en",
                    "quoted_status_id": "123",
                    "poll": {
                      "options": [
                        "Yes",
                        "No"
                      ],
                      "expires_in": 86400
                    }
                  }
                },
                {
                  "title": "Dev.to settings",
                  "type": "object",
                  "properties": {
                    "title": {
                      "description": "Article title. Falls back to the first line of the caption.",
                      "type": "string"
                    },
                    "devto_title": {
                      "description": "Article title. Falls back to the first line of the caption. Alias for title.",
                      "type": "string"
                    },
                    "tags": {
                      "description": "Up to 4 tags (lowercase alphanumeric).",
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "devto_tags": {
                      "description": "Up to 4 tags (lowercase alphanumeric). Alias for tags.",
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "canonical_url": {
                      "description": "Canonical URL when cross-posting from your own blog.",
                      "type": "string"
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "title": "How we ship 18 platforms",
                    "tags": [
                      "webdev",
                      "saas"
                    ]
                  }
                },
                {
                  "title": "Hashnode settings",
                  "type": "object",
                  "properties": {
                    "title": {
                      "description": "Post title. Falls back to the first line of the caption.",
                      "type": "string"
                    },
                    "hashnode_title": {
                      "description": "Post title. Falls back to the first line of the caption. Alias for title.",
                      "type": "string"
                    },
                    "tags": {
                      "description": "Up to 4 tags (lowercase alphanumeric).",
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "hashnode_tags": {
                      "description": "Up to 4 tags (lowercase alphanumeric). Alias for tags.",
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "publication_id": {
                      "description": "Target publication. Defaults to the account blog captured at connect time.",
                      "type": "string"
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "title": "How we ship 18 platforms",
                    "tags": [
                      "webdev",
                      "saas"
                    ]
                  }
                },
                {
                  "title": "WordPress settings",
                  "type": "object",
                  "properties": {
                    "title": {
                      "description": "Post title. Falls back to the first line of the caption.",
                      "type": "string"
                    },
                    "wordpress_title": {
                      "description": "Post title. Falls back to the first line of the caption. Alias for title.",
                      "type": "string"
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "title": "How we ship 18 platforms"
                  }
                },
                {
                  "title": "Lemmy settings",
                  "type": "object",
                  "properties": {
                    "community": {
                      "description": "Target community, e.g. technology or technology@lemmy.world.",
                      "type": "string"
                    },
                    "lemmy_community": {
                      "description": "Target community, e.g. technology or technology@lemmy.world. Alias for community.",
                      "type": "string"
                    },
                    "title": {
                      "description": "Post title. Falls back to the first line of the caption.",
                      "type": "string"
                    },
                    "lemmy_title": {
                      "description": "Post title. Falls back to the first line of the caption. Alias for title.",
                      "type": "string"
                    },
                    "url": {
                      "description": "Link post URL. Defaults to the first attached image.",
                      "type": "string"
                    },
                    "lemmy_url": {
                      "description": "Link post URL. Defaults to the first attached image. Alias for url.",
                      "type": "string"
                    },
                    "nsfw": {
                      "description": "Mark the post NSFW.",
                      "type": "boolean"
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "required": [
                    "community"
                  ],
                  "additionalProperties": true,
                  "example": {
                    "community": "selfhosted@lemmy.world",
                    "title": "posterly now posts to Lemmy"
                  }
                }
              ],
              "additionalProperties": true
            },
            "workspace_id": {
              "type": "string",
              "description": "Workspace ID from whoami."
            },
            "metadata": {
              "type": "object",
              "additionalProperties": true
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "Validate Post",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": true
        }
      },
      {
        "name": "create_post",
        "description": "Schedule or immediately publish one social media post. DESTRUCTIVE WRITE that creates content on the user's connected social account. Always confirm caption + scheduled_at + account_id/workspace with the user before calling. For Instagram, distinguish caption @mentions from native settings.user_tags and co-author settings.collaborators; call get_platform_schema(account_id) before either native feature. Native media tags work with eligible direct or Meta-linked accounts; collaborators require an eligible Meta-linked account. Third-party media URLs are copied into Posterly storage before the post is saved; short-lived signed URLs must still be live when this tool runs. For multiple posts, prefer create_posts_batch after confirming every item.",
        "inputSchema": {
          "type": "object",
          "properties": {
            "account_id": {
              "type": "string",
              "description": "Social account ID from list_accounts."
            },
            "username": {
              "type": "string",
              "description": "Account username; requires platform."
            },
            "platform": {
              "type": "string",
              "enum": [
                "instagram",
                "facebook",
                "tiktok",
                "twitter",
                "linkedin",
                "youtube",
                "pinterest",
                "threads",
                "google_business",
                "telegram",
                "bluesky",
                "discord",
                "slack",
                "mastodon",
                "devto",
                "hashnode",
                "wordpress",
                "lemmy"
              ],
              "description": "Platform name when using username. Supported: instagram, facebook, tiktok, twitter, linkedin, youtube, pinterest, threads, google_business, telegram, bluesky, discord, slack, mastodon, devto, hashnode, wordpress, lemmy. Aliases x, gmb, and instagram-standalone are also accepted by the API."
            },
            "caption": {
              "type": "string",
              "description": "Post caption/text. On Instagram, @username creates a caption mention only; it is not a native media tag or collaborator invitation. Ignored when thread_posts is provided."
            },
            "scheduled_at": {
              "type": "string",
              "description": "ISO 8601 UTC datetime. Omit to publish immediately."
            },
            "media_url": {
              "type": "string",
              "format": "uri",
              "description": "Media URL. Posterly storage URLs are used as-is; third-party HTTP(S) URLs are copied into Posterly storage before the post is saved. Short-lived signed URLs must still be live when this tool runs."
            },
            "media_urls": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "uri"
              },
              "description": "Media URLs. Posterly storage URLs are used as-is; third-party HTTP(S) URLs are copied into Posterly storage before the post is saved."
            },
            "post_type": {
              "type": "string",
              "enum": [
                "text",
                "image",
                "document",
                "video",
                "reel",
                "carousel",
                "story",
                "story_series",
                "x_thread",
                "threads_thread",
                "photo",
                "cover_photo",
                "post",
                "feed",
                "feed-post",
                "cover-photo",
                "photos",
                "stories",
                "reels"
              ],
              "description": "Optional post type. Omit for auto-detection from media. Supported semantic values include text, image, video, carousel, reel, story, story_series, document, x_thread, threads_thread, photo, and cover_photo."
            },
            "thread_posts": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "description": "For X or Threads: 2+ entries, one per post in the reply chain."
            },
            "platform_settings": {
              "type": "object",
              "description": "Platform-specific composer controls. Call list_platforms or get_platform_schema for the selected account before sending settings.",
              "oneOf": [
                {
                  "title": "Instagram settings",
                  "type": "object",
                  "properties": {
                    "__type": {
                      "description": "Instagram account type hint.",
                      "enum": [
                        "instagram",
                        "instagram-standalone"
                      ],
                      "type": "string"
                    },
                    "post_type": {
                      "description": "Instagram publishing format.",
                      "enum": [
                        "post",
                        "feed",
                        "story",
                        "reel",
                        "carousel"
                      ],
                      "type": "string"
                    },
                    "is_trial_reel": {
                      "description": "Request an Instagram Trial Reel when the account supports it.",
                      "type": "boolean"
                    },
                    "trial_reel": {
                      "description": "Request an Instagram Trial Reel when the account supports it. Alias for is_trial_reel.",
                      "type": "boolean"
                    },
                    "graduation_strategy": {
                      "description": "Trial Reel graduation strategy.",
                      "enum": [
                        "MANUAL",
                        "SS_PERFORMANCE"
                      ],
                      "type": "string"
                    },
                    "collaborators": {
                      "description": "Native co-author invitations. Meta-linked Instagram accounts only; feed images, Reels, and carousels; maximum 3; not Stories.",
                      "type": "array",
                      "items": {}
                    },
                    "user_tags": {
                      "description": "Native clickable media tags, not caption @mentions. Supported by eligible direct Instagram and Meta-linked connections; feed images, Reels/video, and Stories. Tags apply to each carousel child and the first Story in a Story Series.",
                      "type": "array",
                      "items": {}
                    },
                    "first_comment": {
                      "description": "First comment to publish after the post.",
                      "type": "string"
                    },
                    "reel_cover_url": {
                      "description": "Custom Reel cover image URL.",
                      "type": "string"
                    },
                    "cover_url": {
                      "description": "Custom Reel cover image URL. Alias for reel_cover_url.",
                      "type": "string"
                    },
                    "reel_thumb_offset": {
                      "description": "Video timestamp, in milliseconds, for a generated Reel thumbnail.",
                      "type": "number"
                    },
                    "thumb_offset": {
                      "description": "Video timestamp, in milliseconds, for a generated Reel thumbnail. Alias for reel_thumb_offset.",
                      "type": "number"
                    },
                    "is_ai_generated": {
                      "description": "Label the parent media container as AI-generated (is_ai_generated). For carousels, set this on the parent only, never on child slides.",
                      "type": "boolean"
                    },
                    "instagram_is_ai_generated": {
                      "description": "Label the parent media container as AI-generated (is_ai_generated). For carousels, set this on the parent only, never on child slides. Alias for is_ai_generated.",
                      "type": "boolean"
                    },
                    "ai_generated": {
                      "description": "Label the parent media container as AI-generated (is_ai_generated). For carousels, set this on the parent only, never on child slides. Alias for is_ai_generated.",
                      "type": "boolean"
                    },
                    "audio_id": {
                      "description": "Licensed Instagram audio ID for Reels (audio_configuration.audio_id). Meta-linked Facebook Login accounts only; hidden for Instagram Login.",
                      "type": "string"
                    },
                    "instagram_audio_id": {
                      "description": "Licensed Instagram audio ID for Reels (audio_configuration.audio_id). Meta-linked Facebook Login accounts only; hidden for Instagram Login. Alias for audio_id.",
                      "type": "string"
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "__type": "instagram",
                    "post_type": "reel",
                    "first_comment": "Full details in the caption.",
                    "is_ai_generated": true
                  }
                },
                {
                  "title": "Facebook settings",
                  "type": "object",
                  "properties": {
                    "post_type": {
                      "description": "Facebook publishing format. Reel uses the Graph Reels API and must be 90 seconds or shorter; use video for longer clips. A 90.0 second Reel is allowed.",
                      "enum": [
                        "post",
                        "feed",
                        "story",
                        "reel",
                        "cover_photo"
                      ],
                      "type": "string"
                    },
                    "text_format_preset_id": {
                      "description": "Styled text post background preset.",
                      "type": "string"
                    },
                    "background_preset_id": {
                      "description": "Styled text post background preset. Alias for text_format_preset_id.",
                      "type": "string"
                    },
                    "reel_cover_url": {
                      "description": "Custom Reel cover image URL.",
                      "type": "string"
                    },
                    "cover_url": {
                      "description": "Custom Reel cover image URL. Alias for reel_cover_url.",
                      "type": "string"
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "post_type": "reel",
                    "reel_cover_url": "https://example.com/cover.jpg"
                  }
                },
                {
                  "title": "TikTok settings",
                  "type": "object",
                  "properties": {
                    "privacy_level": {
                      "description": "TikTok direct-post privacy level from the creator info helper.",
                      "type": "string"
                    },
                    "allow_comment": {
                      "description": "Allow comments when direct posting.",
                      "type": "boolean"
                    },
                    "allow_duet": {
                      "description": "Allow duets when direct posting.",
                      "type": "boolean"
                    },
                    "allow_stitch": {
                      "description": "Allow stitches when direct posting.",
                      "type": "boolean"
                    },
                    "title": {
                      "description": "TikTok title/caption field.",
                      "type": "string"
                    },
                    "media_type": {
                      "description": "Set to PHOTO for TikTok photo posts or multi-photo slideshows.",
                      "enum": [
                        "PHOTO"
                      ],
                      "type": "string"
                    },
                    "photo_cover_index": {
                      "description": "Zero-based cover image index for TikTok photo posts.",
                      "type": "number"
                    },
                    "video_cover_timestamp_ms": {
                      "description": "Millisecond timestamp of the video frame to use as the cover (direct post only).",
                      "type": "number"
                    },
                    "cover_timestamp_ms": {
                      "description": "Millisecond timestamp of the video frame to use as the cover (direct post only). Alias for video_cover_timestamp_ms.",
                      "type": "number"
                    },
                    "auto_add_music": {
                      "description": "Ask TikTok to add recommended music to photo posts when direct posting.",
                      "type": "boolean"
                    },
                    "is_commercial_content": {
                      "description": "TikTok commercial content disclosure.",
                      "type": "boolean"
                    },
                    "is_your_brand": {
                      "description": "TikTok branded content: your own brand.",
                      "type": "boolean"
                    },
                    "is_branded_content": {
                      "description": "TikTok branded content: third-party brand.",
                      "type": "boolean"
                    },
                    "ai_generated": {
                      "description": "Label the post as AI-generated (TikTok is_aigc).",
                      "type": "boolean"
                    },
                    "ai_disclosure": {
                      "description": "Label the post as AI-generated (TikTok is_aigc). Alias for ai_generated.",
                      "type": "boolean"
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "privacy_level": "PUBLIC_TO_EVERYONE",
                    "media_type": "PHOTO",
                    "photo_cover_index": 0,
                    "auto_add_music": true,
                    "allow_comment": true,
                    "allow_duet": false,
                    "allow_stitch": false,
                    "video_cover_timestamp_ms": 1500
                  }
                },
                {
                  "title": "X settings",
                  "type": "object",
                  "properties": {
                    "reply_settings": {
                      "description": "Who can reply to the post.",
                      "enum": [
                        "everyone",
                        "following",
                        "mentionedUsers",
                        "subscribers",
                        "verified"
                      ],
                      "type": "string"
                    },
                    "x_reply_settings": {
                      "description": "Who can reply to the post. Alias for reply_settings.",
                      "enum": [
                        "everyone",
                        "following",
                        "mentionedUsers",
                        "subscribers",
                        "verified"
                      ],
                      "type": "string"
                    },
                    "poll": {
                      "description": "X poll settings: options and duration_minutes.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "x_poll": {
                      "description": "X poll settings: options and duration_minutes. Alias for poll.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "ai_generated": {
                      "description": "Label the post as AI-generated (X made_with_ai).",
                      "type": "boolean"
                    },
                    "ai_disclosure": {
                      "description": "Label the post as AI-generated (X made_with_ai). Alias for ai_generated.",
                      "type": "boolean"
                    },
                    "made_with_ai": {
                      "description": "Label the post as AI-generated (X made_with_ai). Alias for ai_generated.",
                      "type": "boolean"
                    },
                    "paid_partnership": {
                      "description": "Mark the post as a paid partnership (POST /2/tweets paid_partnership). Existing tweet.write.",
                      "type": "boolean"
                    },
                    "x_paid_partnership": {
                      "description": "Mark the post as a paid partnership (POST /2/tweets paid_partnership). Existing tweet.write. Alias for paid_partnership.",
                      "type": "boolean"
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "reply_settings": "following",
                    "poll": {
                      "options": [
                        "Yes",
                        "No"
                      ],
                      "duration_minutes": 1440
                    },
                    "paid_partnership": true
                  }
                },
                {
                  "title": "LinkedIn settings",
                  "type": "object",
                  "properties": {
                    "document_title": {
                      "description": "Title for a LinkedIn PDF/document post.",
                      "type": "string"
                    },
                    "linkedin_document_title": {
                      "description": "Title for a LinkedIn PDF/document post. Alias for document_title.",
                      "type": "string"
                    },
                    "document_filename": {
                      "description": "Filename for a LinkedIn document post.",
                      "type": "string"
                    },
                    "mentions": {
                      "description": "LinkedIn organization mention objects.",
                      "type": "array",
                      "items": {}
                    },
                    "linkedin_mentions": {
                      "description": "LinkedIn organization mention objects. Alias for mentions.",
                      "type": "array",
                      "items": {}
                    },
                    "poll": {
                      "description": "LinkedIn poll: { question, options (2-4), duration (ONE_DAY|THREE_DAYS|SEVEN_DAYS|FOURTEEN_DAYS) }. Mutually exclusive with media.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "linkedin_poll": {
                      "description": "LinkedIn poll: { question, options (2-4), duration (ONE_DAY|THREE_DAYS|SEVEN_DAYS|FOURTEEN_DAYS) }. Mutually exclusive with media. Alias for poll.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "thumbnail_url": {
                      "description": "Custom video thumbnail URL.",
                      "type": "string"
                    },
                    "content_call_to_action_label": {
                      "description": "LinkedIn contentCallToActionLabel, including BUY_NOW and SHOP_NOW (version 202504). Pair with content_landing_page.",
                      "enum": [
                        "APPLY",
                        "DOWNLOAD",
                        "VIEW_QUOTE",
                        "LEARN_MORE",
                        "SIGN_UP",
                        "SUBSCRIBE",
                        "REGISTER",
                        "JOIN",
                        "ATTEND",
                        "REQUEST_DEMO",
                        "SEE_MORE",
                        "BUY_NOW",
                        "SHOP_NOW"
                      ],
                      "type": "string"
                    },
                    "cta_label": {
                      "description": "LinkedIn contentCallToActionLabel, including BUY_NOW and SHOP_NOW (version 202504). Pair with content_landing_page. Alias for content_call_to_action_label.",
                      "enum": [
                        "APPLY",
                        "DOWNLOAD",
                        "VIEW_QUOTE",
                        "LEARN_MORE",
                        "SIGN_UP",
                        "SUBSCRIBE",
                        "REGISTER",
                        "JOIN",
                        "ATTEND",
                        "REQUEST_DEMO",
                        "SEE_MORE",
                        "BUY_NOW",
                        "SHOP_NOW"
                      ],
                      "type": "string"
                    },
                    "linkedin_cta_label": {
                      "description": "LinkedIn contentCallToActionLabel, including BUY_NOW and SHOP_NOW (version 202504). Pair with content_landing_page. Alias for content_call_to_action_label.",
                      "enum": [
                        "APPLY",
                        "DOWNLOAD",
                        "VIEW_QUOTE",
                        "LEARN_MORE",
                        "SIGN_UP",
                        "SUBSCRIBE",
                        "REGISTER",
                        "JOIN",
                        "ATTEND",
                        "REQUEST_DEMO",
                        "SEE_MORE",
                        "BUY_NOW",
                        "SHOP_NOW"
                      ],
                      "type": "string"
                    },
                    "content_landing_page": {
                      "description": "Landing page URL sent as contentLandingPage with the LinkedIn call to action.",
                      "type": "string"
                    },
                    "cta_url": {
                      "description": "Landing page URL sent as contentLandingPage with the LinkedIn call to action. Alias for content_landing_page.",
                      "type": "string"
                    },
                    "linkedin_cta_url": {
                      "description": "Landing page URL sent as contentLandingPage with the LinkedIn call to action. Alias for content_landing_page.",
                      "type": "string"
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "document_title": "Launch plan",
                    "mentions": [
                      {
                        "display_name": "posterly",
                        "urn": "urn:li:organization:123"
                      }
                    ],
                    "poll": {
                      "question": "Which feature next?",
                      "options": [
                        "Polls",
                        "Analytics"
                      ],
                      "duration": "THREE_DAYS"
                    },
                    "content_call_to_action_label": "BUY_NOW",
                    "content_landing_page": "https://www.poster.ly"
                  }
                },
                {
                  "title": "YouTube settings",
                  "type": "object",
                  "properties": {
                    "title": {
                      "description": "YouTube video title.",
                      "type": "string"
                    },
                    "youtube_title": {
                      "description": "YouTube video title. Alias for title.",
                      "type": "string"
                    },
                    "thumbnail_url": {
                      "description": "Custom YouTube thumbnail URL.",
                      "type": "string"
                    },
                    "privacy_status": {
                      "description": "YouTube video visibility.",
                      "enum": [
                        "public",
                        "unlisted",
                        "private"
                      ],
                      "type": "string"
                    },
                    "privacy": {
                      "description": "YouTube video visibility. Alias for privacy_status.",
                      "enum": [
                        "public",
                        "unlisted",
                        "private"
                      ],
                      "type": "string"
                    },
                    "made_for_kids": {
                      "description": "YouTube made-for-kids declaration.",
                      "type": "boolean"
                    },
                    "tags": {
                      "description": "YouTube tags.",
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "category_id": {
                      "description": "YouTube category ID.",
                      "type": "string"
                    },
                    "notify_subscribers": {
                      "description": "Notify subscribers when the video publishes (default true).",
                      "type": "boolean"
                    },
                    "add_shorts_hashtag": {
                      "description": "Append #Shorts to the description for Shorts-feed eligibility (vertical clips).",
                      "type": "boolean"
                    },
                    "ai_generated": {
                      "description": "Label the video as containing AI/synthetic media (containsSyntheticMedia).",
                      "type": "boolean"
                    },
                    "ai_disclosure": {
                      "description": "Label the video as containing AI/synthetic media (containsSyntheticMedia). Alias for ai_generated.",
                      "type": "boolean"
                    },
                    "brand_partner": {
                      "description": "Optional YouTube brandPartner channel ID (UC…) or handle (@…). Added to videos.insert part=brandPartner when set.",
                      "type": "string"
                    },
                    "brandPartner": {
                      "description": "Optional YouTube brandPartner channel ID (UC…) or handle (@…). Added to videos.insert part=brandPartner when set. Alias for brand_partner.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "title"
                  ],
                  "additionalProperties": true,
                  "example": {
                    "title": "Launch walkthrough",
                    "privacy_status": "unlisted",
                    "notify_subscribers": false,
                    "add_shorts_hashtag": true,
                    "brand_partner": "@brand"
                  }
                },
                {
                  "title": "Pinterest settings",
                  "type": "object",
                  "properties": {
                    "board_id": {
                      "description": "Pinterest board ID from the pinterest.boards helper.",
                      "type": "string"
                    },
                    "pinterest_board_id": {
                      "description": "Pinterest board ID from the pinterest.boards helper. Alias for board_id.",
                      "type": "string"
                    },
                    "title": {
                      "description": "Pinterest Pin title.",
                      "type": "string"
                    },
                    "link": {
                      "description": "Destination URL for the Pin.",
                      "type": "string"
                    },
                    "destination_url": {
                      "description": "Destination URL for the Pin. Alias for link.",
                      "type": "string"
                    },
                    "cover_image_url": {
                      "description": "Required for video Pins: a stored, probe-verified JPEG or PNG cover URL (20 MiB maximum).",
                      "type": "string"
                    },
                    "video_cover_url": {
                      "description": "Required for video Pins: a stored, probe-verified JPEG or PNG cover URL (20 MiB maximum). Alias for cover_image_url.",
                      "type": "string"
                    },
                    "pinterest_cover_image_url": {
                      "description": "Required for video Pins: a stored, probe-verified JPEG or PNG cover URL (20 MiB maximum). Alias for cover_image_url.",
                      "type": "string"
                    },
                    "ai_generated": {
                      "description": "Label the Pin as AI-modified (ai_disclosures).",
                      "type": "boolean"
                    },
                    "ai_disclosure": {
                      "description": "Label the Pin as AI-modified (ai_disclosures). Alias for ai_generated.",
                      "type": "boolean"
                    },
                    "product_tags": {
                      "description": "Optional product tags on POST /v5/pins (product_id, optional x/y). Existing pins:write. Pin note is not written.",
                      "type": "array",
                      "items": {}
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "required": [
                    "board_id"
                  ],
                  "additionalProperties": true,
                  "example": {
                    "board_id": "123456789",
                    "title": "Launch ideas",
                    "link": "https://www.poster.ly",
                    "cover_image_url": "https://assets.poster.ly/users/123/pinterest-video-covers/cover.jpg",
                    "product_tags": [
                      {
                        "product_id": "123"
                      }
                    ]
                  }
                },
                {
                  "title": "Threads settings",
                  "type": "object",
                  "properties": {
                    "reply_control": {
                      "description": "Threads reply control setting.",
                      "enum": [
                        "everyone",
                        "accounts_you_follow",
                        "mentioned_only",
                        "followers_only",
                        "parent_post_author_only"
                      ],
                      "type": "string"
                    },
                    "threads_reply_control": {
                      "description": "Threads reply control setting. Alias for reply_control.",
                      "enum": [
                        "everyone",
                        "accounts_you_follow",
                        "mentioned_only",
                        "followers_only",
                        "parent_post_author_only"
                      ],
                      "type": "string"
                    },
                    "poll": {
                      "description": "Threads poll: { options (2-4) }. Text-only, fixed 24h duration.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "threads_poll": {
                      "description": "Threads poll: { options (2-4) }. Text-only, fixed 24h duration. Alias for poll.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "topic_tag": {
                      "description": "A single Threads topic tag (1-50 chars, no periods/ampersands).",
                      "type": "string"
                    },
                    "threads_topic_tag": {
                      "description": "A single Threads topic tag (1-50 chars, no periods/ampersands). Alias for topic_tag.",
                      "type": "string"
                    },
                    "text_attachment": {
                      "description": "Long-form Threads text attachment.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "threads_text_attachment": {
                      "description": "Long-form Threads text attachment. Alias for text_attachment.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "share_to_instagram": {
                      "description": "Also share the published post to the Instagram account linked to the Threads profile as a Story (dark card). Requires Instagram sharing enabled for the Threads profile in the Threads app.",
                      "type": "boolean"
                    },
                    "threads_share_to_instagram": {
                      "description": "Also share the published post to the Instagram account linked to the Threads profile as a Story (dark card). Requires Instagram sharing enabled for the Threads profile in the Threads app. Alias for share_to_instagram.",
                      "type": "boolean"
                    },
                    "is_ghost_post": {
                      "description": "Publish as a Threads ghost post. Text-only.",
                      "type": "boolean"
                    },
                    "threads_is_ghost_post": {
                      "description": "Publish as a Threads ghost post. Text-only. Alias for is_ghost_post.",
                      "type": "boolean"
                    },
                    "is_spoiler": {
                      "description": "Mark the Threads post as a spoiler (full-caption text entity and/or is_spoiler_media).",
                      "type": "boolean"
                    },
                    "threads_is_spoiler": {
                      "description": "Mark the Threads post as a spoiler (full-caption text entity and/or is_spoiler_media). Alias for is_spoiler.",
                      "type": "boolean"
                    },
                    "is_spoiler_media": {
                      "description": "Set is_spoiler_media on the Threads container when media is attached.",
                      "type": "boolean"
                    },
                    "threads_is_spoiler_media": {
                      "description": "Set is_spoiler_media on the Threads container when media is attached. Alias for is_spoiler_media.",
                      "type": "boolean"
                    },
                    "text_entities": {
                      "description": "Threads text_entities, for example spoiler ranges with entity_type, offset, and length.",
                      "type": "array",
                      "items": {}
                    },
                    "threads_text_entities": {
                      "description": "Threads text_entities, for example spoiler ranges with entity_type, offset, and length. Alias for text_entities.",
                      "type": "array",
                      "items": {}
                    },
                    "enable_reply_approvals": {
                      "description": "Require approval before replies appear (enable_reply_approvals).",
                      "type": "boolean"
                    },
                    "threads_enable_reply_approvals": {
                      "description": "Require approval before replies appear (enable_reply_approvals). Alias for enable_reply_approvals.",
                      "type": "boolean"
                    },
                    "gif_attachment": {
                      "description": "GIPHY gif_attachment: { gif_id, provider: \"GIPHY\" }. Tenor is not supported.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "threads_gif_attachment": {
                      "description": "GIPHY gif_attachment: { gif_id, provider: \"GIPHY\" }. Tenor is not supported. Alias for gif_attachment.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "reply_control": "everyone",
                    "poll": {
                      "options": [
                        "Polls",
                        "Analytics"
                      ]
                    },
                    "topic_tag": "producthunt",
                    "is_ghost_post": false,
                    "enable_reply_approvals": true
                  }
                },
                {
                  "title": "Google Business settings",
                  "type": "object",
                  "properties": {
                    "post_type": {
                      "description": "Google Business Profile post type.",
                      "enum": [
                        "STANDARD",
                        "EVENT",
                        "OFFER"
                      ],
                      "type": "string"
                    },
                    "topic_type": {
                      "description": "Google Business Profile post type. Alias for post_type.",
                      "enum": [
                        "STANDARD",
                        "EVENT",
                        "OFFER"
                      ],
                      "type": "string"
                    },
                    "event": {
                      "description": "Event title and start/end date/time.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "offer": {
                      "description": "Offer coupon, redeem URL, and terms.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "cta": {
                      "description": "CTA type and URL.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "recurrence": {
                      "description": "EVENT/OFFER recurrenceInfo: { type: DAILY|WEEKLY|MONTHLY, series_end_time? }. Keeps one-off scheduledTime.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "recurrenceInfo": {
                      "description": "EVENT/OFFER recurrenceInfo: { type: DAILY|WEEKLY|MONTHLY, series_end_time? }. Keeps one-off scheduledTime. Alias for recurrence.",
                      "type": "object",
                      "additionalProperties": true
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "post_type": "EVENT",
                    "event": {
                      "title": "Launch night",
                      "start_date": "2026-09-01"
                    },
                    "recurrence": {
                      "type": "WEEKLY",
                      "series_end_time": "2026-12-01T00:00:00Z"
                    },
                    "cta": {
                      "type": "LEARN_MORE",
                      "url": "https://www.poster.ly"
                    }
                  }
                },
                {
                  "title": "Telegram settings",
                  "type": "object",
                  "properties": {
                    "parse_mode": {
                      "description": "Telegram caption parse mode when supported.",
                      "enum": [
                        "HTML",
                        "MarkdownV2"
                      ],
                      "type": "string"
                    },
                    "disable_web_page_preview": {
                      "description": "Disable link previews for text posts.",
                      "type": "boolean"
                    },
                    "poll": {
                      "description": "Telegram native poll: { question, options (2-10), allows_multiple_answers? }.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "telegram_poll": {
                      "description": "Telegram native poll: { question, options (2-10), allows_multiple_answers? }. Alias for poll.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "buttons": {
                      "description": "Inline CTA buttons: [{ text, url }] (up to 3).",
                      "type": "array",
                      "items": {}
                    },
                    "telegram_buttons": {
                      "description": "Inline CTA buttons: [{ text, url }] (up to 3). Alias for buttons.",
                      "type": "array",
                      "items": {}
                    },
                    "video_cover_url": {
                      "description": "Cover image URL for sendVideo (Bot API cover).",
                      "type": "string"
                    },
                    "cover_url": {
                      "description": "Cover image URL for sendVideo (Bot API cover). Alias for video_cover_url.",
                      "type": "string"
                    },
                    "telegram_video_cover_url": {
                      "description": "Cover image URL for sendVideo (Bot API cover). Alias for video_cover_url.",
                      "type": "string"
                    },
                    "start_timestamp": {
                      "description": "Video start timestamp in seconds for sendVideo (Bot API start_timestamp).",
                      "type": "number"
                    },
                    "telegram_start_timestamp": {
                      "description": "Video start timestamp in seconds for sendVideo (Bot API start_timestamp). Alias for start_timestamp.",
                      "type": "number"
                    },
                    "is_live_photo": {
                      "description": "Send as sendLivePhoto when both a still image and a video are attached.",
                      "type": "boolean"
                    },
                    "telegram_is_live_photo": {
                      "description": "Send as sendLivePhoto when both a still image and a video are attached. Alias for is_live_photo.",
                      "type": "boolean"
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "poll": {
                      "question": "Which feature next?",
                      "options": [
                        "Polls",
                        "Analytics"
                      ]
                    },
                    "buttons": [
                      {
                        "text": "Read more",
                        "url": "https://www.poster.ly"
                      }
                    ],
                    "video_cover_url": "https://example.com/cover.jpg"
                  }
                },
                {
                  "title": "Bluesky settings",
                  "type": "object",
                  "properties": {
                    "langs": {
                      "description": "Language tags for the Bluesky post.",
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "content_label": {
                      "description": "Self-applied content warning (tap-to-reveal).",
                      "enum": [
                        "sexual",
                        "nudity",
                        "porn",
                        "graphic-media"
                      ],
                      "type": "string"
                    },
                    "content_warning": {
                      "description": "Self-applied content warning (tap-to-reveal). Alias for content_label.",
                      "enum": [
                        "sexual",
                        "nudity",
                        "porn",
                        "graphic-media"
                      ],
                      "type": "string"
                    },
                    "tags": {
                      "description": "Up to 8 hidden discovery tags (separate from in-text hashtags).",
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "bluesky_tags": {
                      "description": "Up to 8 hidden discovery tags (separate from in-text hashtags). Alias for tags.",
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "quote_url": {
                      "description": "A Bluesky post URL (or AT-URI) to quote.",
                      "type": "string"
                    },
                    "quote": {
                      "description": "A Bluesky post URL (or AT-URI) to quote. Alias for quote_url.",
                      "type": "string"
                    },
                    "bluesky_quote_url": {
                      "description": "A Bluesky post URL (or AT-URI) to quote. Alias for quote_url.",
                      "type": "string"
                    },
                    "disable_quotes": {
                      "description": "Prevent others from quote-posting this post (postgate).",
                      "type": "boolean"
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "langs": [
                      "en"
                    ],
                    "tags": [
                      "producthunt",
                      "launch"
                    ],
                    "quote_url": "https://bsky.app/profile/poster.ly/post/abc123"
                  }
                },
                {
                  "title": "Discord settings",
                  "type": "object",
                  "properties": {
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "media_alt_texts": {
                      "https://example.com/chart.png": "Q2 revenue chart"
                    }
                  }
                },
                {
                  "title": "Slack settings",
                  "type": "object",
                  "properties": {
                    "markdown": {
                      "description": "Send the caption as a Block Kit markdown block on chat.postMessage.",
                      "type": "boolean"
                    },
                    "slack_markdown": {
                      "description": "Send the caption as a Block Kit markdown block on chat.postMessage. Alias for markdown.",
                      "type": "boolean"
                    },
                    "blocks": {
                      "description": "Optional Block Kit blocks (markdown, card, or carousel) passed to chat.postMessage. File upload still uses getUploadURLExternal.",
                      "type": "array",
                      "items": {}
                    },
                    "slack_blocks": {
                      "description": "Optional Block Kit blocks (markdown, card, or carousel) passed to chat.postMessage. File upload still uses getUploadURLExternal. Alias for blocks.",
                      "type": "array",
                      "items": {}
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "markdown": true
                  }
                },
                {
                  "title": "Mastodon settings",
                  "type": "object",
                  "properties": {
                    "visibility": {
                      "description": "Status visibility (private means followers only).",
                      "enum": [
                        "public",
                        "unlisted",
                        "private"
                      ],
                      "type": "string"
                    },
                    "mastodon_visibility": {
                      "description": "Status visibility (private means followers only). Alias for visibility.",
                      "enum": [
                        "public",
                        "unlisted",
                        "private"
                      ],
                      "type": "string"
                    },
                    "spoiler_text": {
                      "description": "Content warning shown before the post is revealed (marks media sensitive).",
                      "type": "string"
                    },
                    "content_warning": {
                      "description": "Content warning shown before the post is revealed (marks media sensitive). Alias for spoiler_text.",
                      "type": "string"
                    },
                    "mastodon_spoiler_text": {
                      "description": "Content warning shown before the post is revealed (marks media sensitive). Alias for spoiler_text.",
                      "type": "string"
                    },
                    "language": {
                      "description": "ISO 639 language code for the status.",
                      "type": "string"
                    },
                    "mastodon_language": {
                      "description": "ISO 639 language code for the status. Alias for language.",
                      "type": "string"
                    },
                    "quoted_status_id": {
                      "description": "Mastodon status ID to quote (4.5+ quoted_status_id).",
                      "type": "string"
                    },
                    "quote_id": {
                      "description": "Mastodon status ID to quote (4.5+ quoted_status_id). Alias for quoted_status_id.",
                      "type": "string"
                    },
                    "mastodon_quoted_status_id": {
                      "description": "Mastodon status ID to quote (4.5+ quoted_status_id). Alias for quoted_status_id.",
                      "type": "string"
                    },
                    "poll": {
                      "description": "Mastodon poll: { options (2-4), expires_in seconds, multiple? }. Media and a poll can be combined on Mastodon 4.6+.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "mastodon_poll": {
                      "description": "Mastodon poll: { options (2-4), expires_in seconds, multiple? }. Media and a poll can be combined on Mastodon 4.6+. Alias for poll.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "visibility": "public",
                    "spoiler_text": "Launch spoilers",
                    "language": "en",
                    "quoted_status_id": "123",
                    "poll": {
                      "options": [
                        "Yes",
                        "No"
                      ],
                      "expires_in": 86400
                    }
                  }
                },
                {
                  "title": "Dev.to settings",
                  "type": "object",
                  "properties": {
                    "title": {
                      "description": "Article title. Falls back to the first line of the caption.",
                      "type": "string"
                    },
                    "devto_title": {
                      "description": "Article title. Falls back to the first line of the caption. Alias for title.",
                      "type": "string"
                    },
                    "tags": {
                      "description": "Up to 4 tags (lowercase alphanumeric).",
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "devto_tags": {
                      "description": "Up to 4 tags (lowercase alphanumeric). Alias for tags.",
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "canonical_url": {
                      "description": "Canonical URL when cross-posting from your own blog.",
                      "type": "string"
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "title": "How we ship 18 platforms",
                    "tags": [
                      "webdev",
                      "saas"
                    ]
                  }
                },
                {
                  "title": "Hashnode settings",
                  "type": "object",
                  "properties": {
                    "title": {
                      "description": "Post title. Falls back to the first line of the caption.",
                      "type": "string"
                    },
                    "hashnode_title": {
                      "description": "Post title. Falls back to the first line of the caption. Alias for title.",
                      "type": "string"
                    },
                    "tags": {
                      "description": "Up to 4 tags (lowercase alphanumeric).",
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "hashnode_tags": {
                      "description": "Up to 4 tags (lowercase alphanumeric). Alias for tags.",
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "publication_id": {
                      "description": "Target publication. Defaults to the account blog captured at connect time.",
                      "type": "string"
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "title": "How we ship 18 platforms",
                    "tags": [
                      "webdev",
                      "saas"
                    ]
                  }
                },
                {
                  "title": "WordPress settings",
                  "type": "object",
                  "properties": {
                    "title": {
                      "description": "Post title. Falls back to the first line of the caption.",
                      "type": "string"
                    },
                    "wordpress_title": {
                      "description": "Post title. Falls back to the first line of the caption. Alias for title.",
                      "type": "string"
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "title": "How we ship 18 platforms"
                  }
                },
                {
                  "title": "Lemmy settings",
                  "type": "object",
                  "properties": {
                    "community": {
                      "description": "Target community, e.g. technology or technology@lemmy.world.",
                      "type": "string"
                    },
                    "lemmy_community": {
                      "description": "Target community, e.g. technology or technology@lemmy.world. Alias for community.",
                      "type": "string"
                    },
                    "title": {
                      "description": "Post title. Falls back to the first line of the caption.",
                      "type": "string"
                    },
                    "lemmy_title": {
                      "description": "Post title. Falls back to the first line of the caption. Alias for title.",
                      "type": "string"
                    },
                    "url": {
                      "description": "Link post URL. Defaults to the first attached image.",
                      "type": "string"
                    },
                    "lemmy_url": {
                      "description": "Link post URL. Defaults to the first attached image. Alias for url.",
                      "type": "string"
                    },
                    "nsfw": {
                      "description": "Mark the post NSFW.",
                      "type": "boolean"
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "required": [
                    "community"
                  ],
                  "additionalProperties": true,
                  "example": {
                    "community": "selfhosted@lemmy.world",
                    "title": "posterly now posts to Lemmy"
                  }
                }
              ],
              "additionalProperties": true
            },
            "instagram_settings": {
              "type": "object",
              "description": "Platform-specific composer controls. Call list_platforms or get_platform_schema for the selected account before sending settings.",
              "oneOf": [
                {
                  "title": "Instagram settings",
                  "type": "object",
                  "properties": {
                    "__type": {
                      "description": "Instagram account type hint.",
                      "enum": [
                        "instagram",
                        "instagram-standalone"
                      ],
                      "type": "string"
                    },
                    "post_type": {
                      "description": "Instagram publishing format.",
                      "enum": [
                        "post",
                        "feed",
                        "story",
                        "reel",
                        "carousel"
                      ],
                      "type": "string"
                    },
                    "is_trial_reel": {
                      "description": "Request an Instagram Trial Reel when the account supports it.",
                      "type": "boolean"
                    },
                    "trial_reel": {
                      "description": "Request an Instagram Trial Reel when the account supports it. Alias for is_trial_reel.",
                      "type": "boolean"
                    },
                    "graduation_strategy": {
                      "description": "Trial Reel graduation strategy.",
                      "enum": [
                        "MANUAL",
                        "SS_PERFORMANCE"
                      ],
                      "type": "string"
                    },
                    "collaborators": {
                      "description": "Native co-author invitations. Meta-linked Instagram accounts only; feed images, Reels, and carousels; maximum 3; not Stories.",
                      "type": "array",
                      "items": {}
                    },
                    "user_tags": {
                      "description": "Native clickable media tags, not caption @mentions. Supported by eligible direct Instagram and Meta-linked connections; feed images, Reels/video, and Stories. Tags apply to each carousel child and the first Story in a Story Series.",
                      "type": "array",
                      "items": {}
                    },
                    "first_comment": {
                      "description": "First comment to publish after the post.",
                      "type": "string"
                    },
                    "reel_cover_url": {
                      "description": "Custom Reel cover image URL.",
                      "type": "string"
                    },
                    "cover_url": {
                      "description": "Custom Reel cover image URL. Alias for reel_cover_url.",
                      "type": "string"
                    },
                    "reel_thumb_offset": {
                      "description": "Video timestamp, in milliseconds, for a generated Reel thumbnail.",
                      "type": "number"
                    },
                    "thumb_offset": {
                      "description": "Video timestamp, in milliseconds, for a generated Reel thumbnail. Alias for reel_thumb_offset.",
                      "type": "number"
                    },
                    "is_ai_generated": {
                      "description": "Label the parent media container as AI-generated (is_ai_generated). For carousels, set this on the parent only, never on child slides.",
                      "type": "boolean"
                    },
                    "instagram_is_ai_generated": {
                      "description": "Label the parent media container as AI-generated (is_ai_generated). For carousels, set this on the parent only, never on child slides. Alias for is_ai_generated.",
                      "type": "boolean"
                    },
                    "ai_generated": {
                      "description": "Label the parent media container as AI-generated (is_ai_generated). For carousels, set this on the parent only, never on child slides. Alias for is_ai_generated.",
                      "type": "boolean"
                    },
                    "audio_id": {
                      "description": "Licensed Instagram audio ID for Reels (audio_configuration.audio_id). Meta-linked Facebook Login accounts only; hidden for Instagram Login.",
                      "type": "string"
                    },
                    "instagram_audio_id": {
                      "description": "Licensed Instagram audio ID for Reels (audio_configuration.audio_id). Meta-linked Facebook Login accounts only; hidden for Instagram Login. Alias for audio_id.",
                      "type": "string"
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "__type": "instagram",
                    "post_type": "reel",
                    "first_comment": "Full details in the caption.",
                    "is_ai_generated": true
                  }
                },
                {
                  "title": "Facebook settings",
                  "type": "object",
                  "properties": {
                    "post_type": {
                      "description": "Facebook publishing format. Reel uses the Graph Reels API and must be 90 seconds or shorter; use video for longer clips. A 90.0 second Reel is allowed.",
                      "enum": [
                        "post",
                        "feed",
                        "story",
                        "reel",
                        "cover_photo"
                      ],
                      "type": "string"
                    },
                    "text_format_preset_id": {
                      "description": "Styled text post background preset.",
                      "type": "string"
                    },
                    "background_preset_id": {
                      "description": "Styled text post background preset. Alias for text_format_preset_id.",
                      "type": "string"
                    },
                    "reel_cover_url": {
                      "description": "Custom Reel cover image URL.",
                      "type": "string"
                    },
                    "cover_url": {
                      "description": "Custom Reel cover image URL. Alias for reel_cover_url.",
                      "type": "string"
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "post_type": "reel",
                    "reel_cover_url": "https://example.com/cover.jpg"
                  }
                },
                {
                  "title": "TikTok settings",
                  "type": "object",
                  "properties": {
                    "privacy_level": {
                      "description": "TikTok direct-post privacy level from the creator info helper.",
                      "type": "string"
                    },
                    "allow_comment": {
                      "description": "Allow comments when direct posting.",
                      "type": "boolean"
                    },
                    "allow_duet": {
                      "description": "Allow duets when direct posting.",
                      "type": "boolean"
                    },
                    "allow_stitch": {
                      "description": "Allow stitches when direct posting.",
                      "type": "boolean"
                    },
                    "title": {
                      "description": "TikTok title/caption field.",
                      "type": "string"
                    },
                    "media_type": {
                      "description": "Set to PHOTO for TikTok photo posts or multi-photo slideshows.",
                      "enum": [
                        "PHOTO"
                      ],
                      "type": "string"
                    },
                    "photo_cover_index": {
                      "description": "Zero-based cover image index for TikTok photo posts.",
                      "type": "number"
                    },
                    "video_cover_timestamp_ms": {
                      "description": "Millisecond timestamp of the video frame to use as the cover (direct post only).",
                      "type": "number"
                    },
                    "cover_timestamp_ms": {
                      "description": "Millisecond timestamp of the video frame to use as the cover (direct post only). Alias for video_cover_timestamp_ms.",
                      "type": "number"
                    },
                    "auto_add_music": {
                      "description": "Ask TikTok to add recommended music to photo posts when direct posting.",
                      "type": "boolean"
                    },
                    "is_commercial_content": {
                      "description": "TikTok commercial content disclosure.",
                      "type": "boolean"
                    },
                    "is_your_brand": {
                      "description": "TikTok branded content: your own brand.",
                      "type": "boolean"
                    },
                    "is_branded_content": {
                      "description": "TikTok branded content: third-party brand.",
                      "type": "boolean"
                    },
                    "ai_generated": {
                      "description": "Label the post as AI-generated (TikTok is_aigc).",
                      "type": "boolean"
                    },
                    "ai_disclosure": {
                      "description": "Label the post as AI-generated (TikTok is_aigc). Alias for ai_generated.",
                      "type": "boolean"
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "privacy_level": "PUBLIC_TO_EVERYONE",
                    "media_type": "PHOTO",
                    "photo_cover_index": 0,
                    "auto_add_music": true,
                    "allow_comment": true,
                    "allow_duet": false,
                    "allow_stitch": false,
                    "video_cover_timestamp_ms": 1500
                  }
                },
                {
                  "title": "X settings",
                  "type": "object",
                  "properties": {
                    "reply_settings": {
                      "description": "Who can reply to the post.",
                      "enum": [
                        "everyone",
                        "following",
                        "mentionedUsers",
                        "subscribers",
                        "verified"
                      ],
                      "type": "string"
                    },
                    "x_reply_settings": {
                      "description": "Who can reply to the post. Alias for reply_settings.",
                      "enum": [
                        "everyone",
                        "following",
                        "mentionedUsers",
                        "subscribers",
                        "verified"
                      ],
                      "type": "string"
                    },
                    "poll": {
                      "description": "X poll settings: options and duration_minutes.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "x_poll": {
                      "description": "X poll settings: options and duration_minutes. Alias for poll.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "ai_generated": {
                      "description": "Label the post as AI-generated (X made_with_ai).",
                      "type": "boolean"
                    },
                    "ai_disclosure": {
                      "description": "Label the post as AI-generated (X made_with_ai). Alias for ai_generated.",
                      "type": "boolean"
                    },
                    "made_with_ai": {
                      "description": "Label the post as AI-generated (X made_with_ai). Alias for ai_generated.",
                      "type": "boolean"
                    },
                    "paid_partnership": {
                      "description": "Mark the post as a paid partnership (POST /2/tweets paid_partnership). Existing tweet.write.",
                      "type": "boolean"
                    },
                    "x_paid_partnership": {
                      "description": "Mark the post as a paid partnership (POST /2/tweets paid_partnership). Existing tweet.write. Alias for paid_partnership.",
                      "type": "boolean"
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "reply_settings": "following",
                    "poll": {
                      "options": [
                        "Yes",
                        "No"
                      ],
                      "duration_minutes": 1440
                    },
                    "paid_partnership": true
                  }
                },
                {
                  "title": "LinkedIn settings",
                  "type": "object",
                  "properties": {
                    "document_title": {
                      "description": "Title for a LinkedIn PDF/document post.",
                      "type": "string"
                    },
                    "linkedin_document_title": {
                      "description": "Title for a LinkedIn PDF/document post. Alias for document_title.",
                      "type": "string"
                    },
                    "document_filename": {
                      "description": "Filename for a LinkedIn document post.",
                      "type": "string"
                    },
                    "mentions": {
                      "description": "LinkedIn organization mention objects.",
                      "type": "array",
                      "items": {}
                    },
                    "linkedin_mentions": {
                      "description": "LinkedIn organization mention objects. Alias for mentions.",
                      "type": "array",
                      "items": {}
                    },
                    "poll": {
                      "description": "LinkedIn poll: { question, options (2-4), duration (ONE_DAY|THREE_DAYS|SEVEN_DAYS|FOURTEEN_DAYS) }. Mutually exclusive with media.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "linkedin_poll": {
                      "description": "LinkedIn poll: { question, options (2-4), duration (ONE_DAY|THREE_DAYS|SEVEN_DAYS|FOURTEEN_DAYS) }. Mutually exclusive with media. Alias for poll.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "thumbnail_url": {
                      "description": "Custom video thumbnail URL.",
                      "type": "string"
                    },
                    "content_call_to_action_label": {
                      "description": "LinkedIn contentCallToActionLabel, including BUY_NOW and SHOP_NOW (version 202504). Pair with content_landing_page.",
                      "enum": [
                        "APPLY",
                        "DOWNLOAD",
                        "VIEW_QUOTE",
                        "LEARN_MORE",
                        "SIGN_UP",
                        "SUBSCRIBE",
                        "REGISTER",
                        "JOIN",
                        "ATTEND",
                        "REQUEST_DEMO",
                        "SEE_MORE",
                        "BUY_NOW",
                        "SHOP_NOW"
                      ],
                      "type": "string"
                    },
                    "cta_label": {
                      "description": "LinkedIn contentCallToActionLabel, including BUY_NOW and SHOP_NOW (version 202504). Pair with content_landing_page. Alias for content_call_to_action_label.",
                      "enum": [
                        "APPLY",
                        "DOWNLOAD",
                        "VIEW_QUOTE",
                        "LEARN_MORE",
                        "SIGN_UP",
                        "SUBSCRIBE",
                        "REGISTER",
                        "JOIN",
                        "ATTEND",
                        "REQUEST_DEMO",
                        "SEE_MORE",
                        "BUY_NOW",
                        "SHOP_NOW"
                      ],
                      "type": "string"
                    },
                    "linkedin_cta_label": {
                      "description": "LinkedIn contentCallToActionLabel, including BUY_NOW and SHOP_NOW (version 202504). Pair with content_landing_page. Alias for content_call_to_action_label.",
                      "enum": [
                        "APPLY",
                        "DOWNLOAD",
                        "VIEW_QUOTE",
                        "LEARN_MORE",
                        "SIGN_UP",
                        "SUBSCRIBE",
                        "REGISTER",
                        "JOIN",
                        "ATTEND",
                        "REQUEST_DEMO",
                        "SEE_MORE",
                        "BUY_NOW",
                        "SHOP_NOW"
                      ],
                      "type": "string"
                    },
                    "content_landing_page": {
                      "description": "Landing page URL sent as contentLandingPage with the LinkedIn call to action.",
                      "type": "string"
                    },
                    "cta_url": {
                      "description": "Landing page URL sent as contentLandingPage with the LinkedIn call to action. Alias for content_landing_page.",
                      "type": "string"
                    },
                    "linkedin_cta_url": {
                      "description": "Landing page URL sent as contentLandingPage with the LinkedIn call to action. Alias for content_landing_page.",
                      "type": "string"
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "document_title": "Launch plan",
                    "mentions": [
                      {
                        "display_name": "posterly",
                        "urn": "urn:li:organization:123"
                      }
                    ],
                    "poll": {
                      "question": "Which feature next?",
                      "options": [
                        "Polls",
                        "Analytics"
                      ],
                      "duration": "THREE_DAYS"
                    },
                    "content_call_to_action_label": "BUY_NOW",
                    "content_landing_page": "https://www.poster.ly"
                  }
                },
                {
                  "title": "YouTube settings",
                  "type": "object",
                  "properties": {
                    "title": {
                      "description": "YouTube video title.",
                      "type": "string"
                    },
                    "youtube_title": {
                      "description": "YouTube video title. Alias for title.",
                      "type": "string"
                    },
                    "thumbnail_url": {
                      "description": "Custom YouTube thumbnail URL.",
                      "type": "string"
                    },
                    "privacy_status": {
                      "description": "YouTube video visibility.",
                      "enum": [
                        "public",
                        "unlisted",
                        "private"
                      ],
                      "type": "string"
                    },
                    "privacy": {
                      "description": "YouTube video visibility. Alias for privacy_status.",
                      "enum": [
                        "public",
                        "unlisted",
                        "private"
                      ],
                      "type": "string"
                    },
                    "made_for_kids": {
                      "description": "YouTube made-for-kids declaration.",
                      "type": "boolean"
                    },
                    "tags": {
                      "description": "YouTube tags.",
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "category_id": {
                      "description": "YouTube category ID.",
                      "type": "string"
                    },
                    "notify_subscribers": {
                      "description": "Notify subscribers when the video publishes (default true).",
                      "type": "boolean"
                    },
                    "add_shorts_hashtag": {
                      "description": "Append #Shorts to the description for Shorts-feed eligibility (vertical clips).",
                      "type": "boolean"
                    },
                    "ai_generated": {
                      "description": "Label the video as containing AI/synthetic media (containsSyntheticMedia).",
                      "type": "boolean"
                    },
                    "ai_disclosure": {
                      "description": "Label the video as containing AI/synthetic media (containsSyntheticMedia). Alias for ai_generated.",
                      "type": "boolean"
                    },
                    "brand_partner": {
                      "description": "Optional YouTube brandPartner channel ID (UC…) or handle (@…). Added to videos.insert part=brandPartner when set.",
                      "type": "string"
                    },
                    "brandPartner": {
                      "description": "Optional YouTube brandPartner channel ID (UC…) or handle (@…). Added to videos.insert part=brandPartner when set. Alias for brand_partner.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "title"
                  ],
                  "additionalProperties": true,
                  "example": {
                    "title": "Launch walkthrough",
                    "privacy_status": "unlisted",
                    "notify_subscribers": false,
                    "add_shorts_hashtag": true,
                    "brand_partner": "@brand"
                  }
                },
                {
                  "title": "Pinterest settings",
                  "type": "object",
                  "properties": {
                    "board_id": {
                      "description": "Pinterest board ID from the pinterest.boards helper.",
                      "type": "string"
                    },
                    "pinterest_board_id": {
                      "description": "Pinterest board ID from the pinterest.boards helper. Alias for board_id.",
                      "type": "string"
                    },
                    "title": {
                      "description": "Pinterest Pin title.",
                      "type": "string"
                    },
                    "link": {
                      "description": "Destination URL for the Pin.",
                      "type": "string"
                    },
                    "destination_url": {
                      "description": "Destination URL for the Pin. Alias for link.",
                      "type": "string"
                    },
                    "cover_image_url": {
                      "description": "Required for video Pins: a stored, probe-verified JPEG or PNG cover URL (20 MiB maximum).",
                      "type": "string"
                    },
                    "video_cover_url": {
                      "description": "Required for video Pins: a stored, probe-verified JPEG or PNG cover URL (20 MiB maximum). Alias for cover_image_url.",
                      "type": "string"
                    },
                    "pinterest_cover_image_url": {
                      "description": "Required for video Pins: a stored, probe-verified JPEG or PNG cover URL (20 MiB maximum). Alias for cover_image_url.",
                      "type": "string"
                    },
                    "ai_generated": {
                      "description": "Label the Pin as AI-modified (ai_disclosures).",
                      "type": "boolean"
                    },
                    "ai_disclosure": {
                      "description": "Label the Pin as AI-modified (ai_disclosures). Alias for ai_generated.",
                      "type": "boolean"
                    },
                    "product_tags": {
                      "description": "Optional product tags on POST /v5/pins (product_id, optional x/y). Existing pins:write. Pin note is not written.",
                      "type": "array",
                      "items": {}
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "required": [
                    "board_id"
                  ],
                  "additionalProperties": true,
                  "example": {
                    "board_id": "123456789",
                    "title": "Launch ideas",
                    "link": "https://www.poster.ly",
                    "cover_image_url": "https://assets.poster.ly/users/123/pinterest-video-covers/cover.jpg",
                    "product_tags": [
                      {
                        "product_id": "123"
                      }
                    ]
                  }
                },
                {
                  "title": "Threads settings",
                  "type": "object",
                  "properties": {
                    "reply_control": {
                      "description": "Threads reply control setting.",
                      "enum": [
                        "everyone",
                        "accounts_you_follow",
                        "mentioned_only",
                        "followers_only",
                        "parent_post_author_only"
                      ],
                      "type": "string"
                    },
                    "threads_reply_control": {
                      "description": "Threads reply control setting. Alias for reply_control.",
                      "enum": [
                        "everyone",
                        "accounts_you_follow",
                        "mentioned_only",
                        "followers_only",
                        "parent_post_author_only"
                      ],
                      "type": "string"
                    },
                    "poll": {
                      "description": "Threads poll: { options (2-4) }. Text-only, fixed 24h duration.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "threads_poll": {
                      "description": "Threads poll: { options (2-4) }. Text-only, fixed 24h duration. Alias for poll.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "topic_tag": {
                      "description": "A single Threads topic tag (1-50 chars, no periods/ampersands).",
                      "type": "string"
                    },
                    "threads_topic_tag": {
                      "description": "A single Threads topic tag (1-50 chars, no periods/ampersands). Alias for topic_tag.",
                      "type": "string"
                    },
                    "text_attachment": {
                      "description": "Long-form Threads text attachment.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "threads_text_attachment": {
                      "description": "Long-form Threads text attachment. Alias for text_attachment.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "share_to_instagram": {
                      "description": "Also share the published post to the Instagram account linked to the Threads profile as a Story (dark card). Requires Instagram sharing enabled for the Threads profile in the Threads app.",
                      "type": "boolean"
                    },
                    "threads_share_to_instagram": {
                      "description": "Also share the published post to the Instagram account linked to the Threads profile as a Story (dark card). Requires Instagram sharing enabled for the Threads profile in the Threads app. Alias for share_to_instagram.",
                      "type": "boolean"
                    },
                    "is_ghost_post": {
                      "description": "Publish as a Threads ghost post. Text-only.",
                      "type": "boolean"
                    },
                    "threads_is_ghost_post": {
                      "description": "Publish as a Threads ghost post. Text-only. Alias for is_ghost_post.",
                      "type": "boolean"
                    },
                    "is_spoiler": {
                      "description": "Mark the Threads post as a spoiler (full-caption text entity and/or is_spoiler_media).",
                      "type": "boolean"
                    },
                    "threads_is_spoiler": {
                      "description": "Mark the Threads post as a spoiler (full-caption text entity and/or is_spoiler_media). Alias for is_spoiler.",
                      "type": "boolean"
                    },
                    "is_spoiler_media": {
                      "description": "Set is_spoiler_media on the Threads container when media is attached.",
                      "type": "boolean"
                    },
                    "threads_is_spoiler_media": {
                      "description": "Set is_spoiler_media on the Threads container when media is attached. Alias for is_spoiler_media.",
                      "type": "boolean"
                    },
                    "text_entities": {
                      "description": "Threads text_entities, for example spoiler ranges with entity_type, offset, and length.",
                      "type": "array",
                      "items": {}
                    },
                    "threads_text_entities": {
                      "description": "Threads text_entities, for example spoiler ranges with entity_type, offset, and length. Alias for text_entities.",
                      "type": "array",
                      "items": {}
                    },
                    "enable_reply_approvals": {
                      "description": "Require approval before replies appear (enable_reply_approvals).",
                      "type": "boolean"
                    },
                    "threads_enable_reply_approvals": {
                      "description": "Require approval before replies appear (enable_reply_approvals). Alias for enable_reply_approvals.",
                      "type": "boolean"
                    },
                    "gif_attachment": {
                      "description": "GIPHY gif_attachment: { gif_id, provider: \"GIPHY\" }. Tenor is not supported.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "threads_gif_attachment": {
                      "description": "GIPHY gif_attachment: { gif_id, provider: \"GIPHY\" }. Tenor is not supported. Alias for gif_attachment.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "reply_control": "everyone",
                    "poll": {
                      "options": [
                        "Polls",
                        "Analytics"
                      ]
                    },
                    "topic_tag": "producthunt",
                    "is_ghost_post": false,
                    "enable_reply_approvals": true
                  }
                },
                {
                  "title": "Google Business settings",
                  "type": "object",
                  "properties": {
                    "post_type": {
                      "description": "Google Business Profile post type.",
                      "enum": [
                        "STANDARD",
                        "EVENT",
                        "OFFER"
                      ],
                      "type": "string"
                    },
                    "topic_type": {
                      "description": "Google Business Profile post type. Alias for post_type.",
                      "enum": [
                        "STANDARD",
                        "EVENT",
                        "OFFER"
                      ],
                      "type": "string"
                    },
                    "event": {
                      "description": "Event title and start/end date/time.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "offer": {
                      "description": "Offer coupon, redeem URL, and terms.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "cta": {
                      "description": "CTA type and URL.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "recurrence": {
                      "description": "EVENT/OFFER recurrenceInfo: { type: DAILY|WEEKLY|MONTHLY, series_end_time? }. Keeps one-off scheduledTime.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "recurrenceInfo": {
                      "description": "EVENT/OFFER recurrenceInfo: { type: DAILY|WEEKLY|MONTHLY, series_end_time? }. Keeps one-off scheduledTime. Alias for recurrence.",
                      "type": "object",
                      "additionalProperties": true
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "post_type": "EVENT",
                    "event": {
                      "title": "Launch night",
                      "start_date": "2026-09-01"
                    },
                    "recurrence": {
                      "type": "WEEKLY",
                      "series_end_time": "2026-12-01T00:00:00Z"
                    },
                    "cta": {
                      "type": "LEARN_MORE",
                      "url": "https://www.poster.ly"
                    }
                  }
                },
                {
                  "title": "Telegram settings",
                  "type": "object",
                  "properties": {
                    "parse_mode": {
                      "description": "Telegram caption parse mode when supported.",
                      "enum": [
                        "HTML",
                        "MarkdownV2"
                      ],
                      "type": "string"
                    },
                    "disable_web_page_preview": {
                      "description": "Disable link previews for text posts.",
                      "type": "boolean"
                    },
                    "poll": {
                      "description": "Telegram native poll: { question, options (2-10), allows_multiple_answers? }.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "telegram_poll": {
                      "description": "Telegram native poll: { question, options (2-10), allows_multiple_answers? }. Alias for poll.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "buttons": {
                      "description": "Inline CTA buttons: [{ text, url }] (up to 3).",
                      "type": "array",
                      "items": {}
                    },
                    "telegram_buttons": {
                      "description": "Inline CTA buttons: [{ text, url }] (up to 3). Alias for buttons.",
                      "type": "array",
                      "items": {}
                    },
                    "video_cover_url": {
                      "description": "Cover image URL for sendVideo (Bot API cover).",
                      "type": "string"
                    },
                    "cover_url": {
                      "description": "Cover image URL for sendVideo (Bot API cover). Alias for video_cover_url.",
                      "type": "string"
                    },
                    "telegram_video_cover_url": {
                      "description": "Cover image URL for sendVideo (Bot API cover). Alias for video_cover_url.",
                      "type": "string"
                    },
                    "start_timestamp": {
                      "description": "Video start timestamp in seconds for sendVideo (Bot API start_timestamp).",
                      "type": "number"
                    },
                    "telegram_start_timestamp": {
                      "description": "Video start timestamp in seconds for sendVideo (Bot API start_timestamp). Alias for start_timestamp.",
                      "type": "number"
                    },
                    "is_live_photo": {
                      "description": "Send as sendLivePhoto when both a still image and a video are attached.",
                      "type": "boolean"
                    },
                    "telegram_is_live_photo": {
                      "description": "Send as sendLivePhoto when both a still image and a video are attached. Alias for is_live_photo.",
                      "type": "boolean"
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "poll": {
                      "question": "Which feature next?",
                      "options": [
                        "Polls",
                        "Analytics"
                      ]
                    },
                    "buttons": [
                      {
                        "text": "Read more",
                        "url": "https://www.poster.ly"
                      }
                    ],
                    "video_cover_url": "https://example.com/cover.jpg"
                  }
                },
                {
                  "title": "Bluesky settings",
                  "type": "object",
                  "properties": {
                    "langs": {
                      "description": "Language tags for the Bluesky post.",
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "content_label": {
                      "description": "Self-applied content warning (tap-to-reveal).",
                      "enum": [
                        "sexual",
                        "nudity",
                        "porn",
                        "graphic-media"
                      ],
                      "type": "string"
                    },
                    "content_warning": {
                      "description": "Self-applied content warning (tap-to-reveal). Alias for content_label.",
                      "enum": [
                        "sexual",
                        "nudity",
                        "porn",
                        "graphic-media"
                      ],
                      "type": "string"
                    },
                    "tags": {
                      "description": "Up to 8 hidden discovery tags (separate from in-text hashtags).",
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "bluesky_tags": {
                      "description": "Up to 8 hidden discovery tags (separate from in-text hashtags). Alias for tags.",
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "quote_url": {
                      "description": "A Bluesky post URL (or AT-URI) to quote.",
                      "type": "string"
                    },
                    "quote": {
                      "description": "A Bluesky post URL (or AT-URI) to quote. Alias for quote_url.",
                      "type": "string"
                    },
                    "bluesky_quote_url": {
                      "description": "A Bluesky post URL (or AT-URI) to quote. Alias for quote_url.",
                      "type": "string"
                    },
                    "disable_quotes": {
                      "description": "Prevent others from quote-posting this post (postgate).",
                      "type": "boolean"
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "langs": [
                      "en"
                    ],
                    "tags": [
                      "producthunt",
                      "launch"
                    ],
                    "quote_url": "https://bsky.app/profile/poster.ly/post/abc123"
                  }
                },
                {
                  "title": "Discord settings",
                  "type": "object",
                  "properties": {
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "media_alt_texts": {
                      "https://example.com/chart.png": "Q2 revenue chart"
                    }
                  }
                },
                {
                  "title": "Slack settings",
                  "type": "object",
                  "properties": {
                    "markdown": {
                      "description": "Send the caption as a Block Kit markdown block on chat.postMessage.",
                      "type": "boolean"
                    },
                    "slack_markdown": {
                      "description": "Send the caption as a Block Kit markdown block on chat.postMessage. Alias for markdown.",
                      "type": "boolean"
                    },
                    "blocks": {
                      "description": "Optional Block Kit blocks (markdown, card, or carousel) passed to chat.postMessage. File upload still uses getUploadURLExternal.",
                      "type": "array",
                      "items": {}
                    },
                    "slack_blocks": {
                      "description": "Optional Block Kit blocks (markdown, card, or carousel) passed to chat.postMessage. File upload still uses getUploadURLExternal. Alias for blocks.",
                      "type": "array",
                      "items": {}
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "markdown": true
                  }
                },
                {
                  "title": "Mastodon settings",
                  "type": "object",
                  "properties": {
                    "visibility": {
                      "description": "Status visibility (private means followers only).",
                      "enum": [
                        "public",
                        "unlisted",
                        "private"
                      ],
                      "type": "string"
                    },
                    "mastodon_visibility": {
                      "description": "Status visibility (private means followers only). Alias for visibility.",
                      "enum": [
                        "public",
                        "unlisted",
                        "private"
                      ],
                      "type": "string"
                    },
                    "spoiler_text": {
                      "description": "Content warning shown before the post is revealed (marks media sensitive).",
                      "type": "string"
                    },
                    "content_warning": {
                      "description": "Content warning shown before the post is revealed (marks media sensitive). Alias for spoiler_text.",
                      "type": "string"
                    },
                    "mastodon_spoiler_text": {
                      "description": "Content warning shown before the post is revealed (marks media sensitive). Alias for spoiler_text.",
                      "type": "string"
                    },
                    "language": {
                      "description": "ISO 639 language code for the status.",
                      "type": "string"
                    },
                    "mastodon_language": {
                      "description": "ISO 639 language code for the status. Alias for language.",
                      "type": "string"
                    },
                    "quoted_status_id": {
                      "description": "Mastodon status ID to quote (4.5+ quoted_status_id).",
                      "type": "string"
                    },
                    "quote_id": {
                      "description": "Mastodon status ID to quote (4.5+ quoted_status_id). Alias for quoted_status_id.",
                      "type": "string"
                    },
                    "mastodon_quoted_status_id": {
                      "description": "Mastodon status ID to quote (4.5+ quoted_status_id). Alias for quoted_status_id.",
                      "type": "string"
                    },
                    "poll": {
                      "description": "Mastodon poll: { options (2-4), expires_in seconds, multiple? }. Media and a poll can be combined on Mastodon 4.6+.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "mastodon_poll": {
                      "description": "Mastodon poll: { options (2-4), expires_in seconds, multiple? }. Media and a poll can be combined on Mastodon 4.6+. Alias for poll.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "visibility": "public",
                    "spoiler_text": "Launch spoilers",
                    "language": "en",
                    "quoted_status_id": "123",
                    "poll": {
                      "options": [
                        "Yes",
                        "No"
                      ],
                      "expires_in": 86400
                    }
                  }
                },
                {
                  "title": "Dev.to settings",
                  "type": "object",
                  "properties": {
                    "title": {
                      "description": "Article title. Falls back to the first line of the caption.",
                      "type": "string"
                    },
                    "devto_title": {
                      "description": "Article title. Falls back to the first line of the caption. Alias for title.",
                      "type": "string"
                    },
                    "tags": {
                      "description": "Up to 4 tags (lowercase alphanumeric).",
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "devto_tags": {
                      "description": "Up to 4 tags (lowercase alphanumeric). Alias for tags.",
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "canonical_url": {
                      "description": "Canonical URL when cross-posting from your own blog.",
                      "type": "string"
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "title": "How we ship 18 platforms",
                    "tags": [
                      "webdev",
                      "saas"
                    ]
                  }
                },
                {
                  "title": "Hashnode settings",
                  "type": "object",
                  "properties": {
                    "title": {
                      "description": "Post title. Falls back to the first line of the caption.",
                      "type": "string"
                    },
                    "hashnode_title": {
                      "description": "Post title. Falls back to the first line of the caption. Alias for title.",
                      "type": "string"
                    },
                    "tags": {
                      "description": "Up to 4 tags (lowercase alphanumeric).",
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "hashnode_tags": {
                      "description": "Up to 4 tags (lowercase alphanumeric). Alias for tags.",
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "publication_id": {
                      "description": "Target publication. Defaults to the account blog captured at connect time.",
                      "type": "string"
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "title": "How we ship 18 platforms",
                    "tags": [
                      "webdev",
                      "saas"
                    ]
                  }
                },
                {
                  "title": "WordPress settings",
                  "type": "object",
                  "properties": {
                    "title": {
                      "description": "Post title. Falls back to the first line of the caption.",
                      "type": "string"
                    },
                    "wordpress_title": {
                      "description": "Post title. Falls back to the first line of the caption. Alias for title.",
                      "type": "string"
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "title": "How we ship 18 platforms"
                  }
                },
                {
                  "title": "Lemmy settings",
                  "type": "object",
                  "properties": {
                    "community": {
                      "description": "Target community, e.g. technology or technology@lemmy.world.",
                      "type": "string"
                    },
                    "lemmy_community": {
                      "description": "Target community, e.g. technology or technology@lemmy.world. Alias for community.",
                      "type": "string"
                    },
                    "title": {
                      "description": "Post title. Falls back to the first line of the caption.",
                      "type": "string"
                    },
                    "lemmy_title": {
                      "description": "Post title. Falls back to the first line of the caption. Alias for title.",
                      "type": "string"
                    },
                    "url": {
                      "description": "Link post URL. Defaults to the first attached image.",
                      "type": "string"
                    },
                    "lemmy_url": {
                      "description": "Link post URL. Defaults to the first attached image. Alias for url.",
                      "type": "string"
                    },
                    "nsfw": {
                      "description": "Mark the post NSFW.",
                      "type": "boolean"
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "required": [
                    "community"
                  ],
                  "additionalProperties": true,
                  "example": {
                    "community": "selfhosted@lemmy.world",
                    "title": "posterly now posts to Lemmy"
                  }
                }
              ],
              "additionalProperties": true
            },
            "settings": {
              "type": "object",
              "description": "Platform-specific composer controls. Call list_platforms or get_platform_schema for the selected account before sending settings.",
              "oneOf": [
                {
                  "title": "Instagram settings",
                  "type": "object",
                  "properties": {
                    "__type": {
                      "description": "Instagram account type hint.",
                      "enum": [
                        "instagram",
                        "instagram-standalone"
                      ],
                      "type": "string"
                    },
                    "post_type": {
                      "description": "Instagram publishing format.",
                      "enum": [
                        "post",
                        "feed",
                        "story",
                        "reel",
                        "carousel"
                      ],
                      "type": "string"
                    },
                    "is_trial_reel": {
                      "description": "Request an Instagram Trial Reel when the account supports it.",
                      "type": "boolean"
                    },
                    "trial_reel": {
                      "description": "Request an Instagram Trial Reel when the account supports it. Alias for is_trial_reel.",
                      "type": "boolean"
                    },
                    "graduation_strategy": {
                      "description": "Trial Reel graduation strategy.",
                      "enum": [
                        "MANUAL",
                        "SS_PERFORMANCE"
                      ],
                      "type": "string"
                    },
                    "collaborators": {
                      "description": "Native co-author invitations. Meta-linked Instagram accounts only; feed images, Reels, and carousels; maximum 3; not Stories.",
                      "type": "array",
                      "items": {}
                    },
                    "user_tags": {
                      "description": "Native clickable media tags, not caption @mentions. Supported by eligible direct Instagram and Meta-linked connections; feed images, Reels/video, and Stories. Tags apply to each carousel child and the first Story in a Story Series.",
                      "type": "array",
                      "items": {}
                    },
                    "first_comment": {
                      "description": "First comment to publish after the post.",
                      "type": "string"
                    },
                    "reel_cover_url": {
                      "description": "Custom Reel cover image URL.",
                      "type": "string"
                    },
                    "cover_url": {
                      "description": "Custom Reel cover image URL. Alias for reel_cover_url.",
                      "type": "string"
                    },
                    "reel_thumb_offset": {
                      "description": "Video timestamp, in milliseconds, for a generated Reel thumbnail.",
                      "type": "number"
                    },
                    "thumb_offset": {
                      "description": "Video timestamp, in milliseconds, for a generated Reel thumbnail. Alias for reel_thumb_offset.",
                      "type": "number"
                    },
                    "is_ai_generated": {
                      "description": "Label the parent media container as AI-generated (is_ai_generated). For carousels, set this on the parent only, never on child slides.",
                      "type": "boolean"
                    },
                    "instagram_is_ai_generated": {
                      "description": "Label the parent media container as AI-generated (is_ai_generated). For carousels, set this on the parent only, never on child slides. Alias for is_ai_generated.",
                      "type": "boolean"
                    },
                    "ai_generated": {
                      "description": "Label the parent media container as AI-generated (is_ai_generated). For carousels, set this on the parent only, never on child slides. Alias for is_ai_generated.",
                      "type": "boolean"
                    },
                    "audio_id": {
                      "description": "Licensed Instagram audio ID for Reels (audio_configuration.audio_id). Meta-linked Facebook Login accounts only; hidden for Instagram Login.",
                      "type": "string"
                    },
                    "instagram_audio_id": {
                      "description": "Licensed Instagram audio ID for Reels (audio_configuration.audio_id). Meta-linked Facebook Login accounts only; hidden for Instagram Login. Alias for audio_id.",
                      "type": "string"
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "__type": "instagram",
                    "post_type": "reel",
                    "first_comment": "Full details in the caption.",
                    "is_ai_generated": true
                  }
                },
                {
                  "title": "Facebook settings",
                  "type": "object",
                  "properties": {
                    "post_type": {
                      "description": "Facebook publishing format. Reel uses the Graph Reels API and must be 90 seconds or shorter; use video for longer clips. A 90.0 second Reel is allowed.",
                      "enum": [
                        "post",
                        "feed",
                        "story",
                        "reel",
                        "cover_photo"
                      ],
                      "type": "string"
                    },
                    "text_format_preset_id": {
                      "description": "Styled text post background preset.",
                      "type": "string"
                    },
                    "background_preset_id": {
                      "description": "Styled text post background preset. Alias for text_format_preset_id.",
                      "type": "string"
                    },
                    "reel_cover_url": {
                      "description": "Custom Reel cover image URL.",
                      "type": "string"
                    },
                    "cover_url": {
                      "description": "Custom Reel cover image URL. Alias for reel_cover_url.",
                      "type": "string"
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "post_type": "reel",
                    "reel_cover_url": "https://example.com/cover.jpg"
                  }
                },
                {
                  "title": "TikTok settings",
                  "type": "object",
                  "properties": {
                    "privacy_level": {
                      "description": "TikTok direct-post privacy level from the creator info helper.",
                      "type": "string"
                    },
                    "allow_comment": {
                      "description": "Allow comments when direct posting.",
                      "type": "boolean"
                    },
                    "allow_duet": {
                      "description": "Allow duets when direct posting.",
                      "type": "boolean"
                    },
                    "allow_stitch": {
                      "description": "Allow stitches when direct posting.",
                      "type": "boolean"
                    },
                    "title": {
                      "description": "TikTok title/caption field.",
                      "type": "string"
                    },
                    "media_type": {
                      "description": "Set to PHOTO for TikTok photo posts or multi-photo slideshows.",
                      "enum": [
                        "PHOTO"
                      ],
                      "type": "string"
                    },
                    "photo_cover_index": {
                      "description": "Zero-based cover image index for TikTok photo posts.",
                      "type": "number"
                    },
                    "video_cover_timestamp_ms": {
                      "description": "Millisecond timestamp of the video frame to use as the cover (direct post only).",
                      "type": "number"
                    },
                    "cover_timestamp_ms": {
                      "description": "Millisecond timestamp of the video frame to use as the cover (direct post only). Alias for video_cover_timestamp_ms.",
                      "type": "number"
                    },
                    "auto_add_music": {
                      "description": "Ask TikTok to add recommended music to photo posts when direct posting.",
                      "type": "boolean"
                    },
                    "is_commercial_content": {
                      "description": "TikTok commercial content disclosure.",
                      "type": "boolean"
                    },
                    "is_your_brand": {
                      "description": "TikTok branded content: your own brand.",
                      "type": "boolean"
                    },
                    "is_branded_content": {
                      "description": "TikTok branded content: third-party brand.",
                      "type": "boolean"
                    },
                    "ai_generated": {
                      "description": "Label the post as AI-generated (TikTok is_aigc).",
                      "type": "boolean"
                    },
                    "ai_disclosure": {
                      "description": "Label the post as AI-generated (TikTok is_aigc). Alias for ai_generated.",
                      "type": "boolean"
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "privacy_level": "PUBLIC_TO_EVERYONE",
                    "media_type": "PHOTO",
                    "photo_cover_index": 0,
                    "auto_add_music": true,
                    "allow_comment": true,
                    "allow_duet": false,
                    "allow_stitch": false,
                    "video_cover_timestamp_ms": 1500
                  }
                },
                {
                  "title": "X settings",
                  "type": "object",
                  "properties": {
                    "reply_settings": {
                      "description": "Who can reply to the post.",
                      "enum": [
                        "everyone",
                        "following",
                        "mentionedUsers",
                        "subscribers",
                        "verified"
                      ],
                      "type": "string"
                    },
                    "x_reply_settings": {
                      "description": "Who can reply to the post. Alias for reply_settings.",
                      "enum": [
                        "everyone",
                        "following",
                        "mentionedUsers",
                        "subscribers",
                        "verified"
                      ],
                      "type": "string"
                    },
                    "poll": {
                      "description": "X poll settings: options and duration_minutes.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "x_poll": {
                      "description": "X poll settings: options and duration_minutes. Alias for poll.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "ai_generated": {
                      "description": "Label the post as AI-generated (X made_with_ai).",
                      "type": "boolean"
                    },
                    "ai_disclosure": {
                      "description": "Label the post as AI-generated (X made_with_ai). Alias for ai_generated.",
                      "type": "boolean"
                    },
                    "made_with_ai": {
                      "description": "Label the post as AI-generated (X made_with_ai). Alias for ai_generated.",
                      "type": "boolean"
                    },
                    "paid_partnership": {
                      "description": "Mark the post as a paid partnership (POST /2/tweets paid_partnership). Existing tweet.write.",
                      "type": "boolean"
                    },
                    "x_paid_partnership": {
                      "description": "Mark the post as a paid partnership (POST /2/tweets paid_partnership). Existing tweet.write. Alias for paid_partnership.",
                      "type": "boolean"
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "reply_settings": "following",
                    "poll": {
                      "options": [
                        "Yes",
                        "No"
                      ],
                      "duration_minutes": 1440
                    },
                    "paid_partnership": true
                  }
                },
                {
                  "title": "LinkedIn settings",
                  "type": "object",
                  "properties": {
                    "document_title": {
                      "description": "Title for a LinkedIn PDF/document post.",
                      "type": "string"
                    },
                    "linkedin_document_title": {
                      "description": "Title for a LinkedIn PDF/document post. Alias for document_title.",
                      "type": "string"
                    },
                    "document_filename": {
                      "description": "Filename for a LinkedIn document post.",
                      "type": "string"
                    },
                    "mentions": {
                      "description": "LinkedIn organization mention objects.",
                      "type": "array",
                      "items": {}
                    },
                    "linkedin_mentions": {
                      "description": "LinkedIn organization mention objects. Alias for mentions.",
                      "type": "array",
                      "items": {}
                    },
                    "poll": {
                      "description": "LinkedIn poll: { question, options (2-4), duration (ONE_DAY|THREE_DAYS|SEVEN_DAYS|FOURTEEN_DAYS) }. Mutually exclusive with media.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "linkedin_poll": {
                      "description": "LinkedIn poll: { question, options (2-4), duration (ONE_DAY|THREE_DAYS|SEVEN_DAYS|FOURTEEN_DAYS) }. Mutually exclusive with media. Alias for poll.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "thumbnail_url": {
                      "description": "Custom video thumbnail URL.",
                      "type": "string"
                    },
                    "content_call_to_action_label": {
                      "description": "LinkedIn contentCallToActionLabel, including BUY_NOW and SHOP_NOW (version 202504). Pair with content_landing_page.",
                      "enum": [
                        "APPLY",
                        "DOWNLOAD",
                        "VIEW_QUOTE",
                        "LEARN_MORE",
                        "SIGN_UP",
                        "SUBSCRIBE",
                        "REGISTER",
                        "JOIN",
                        "ATTEND",
                        "REQUEST_DEMO",
                        "SEE_MORE",
                        "BUY_NOW",
                        "SHOP_NOW"
                      ],
                      "type": "string"
                    },
                    "cta_label": {
                      "description": "LinkedIn contentCallToActionLabel, including BUY_NOW and SHOP_NOW (version 202504). Pair with content_landing_page. Alias for content_call_to_action_label.",
                      "enum": [
                        "APPLY",
                        "DOWNLOAD",
                        "VIEW_QUOTE",
                        "LEARN_MORE",
                        "SIGN_UP",
                        "SUBSCRIBE",
                        "REGISTER",
                        "JOIN",
                        "ATTEND",
                        "REQUEST_DEMO",
                        "SEE_MORE",
                        "BUY_NOW",
                        "SHOP_NOW"
                      ],
                      "type": "string"
                    },
                    "linkedin_cta_label": {
                      "description": "LinkedIn contentCallToActionLabel, including BUY_NOW and SHOP_NOW (version 202504). Pair with content_landing_page. Alias for content_call_to_action_label.",
                      "enum": [
                        "APPLY",
                        "DOWNLOAD",
                        "VIEW_QUOTE",
                        "LEARN_MORE",
                        "SIGN_UP",
                        "SUBSCRIBE",
                        "REGISTER",
                        "JOIN",
                        "ATTEND",
                        "REQUEST_DEMO",
                        "SEE_MORE",
                        "BUY_NOW",
                        "SHOP_NOW"
                      ],
                      "type": "string"
                    },
                    "content_landing_page": {
                      "description": "Landing page URL sent as contentLandingPage with the LinkedIn call to action.",
                      "type": "string"
                    },
                    "cta_url": {
                      "description": "Landing page URL sent as contentLandingPage with the LinkedIn call to action. Alias for content_landing_page.",
                      "type": "string"
                    },
                    "linkedin_cta_url": {
                      "description": "Landing page URL sent as contentLandingPage with the LinkedIn call to action. Alias for content_landing_page.",
                      "type": "string"
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "document_title": "Launch plan",
                    "mentions": [
                      {
                        "display_name": "posterly",
                        "urn": "urn:li:organization:123"
                      }
                    ],
                    "poll": {
                      "question": "Which feature next?",
                      "options": [
                        "Polls",
                        "Analytics"
                      ],
                      "duration": "THREE_DAYS"
                    },
                    "content_call_to_action_label": "BUY_NOW",
                    "content_landing_page": "https://www.poster.ly"
                  }
                },
                {
                  "title": "YouTube settings",
                  "type": "object",
                  "properties": {
                    "title": {
                      "description": "YouTube video title.",
                      "type": "string"
                    },
                    "youtube_title": {
                      "description": "YouTube video title. Alias for title.",
                      "type": "string"
                    },
                    "thumbnail_url": {
                      "description": "Custom YouTube thumbnail URL.",
                      "type": "string"
                    },
                    "privacy_status": {
                      "description": "YouTube video visibility.",
                      "enum": [
                        "public",
                        "unlisted",
                        "private"
                      ],
                      "type": "string"
                    },
                    "privacy": {
                      "description": "YouTube video visibility. Alias for privacy_status.",
                      "enum": [
                        "public",
                        "unlisted",
                        "private"
                      ],
                      "type": "string"
                    },
                    "made_for_kids": {
                      "description": "YouTube made-for-kids declaration.",
                      "type": "boolean"
                    },
                    "tags": {
                      "description": "YouTube tags.",
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "category_id": {
                      "description": "YouTube category ID.",
                      "type": "string"
                    },
                    "notify_subscribers": {
                      "description": "Notify subscribers when the video publishes (default true).",
                      "type": "boolean"
                    },
                    "add_shorts_hashtag": {
                      "description": "Append #Shorts to the description for Shorts-feed eligibility (vertical clips).",
                      "type": "boolean"
                    },
                    "ai_generated": {
                      "description": "Label the video as containing AI/synthetic media (containsSyntheticMedia).",
                      "type": "boolean"
                    },
                    "ai_disclosure": {
                      "description": "Label the video as containing AI/synthetic media (containsSyntheticMedia). Alias for ai_generated.",
                      "type": "boolean"
                    },
                    "brand_partner": {
                      "description": "Optional YouTube brandPartner channel ID (UC…) or handle (@…). Added to videos.insert part=brandPartner when set.",
                      "type": "string"
                    },
                    "brandPartner": {
                      "description": "Optional YouTube brandPartner channel ID (UC…) or handle (@…). Added to videos.insert part=brandPartner when set. Alias for brand_partner.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "title"
                  ],
                  "additionalProperties": true,
                  "example": {
                    "title": "Launch walkthrough",
                    "privacy_status": "unlisted",
                    "notify_subscribers": false,
                    "add_shorts_hashtag": true,
                    "brand_partner": "@brand"
                  }
                },
                {
                  "title": "Pinterest settings",
                  "type": "object",
                  "properties": {
                    "board_id": {
                      "description": "Pinterest board ID from the pinterest.boards helper.",
                      "type": "string"
                    },
                    "pinterest_board_id": {
                      "description": "Pinterest board ID from the pinterest.boards helper. Alias for board_id.",
                      "type": "string"
                    },
                    "title": {
                      "description": "Pinterest Pin title.",
                      "type": "string"
                    },
                    "link": {
                      "description": "Destination URL for the Pin.",
                      "type": "string"
                    },
                    "destination_url": {
                      "description": "Destination URL for the Pin. Alias for link.",
                      "type": "string"
                    },
                    "cover_image_url": {
                      "description": "Required for video Pins: a stored, probe-verified JPEG or PNG cover URL (20 MiB maximum).",
                      "type": "string"
                    },
                    "video_cover_url": {
                      "description": "Required for video Pins: a stored, probe-verified JPEG or PNG cover URL (20 MiB maximum). Alias for cover_image_url.",
                      "type": "string"
                    },
                    "pinterest_cover_image_url": {
                      "description": "Required for video Pins: a stored, probe-verified JPEG or PNG cover URL (20 MiB maximum). Alias for cover_image_url.",
                      "type": "string"
                    },
                    "ai_generated": {
                      "description": "Label the Pin as AI-modified (ai_disclosures).",
                      "type": "boolean"
                    },
                    "ai_disclosure": {
                      "description": "Label the Pin as AI-modified (ai_disclosures). Alias for ai_generated.",
                      "type": "boolean"
                    },
                    "product_tags": {
                      "description": "Optional product tags on POST /v5/pins (product_id, optional x/y). Existing pins:write. Pin note is not written.",
                      "type": "array",
                      "items": {}
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "required": [
                    "board_id"
                  ],
                  "additionalProperties": true,
                  "example": {
                    "board_id": "123456789",
                    "title": "Launch ideas",
                    "link": "https://www.poster.ly",
                    "cover_image_url": "https://assets.poster.ly/users/123/pinterest-video-covers/cover.jpg",
                    "product_tags": [
                      {
                        "product_id": "123"
                      }
                    ]
                  }
                },
                {
                  "title": "Threads settings",
                  "type": "object",
                  "properties": {
                    "reply_control": {
                      "description": "Threads reply control setting.",
                      "enum": [
                        "everyone",
                        "accounts_you_follow",
                        "mentioned_only",
                        "followers_only",
                        "parent_post_author_only"
                      ],
                      "type": "string"
                    },
                    "threads_reply_control": {
                      "description": "Threads reply control setting. Alias for reply_control.",
                      "enum": [
                        "everyone",
                        "accounts_you_follow",
                        "mentioned_only",
                        "followers_only",
                        "parent_post_author_only"
                      ],
                      "type": "string"
                    },
                    "poll": {
                      "description": "Threads poll: { options (2-4) }. Text-only, fixed 24h duration.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "threads_poll": {
                      "description": "Threads poll: { options (2-4) }. Text-only, fixed 24h duration. Alias for poll.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "topic_tag": {
                      "description": "A single Threads topic tag (1-50 chars, no periods/ampersands).",
                      "type": "string"
                    },
                    "threads_topic_tag": {
                      "description": "A single Threads topic tag (1-50 chars, no periods/ampersands). Alias for topic_tag.",
                      "type": "string"
                    },
                    "text_attachment": {
                      "description": "Long-form Threads text attachment.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "threads_text_attachment": {
                      "description": "Long-form Threads text attachment. Alias for text_attachment.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "share_to_instagram": {
                      "description": "Also share the published post to the Instagram account linked to the Threads profile as a Story (dark card). Requires Instagram sharing enabled for the Threads profile in the Threads app.",
                      "type": "boolean"
                    },
                    "threads_share_to_instagram": {
                      "description": "Also share the published post to the Instagram account linked to the Threads profile as a Story (dark card). Requires Instagram sharing enabled for the Threads profile in the Threads app. Alias for share_to_instagram.",
                      "type": "boolean"
                    },
                    "is_ghost_post": {
                      "description": "Publish as a Threads ghost post. Text-only.",
                      "type": "boolean"
                    },
                    "threads_is_ghost_post": {
                      "description": "Publish as a Threads ghost post. Text-only. Alias for is_ghost_post.",
                      "type": "boolean"
                    },
                    "is_spoiler": {
                      "description": "Mark the Threads post as a spoiler (full-caption text entity and/or is_spoiler_media).",
                      "type": "boolean"
                    },
                    "threads_is_spoiler": {
                      "description": "Mark the Threads post as a spoiler (full-caption text entity and/or is_spoiler_media). Alias for is_spoiler.",
                      "type": "boolean"
                    },
                    "is_spoiler_media": {
                      "description": "Set is_spoiler_media on the Threads container when media is attached.",
                      "type": "boolean"
                    },
                    "threads_is_spoiler_media": {
                      "description": "Set is_spoiler_media on the Threads container when media is attached. Alias for is_spoiler_media.",
                      "type": "boolean"
                    },
                    "text_entities": {
                      "description": "Threads text_entities, for example spoiler ranges with entity_type, offset, and length.",
                      "type": "array",
                      "items": {}
                    },
                    "threads_text_entities": {
                      "description": "Threads text_entities, for example spoiler ranges with entity_type, offset, and length. Alias for text_entities.",
                      "type": "array",
                      "items": {}
                    },
                    "enable_reply_approvals": {
                      "description": "Require approval before replies appear (enable_reply_approvals).",
                      "type": "boolean"
                    },
                    "threads_enable_reply_approvals": {
                      "description": "Require approval before replies appear (enable_reply_approvals). Alias for enable_reply_approvals.",
                      "type": "boolean"
                    },
                    "gif_attachment": {
                      "description": "GIPHY gif_attachment: { gif_id, provider: \"GIPHY\" }. Tenor is not supported.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "threads_gif_attachment": {
                      "description": "GIPHY gif_attachment: { gif_id, provider: \"GIPHY\" }. Tenor is not supported. Alias for gif_attachment.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "reply_control": "everyone",
                    "poll": {
                      "options": [
                        "Polls",
                        "Analytics"
                      ]
                    },
                    "topic_tag": "producthunt",
                    "is_ghost_post": false,
                    "enable_reply_approvals": true
                  }
                },
                {
                  "title": "Google Business settings",
                  "type": "object",
                  "properties": {
                    "post_type": {
                      "description": "Google Business Profile post type.",
                      "enum": [
                        "STANDARD",
                        "EVENT",
                        "OFFER"
                      ],
                      "type": "string"
                    },
                    "topic_type": {
                      "description": "Google Business Profile post type. Alias for post_type.",
                      "enum": [
                        "STANDARD",
                        "EVENT",
                        "OFFER"
                      ],
                      "type": "string"
                    },
                    "event": {
                      "description": "Event title and start/end date/time.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "offer": {
                      "description": "Offer coupon, redeem URL, and terms.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "cta": {
                      "description": "CTA type and URL.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "recurrence": {
                      "description": "EVENT/OFFER recurrenceInfo: { type: DAILY|WEEKLY|MONTHLY, series_end_time? }. Keeps one-off scheduledTime.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "recurrenceInfo": {
                      "description": "EVENT/OFFER recurrenceInfo: { type: DAILY|WEEKLY|MONTHLY, series_end_time? }. Keeps one-off scheduledTime. Alias for recurrence.",
                      "type": "object",
                      "additionalProperties": true
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "post_type": "EVENT",
                    "event": {
                      "title": "Launch night",
                      "start_date": "2026-09-01"
                    },
                    "recurrence": {
                      "type": "WEEKLY",
                      "series_end_time": "2026-12-01T00:00:00Z"
                    },
                    "cta": {
                      "type": "LEARN_MORE",
                      "url": "https://www.poster.ly"
                    }
                  }
                },
                {
                  "title": "Telegram settings",
                  "type": "object",
                  "properties": {
                    "parse_mode": {
                      "description": "Telegram caption parse mode when supported.",
                      "enum": [
                        "HTML",
                        "MarkdownV2"
                      ],
                      "type": "string"
                    },
                    "disable_web_page_preview": {
                      "description": "Disable link previews for text posts.",
                      "type": "boolean"
                    },
                    "poll": {
                      "description": "Telegram native poll: { question, options (2-10), allows_multiple_answers? }.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "telegram_poll": {
                      "description": "Telegram native poll: { question, options (2-10), allows_multiple_answers? }. Alias for poll.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "buttons": {
                      "description": "Inline CTA buttons: [{ text, url }] (up to 3).",
                      "type": "array",
                      "items": {}
                    },
                    "telegram_buttons": {
                      "description": "Inline CTA buttons: [{ text, url }] (up to 3). Alias for buttons.",
                      "type": "array",
                      "items": {}
                    },
                    "video_cover_url": {
                      "description": "Cover image URL for sendVideo (Bot API cover).",
                      "type": "string"
                    },
                    "cover_url": {
                      "description": "Cover image URL for sendVideo (Bot API cover). Alias for video_cover_url.",
                      "type": "string"
                    },
                    "telegram_video_cover_url": {
                      "description": "Cover image URL for sendVideo (Bot API cover). Alias for video_cover_url.",
                      "type": "string"
                    },
                    "start_timestamp": {
                      "description": "Video start timestamp in seconds for sendVideo (Bot API start_timestamp).",
                      "type": "number"
                    },
                    "telegram_start_timestamp": {
                      "description": "Video start timestamp in seconds for sendVideo (Bot API start_timestamp). Alias for start_timestamp.",
                      "type": "number"
                    },
                    "is_live_photo": {
                      "description": "Send as sendLivePhoto when both a still image and a video are attached.",
                      "type": "boolean"
                    },
                    "telegram_is_live_photo": {
                      "description": "Send as sendLivePhoto when both a still image and a video are attached. Alias for is_live_photo.",
                      "type": "boolean"
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "poll": {
                      "question": "Which feature next?",
                      "options": [
                        "Polls",
                        "Analytics"
                      ]
                    },
                    "buttons": [
                      {
                        "text": "Read more",
                        "url": "https://www.poster.ly"
                      }
                    ],
                    "video_cover_url": "https://example.com/cover.jpg"
                  }
                },
                {
                  "title": "Bluesky settings",
                  "type": "object",
                  "properties": {
                    "langs": {
                      "description": "Language tags for the Bluesky post.",
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "content_label": {
                      "description": "Self-applied content warning (tap-to-reveal).",
                      "enum": [
                        "sexual",
                        "nudity",
                        "porn",
                        "graphic-media"
                      ],
                      "type": "string"
                    },
                    "content_warning": {
                      "description": "Self-applied content warning (tap-to-reveal). Alias for content_label.",
                      "enum": [
                        "sexual",
                        "nudity",
                        "porn",
                        "graphic-media"
                      ],
                      "type": "string"
                    },
                    "tags": {
                      "description": "Up to 8 hidden discovery tags (separate from in-text hashtags).",
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "bluesky_tags": {
                      "description": "Up to 8 hidden discovery tags (separate from in-text hashtags). Alias for tags.",
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "quote_url": {
                      "description": "A Bluesky post URL (or AT-URI) to quote.",
                      "type": "string"
                    },
                    "quote": {
                      "description": "A Bluesky post URL (or AT-URI) to quote. Alias for quote_url.",
                      "type": "string"
                    },
                    "bluesky_quote_url": {
                      "description": "A Bluesky post URL (or AT-URI) to quote. Alias for quote_url.",
                      "type": "string"
                    },
                    "disable_quotes": {
                      "description": "Prevent others from quote-posting this post (postgate).",
                      "type": "boolean"
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "langs": [
                      "en"
                    ],
                    "tags": [
                      "producthunt",
                      "launch"
                    ],
                    "quote_url": "https://bsky.app/profile/poster.ly/post/abc123"
                  }
                },
                {
                  "title": "Discord settings",
                  "type": "object",
                  "properties": {
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "media_alt_texts": {
                      "https://example.com/chart.png": "Q2 revenue chart"
                    }
                  }
                },
                {
                  "title": "Slack settings",
                  "type": "object",
                  "properties": {
                    "markdown": {
                      "description": "Send the caption as a Block Kit markdown block on chat.postMessage.",
                      "type": "boolean"
                    },
                    "slack_markdown": {
                      "description": "Send the caption as a Block Kit markdown block on chat.postMessage. Alias for markdown.",
                      "type": "boolean"
                    },
                    "blocks": {
                      "description": "Optional Block Kit blocks (markdown, card, or carousel) passed to chat.postMessage. File upload still uses getUploadURLExternal.",
                      "type": "array",
                      "items": {}
                    },
                    "slack_blocks": {
                      "description": "Optional Block Kit blocks (markdown, card, or carousel) passed to chat.postMessage. File upload still uses getUploadURLExternal. Alias for blocks.",
                      "type": "array",
                      "items": {}
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "markdown": true
                  }
                },
                {
                  "title": "Mastodon settings",
                  "type": "object",
                  "properties": {
                    "visibility": {
                      "description": "Status visibility (private means followers only).",
                      "enum": [
                        "public",
                        "unlisted",
                        "private"
                      ],
                      "type": "string"
                    },
                    "mastodon_visibility": {
                      "description": "Status visibility (private means followers only). Alias for visibility.",
                      "enum": [
                        "public",
                        "unlisted",
                        "private"
                      ],
                      "type": "string"
                    },
                    "spoiler_text": {
                      "description": "Content warning shown before the post is revealed (marks media sensitive).",
                      "type": "string"
                    },
                    "content_warning": {
                      "description": "Content warning shown before the post is revealed (marks media sensitive). Alias for spoiler_text.",
                      "type": "string"
                    },
                    "mastodon_spoiler_text": {
                      "description": "Content warning shown before the post is revealed (marks media sensitive). Alias for spoiler_text.",
                      "type": "string"
                    },
                    "language": {
                      "description": "ISO 639 language code for the status.",
                      "type": "string"
                    },
                    "mastodon_language": {
                      "description": "ISO 639 language code for the status. Alias for language.",
                      "type": "string"
                    },
                    "quoted_status_id": {
                      "description": "Mastodon status ID to quote (4.5+ quoted_status_id).",
                      "type": "string"
                    },
                    "quote_id": {
                      "description": "Mastodon status ID to quote (4.5+ quoted_status_id). Alias for quoted_status_id.",
                      "type": "string"
                    },
                    "mastodon_quoted_status_id": {
                      "description": "Mastodon status ID to quote (4.5+ quoted_status_id). Alias for quoted_status_id.",
                      "type": "string"
                    },
                    "poll": {
                      "description": "Mastodon poll: { options (2-4), expires_in seconds, multiple? }. Media and a poll can be combined on Mastodon 4.6+.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "mastodon_poll": {
                      "description": "Mastodon poll: { options (2-4), expires_in seconds, multiple? }. Media and a poll can be combined on Mastodon 4.6+. Alias for poll.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "visibility": "public",
                    "spoiler_text": "Launch spoilers",
                    "language": "en",
                    "quoted_status_id": "123",
                    "poll": {
                      "options": [
                        "Yes",
                        "No"
                      ],
                      "expires_in": 86400
                    }
                  }
                },
                {
                  "title": "Dev.to settings",
                  "type": "object",
                  "properties": {
                    "title": {
                      "description": "Article title. Falls back to the first line of the caption.",
                      "type": "string"
                    },
                    "devto_title": {
                      "description": "Article title. Falls back to the first line of the caption. Alias for title.",
                      "type": "string"
                    },
                    "tags": {
                      "description": "Up to 4 tags (lowercase alphanumeric).",
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "devto_tags": {
                      "description": "Up to 4 tags (lowercase alphanumeric). Alias for tags.",
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "canonical_url": {
                      "description": "Canonical URL when cross-posting from your own blog.",
                      "type": "string"
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "title": "How we ship 18 platforms",
                    "tags": [
                      "webdev",
                      "saas"
                    ]
                  }
                },
                {
                  "title": "Hashnode settings",
                  "type": "object",
                  "properties": {
                    "title": {
                      "description": "Post title. Falls back to the first line of the caption.",
                      "type": "string"
                    },
                    "hashnode_title": {
                      "description": "Post title. Falls back to the first line of the caption. Alias for title.",
                      "type": "string"
                    },
                    "tags": {
                      "description": "Up to 4 tags (lowercase alphanumeric).",
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "hashnode_tags": {
                      "description": "Up to 4 tags (lowercase alphanumeric). Alias for tags.",
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "publication_id": {
                      "description": "Target publication. Defaults to the account blog captured at connect time.",
                      "type": "string"
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "title": "How we ship 18 platforms",
                    "tags": [
                      "webdev",
                      "saas"
                    ]
                  }
                },
                {
                  "title": "WordPress settings",
                  "type": "object",
                  "properties": {
                    "title": {
                      "description": "Post title. Falls back to the first line of the caption.",
                      "type": "string"
                    },
                    "wordpress_title": {
                      "description": "Post title. Falls back to the first line of the caption. Alias for title.",
                      "type": "string"
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "title": "How we ship 18 platforms"
                  }
                },
                {
                  "title": "Lemmy settings",
                  "type": "object",
                  "properties": {
                    "community": {
                      "description": "Target community, e.g. technology or technology@lemmy.world.",
                      "type": "string"
                    },
                    "lemmy_community": {
                      "description": "Target community, e.g. technology or technology@lemmy.world. Alias for community.",
                      "type": "string"
                    },
                    "title": {
                      "description": "Post title. Falls back to the first line of the caption.",
                      "type": "string"
                    },
                    "lemmy_title": {
                      "description": "Post title. Falls back to the first line of the caption. Alias for title.",
                      "type": "string"
                    },
                    "url": {
                      "description": "Link post URL. Defaults to the first attached image.",
                      "type": "string"
                    },
                    "lemmy_url": {
                      "description": "Link post URL. Defaults to the first attached image. Alias for url.",
                      "type": "string"
                    },
                    "nsfw": {
                      "description": "Mark the post NSFW.",
                      "type": "boolean"
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "required": [
                    "community"
                  ],
                  "additionalProperties": true,
                  "example": {
                    "community": "selfhosted@lemmy.world",
                    "title": "posterly now posts to Lemmy"
                  }
                }
              ],
              "additionalProperties": true
            },
            "workspace_id": {
              "type": "string",
              "description": "Workspace ID from whoami."
            },
            "metadata": {
              "type": "object",
              "additionalProperties": true
            },
            "confirm": {
              "type": "boolean",
              "description": "Must be true after the user explicitly confirms the post/account/workspace/schedule."
            }
          },
          "additionalProperties": false,
          "required": [
            "confirm"
          ]
        },
        "annotations": {
          "title": "Create Post",
          "readOnlyHint": false,
          "destructiveHint": false,
          "idempotentHint": false,
          "openWorldHint": true
        }
      },
      {
        "name": "create_posts_batch",
        "description": "Create 1-25 scheduled or immediate social posts in one API request. DESTRUCTIVE WRITE: show the user every post's account/platform, caption or thread text, scheduled time, media, settings, and workspace, then get explicit confirmation for the whole batch before calling. Third-party media URLs are copied into Posterly storage before each post is saved. Partial success is possible; failed items return their array index.",
        "inputSchema": {
          "type": "object",
          "required": [
            "posts",
            "confirm"
          ],
          "properties": {
            "posts": {
              "type": "array",
              "minItems": 1,
              "maxItems": 25,
              "items": {
                "type": "object",
                "properties": {
                  "account_id": {
                    "type": "string",
                    "description": "Social account ID from list_accounts."
                  },
                  "username": {
                    "type": "string",
                    "description": "Account username; requires platform."
                  },
                  "platform": {
                    "type": "string",
                    "enum": [
                      "instagram",
                      "facebook",
                      "tiktok",
                      "twitter",
                      "linkedin",
                      "youtube",
                      "pinterest",
                      "threads",
                      "google_business",
                      "telegram",
                      "bluesky",
                      "discord",
                      "slack",
                      "mastodon",
                      "devto",
                      "hashnode",
                      "wordpress",
                      "lemmy"
                    ],
                    "description": "Platform name when using username. Supported: instagram, facebook, tiktok, twitter, linkedin, youtube, pinterest, threads, google_business, telegram, bluesky, discord, slack, mastodon, devto, hashnode, wordpress, lemmy. Aliases x, gmb, and instagram-standalone are also accepted by the API."
                  },
                  "caption": {
                    "type": "string",
                    "description": "Post caption/text. On Instagram, @username creates a caption mention only; it is not a native media tag or collaborator invitation. Ignored when thread_posts is provided."
                  },
                  "scheduled_at": {
                    "type": "string",
                    "description": "ISO 8601 UTC datetime. Omit to publish immediately."
                  },
                  "media_url": {
                    "type": "string",
                    "format": "uri",
                    "description": "Media URL. Posterly storage URLs are used as-is; third-party HTTP(S) URLs are copied into Posterly storage before the post is saved. Short-lived signed URLs must still be live when this tool runs."
                  },
                  "media_urls": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "uri"
                    },
                    "description": "Media URLs. Posterly storage URLs are used as-is; third-party HTTP(S) URLs are copied into Posterly storage before the post is saved."
                  },
                  "post_type": {
                    "type": "string",
                    "enum": [
                      "text",
                      "image",
                      "document",
                      "video",
                      "reel",
                      "carousel",
                      "story",
                      "story_series",
                      "x_thread",
                      "threads_thread",
                      "photo",
                      "cover_photo",
                      "post",
                      "feed",
                      "feed-post",
                      "cover-photo",
                      "photos",
                      "stories",
                      "reels"
                    ],
                    "description": "Optional post type. Omit for auto-detection from media. Supported semantic values include text, image, video, carousel, reel, story, story_series, document, x_thread, threads_thread, photo, and cover_photo."
                  },
                  "thread_posts": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "For X or Threads: 2+ entries, one per post in the reply chain."
                  },
                  "platform_settings": {
                    "type": "object",
                    "description": "Platform-specific composer controls. Call list_platforms or get_platform_schema for the selected account before sending settings.",
                    "oneOf": [
                      {
                        "title": "Instagram settings",
                        "type": "object",
                        "properties": {
                          "__type": {
                            "description": "Instagram account type hint.",
                            "enum": [
                              "instagram",
                              "instagram-standalone"
                            ],
                            "type": "string"
                          },
                          "post_type": {
                            "description": "Instagram publishing format.",
                            "enum": [
                              "post",
                              "feed",
                              "story",
                              "reel",
                              "carousel"
                            ],
                            "type": "string"
                          },
                          "is_trial_reel": {
                            "description": "Request an Instagram Trial Reel when the account supports it.",
                            "type": "boolean"
                          },
                          "trial_reel": {
                            "description": "Request an Instagram Trial Reel when the account supports it. Alias for is_trial_reel.",
                            "type": "boolean"
                          },
                          "graduation_strategy": {
                            "description": "Trial Reel graduation strategy.",
                            "enum": [
                              "MANUAL",
                              "SS_PERFORMANCE"
                            ],
                            "type": "string"
                          },
                          "collaborators": {
                            "description": "Native co-author invitations. Meta-linked Instagram accounts only; feed images, Reels, and carousels; maximum 3; not Stories.",
                            "type": "array",
                            "items": {}
                          },
                          "user_tags": {
                            "description": "Native clickable media tags, not caption @mentions. Supported by eligible direct Instagram and Meta-linked connections; feed images, Reels/video, and Stories. Tags apply to each carousel child and the first Story in a Story Series.",
                            "type": "array",
                            "items": {}
                          },
                          "first_comment": {
                            "description": "First comment to publish after the post.",
                            "type": "string"
                          },
                          "reel_cover_url": {
                            "description": "Custom Reel cover image URL.",
                            "type": "string"
                          },
                          "cover_url": {
                            "description": "Custom Reel cover image URL. Alias for reel_cover_url.",
                            "type": "string"
                          },
                          "reel_thumb_offset": {
                            "description": "Video timestamp, in milliseconds, for a generated Reel thumbnail.",
                            "type": "number"
                          },
                          "thumb_offset": {
                            "description": "Video timestamp, in milliseconds, for a generated Reel thumbnail. Alias for reel_thumb_offset.",
                            "type": "number"
                          },
                          "is_ai_generated": {
                            "description": "Label the parent media container as AI-generated (is_ai_generated). For carousels, set this on the parent only, never on child slides.",
                            "type": "boolean"
                          },
                          "instagram_is_ai_generated": {
                            "description": "Label the parent media container as AI-generated (is_ai_generated). For carousels, set this on the parent only, never on child slides. Alias for is_ai_generated.",
                            "type": "boolean"
                          },
                          "ai_generated": {
                            "description": "Label the parent media container as AI-generated (is_ai_generated). For carousels, set this on the parent only, never on child slides. Alias for is_ai_generated.",
                            "type": "boolean"
                          },
                          "audio_id": {
                            "description": "Licensed Instagram audio ID for Reels (audio_configuration.audio_id). Meta-linked Facebook Login accounts only; hidden for Instagram Login.",
                            "type": "string"
                          },
                          "instagram_audio_id": {
                            "description": "Licensed Instagram audio ID for Reels (audio_configuration.audio_id). Meta-linked Facebook Login accounts only; hidden for Instagram Login. Alias for audio_id.",
                            "type": "string"
                          },
                          "media_alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "media_accessibility": {
                            "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                            "type": "array",
                            "items": {
                              "type": "object",
                              "required": [
                                "index",
                                "alt_text"
                              ],
                              "properties": {
                                "index": {
                                  "type": "integer",
                                  "minimum": 0
                                },
                                "asset_id": {
                                  "type": "string"
                                },
                                "source_url": {
                                  "type": "string",
                                  "format": "uri"
                                },
                                "alt_text": {
                                  "type": "string"
                                }
                              },
                              "additionalProperties": false
                            }
                          }
                        },
                        "additionalProperties": true,
                        "example": {
                          "__type": "instagram",
                          "post_type": "reel",
                          "first_comment": "Full details in the caption.",
                          "is_ai_generated": true
                        }
                      },
                      {
                        "title": "Facebook settings",
                        "type": "object",
                        "properties": {
                          "post_type": {
                            "description": "Facebook publishing format. Reel uses the Graph Reels API and must be 90 seconds or shorter; use video for longer clips. A 90.0 second Reel is allowed.",
                            "enum": [
                              "post",
                              "feed",
                              "story",
                              "reel",
                              "cover_photo"
                            ],
                            "type": "string"
                          },
                          "text_format_preset_id": {
                            "description": "Styled text post background preset.",
                            "type": "string"
                          },
                          "background_preset_id": {
                            "description": "Styled text post background preset. Alias for text_format_preset_id.",
                            "type": "string"
                          },
                          "reel_cover_url": {
                            "description": "Custom Reel cover image URL.",
                            "type": "string"
                          },
                          "cover_url": {
                            "description": "Custom Reel cover image URL. Alias for reel_cover_url.",
                            "type": "string"
                          },
                          "media_alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "media_accessibility": {
                            "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                            "type": "array",
                            "items": {
                              "type": "object",
                              "required": [
                                "index",
                                "alt_text"
                              ],
                              "properties": {
                                "index": {
                                  "type": "integer",
                                  "minimum": 0
                                },
                                "asset_id": {
                                  "type": "string"
                                },
                                "source_url": {
                                  "type": "string",
                                  "format": "uri"
                                },
                                "alt_text": {
                                  "type": "string"
                                }
                              },
                              "additionalProperties": false
                            }
                          }
                        },
                        "additionalProperties": true,
                        "example": {
                          "post_type": "reel",
                          "reel_cover_url": "https://example.com/cover.jpg"
                        }
                      },
                      {
                        "title": "TikTok settings",
                        "type": "object",
                        "properties": {
                          "privacy_level": {
                            "description": "TikTok direct-post privacy level from the creator info helper.",
                            "type": "string"
                          },
                          "allow_comment": {
                            "description": "Allow comments when direct posting.",
                            "type": "boolean"
                          },
                          "allow_duet": {
                            "description": "Allow duets when direct posting.",
                            "type": "boolean"
                          },
                          "allow_stitch": {
                            "description": "Allow stitches when direct posting.",
                            "type": "boolean"
                          },
                          "title": {
                            "description": "TikTok title/caption field.",
                            "type": "string"
                          },
                          "media_type": {
                            "description": "Set to PHOTO for TikTok photo posts or multi-photo slideshows.",
                            "enum": [
                              "PHOTO"
                            ],
                            "type": "string"
                          },
                          "photo_cover_index": {
                            "description": "Zero-based cover image index for TikTok photo posts.",
                            "type": "number"
                          },
                          "video_cover_timestamp_ms": {
                            "description": "Millisecond timestamp of the video frame to use as the cover (direct post only).",
                            "type": "number"
                          },
                          "cover_timestamp_ms": {
                            "description": "Millisecond timestamp of the video frame to use as the cover (direct post only). Alias for video_cover_timestamp_ms.",
                            "type": "number"
                          },
                          "auto_add_music": {
                            "description": "Ask TikTok to add recommended music to photo posts when direct posting.",
                            "type": "boolean"
                          },
                          "is_commercial_content": {
                            "description": "TikTok commercial content disclosure.",
                            "type": "boolean"
                          },
                          "is_your_brand": {
                            "description": "TikTok branded content: your own brand.",
                            "type": "boolean"
                          },
                          "is_branded_content": {
                            "description": "TikTok branded content: third-party brand.",
                            "type": "boolean"
                          },
                          "ai_generated": {
                            "description": "Label the post as AI-generated (TikTok is_aigc).",
                            "type": "boolean"
                          },
                          "ai_disclosure": {
                            "description": "Label the post as AI-generated (TikTok is_aigc). Alias for ai_generated.",
                            "type": "boolean"
                          }
                        },
                        "additionalProperties": true,
                        "example": {
                          "privacy_level": "PUBLIC_TO_EVERYONE",
                          "media_type": "PHOTO",
                          "photo_cover_index": 0,
                          "auto_add_music": true,
                          "allow_comment": true,
                          "allow_duet": false,
                          "allow_stitch": false,
                          "video_cover_timestamp_ms": 1500
                        }
                      },
                      {
                        "title": "X settings",
                        "type": "object",
                        "properties": {
                          "reply_settings": {
                            "description": "Who can reply to the post.",
                            "enum": [
                              "everyone",
                              "following",
                              "mentionedUsers",
                              "subscribers",
                              "verified"
                            ],
                            "type": "string"
                          },
                          "x_reply_settings": {
                            "description": "Who can reply to the post. Alias for reply_settings.",
                            "enum": [
                              "everyone",
                              "following",
                              "mentionedUsers",
                              "subscribers",
                              "verified"
                            ],
                            "type": "string"
                          },
                          "poll": {
                            "description": "X poll settings: options and duration_minutes.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "x_poll": {
                            "description": "X poll settings: options and duration_minutes. Alias for poll.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "ai_generated": {
                            "description": "Label the post as AI-generated (X made_with_ai).",
                            "type": "boolean"
                          },
                          "ai_disclosure": {
                            "description": "Label the post as AI-generated (X made_with_ai). Alias for ai_generated.",
                            "type": "boolean"
                          },
                          "made_with_ai": {
                            "description": "Label the post as AI-generated (X made_with_ai). Alias for ai_generated.",
                            "type": "boolean"
                          },
                          "paid_partnership": {
                            "description": "Mark the post as a paid partnership (POST /2/tweets paid_partnership). Existing tweet.write.",
                            "type": "boolean"
                          },
                          "x_paid_partnership": {
                            "description": "Mark the post as a paid partnership (POST /2/tweets paid_partnership). Existing tweet.write. Alias for paid_partnership.",
                            "type": "boolean"
                          },
                          "media_alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "media_accessibility": {
                            "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                            "type": "array",
                            "items": {
                              "type": "object",
                              "required": [
                                "index",
                                "alt_text"
                              ],
                              "properties": {
                                "index": {
                                  "type": "integer",
                                  "minimum": 0
                                },
                                "asset_id": {
                                  "type": "string"
                                },
                                "source_url": {
                                  "type": "string",
                                  "format": "uri"
                                },
                                "alt_text": {
                                  "type": "string"
                                }
                              },
                              "additionalProperties": false
                            }
                          }
                        },
                        "additionalProperties": true,
                        "example": {
                          "reply_settings": "following",
                          "poll": {
                            "options": [
                              "Yes",
                              "No"
                            ],
                            "duration_minutes": 1440
                          },
                          "paid_partnership": true
                        }
                      },
                      {
                        "title": "LinkedIn settings",
                        "type": "object",
                        "properties": {
                          "document_title": {
                            "description": "Title for a LinkedIn PDF/document post.",
                            "type": "string"
                          },
                          "linkedin_document_title": {
                            "description": "Title for a LinkedIn PDF/document post. Alias for document_title.",
                            "type": "string"
                          },
                          "document_filename": {
                            "description": "Filename for a LinkedIn document post.",
                            "type": "string"
                          },
                          "mentions": {
                            "description": "LinkedIn organization mention objects.",
                            "type": "array",
                            "items": {}
                          },
                          "linkedin_mentions": {
                            "description": "LinkedIn organization mention objects. Alias for mentions.",
                            "type": "array",
                            "items": {}
                          },
                          "poll": {
                            "description": "LinkedIn poll: { question, options (2-4), duration (ONE_DAY|THREE_DAYS|SEVEN_DAYS|FOURTEEN_DAYS) }. Mutually exclusive with media.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "linkedin_poll": {
                            "description": "LinkedIn poll: { question, options (2-4), duration (ONE_DAY|THREE_DAYS|SEVEN_DAYS|FOURTEEN_DAYS) }. Mutually exclusive with media. Alias for poll.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "thumbnail_url": {
                            "description": "Custom video thumbnail URL.",
                            "type": "string"
                          },
                          "content_call_to_action_label": {
                            "description": "LinkedIn contentCallToActionLabel, including BUY_NOW and SHOP_NOW (version 202504). Pair with content_landing_page.",
                            "enum": [
                              "APPLY",
                              "DOWNLOAD",
                              "VIEW_QUOTE",
                              "LEARN_MORE",
                              "SIGN_UP",
                              "SUBSCRIBE",
                              "REGISTER",
                              "JOIN",
                              "ATTEND",
                              "REQUEST_DEMO",
                              "SEE_MORE",
                              "BUY_NOW",
                              "SHOP_NOW"
                            ],
                            "type": "string"
                          },
                          "cta_label": {
                            "description": "LinkedIn contentCallToActionLabel, including BUY_NOW and SHOP_NOW (version 202504). Pair with content_landing_page. Alias for content_call_to_action_label.",
                            "enum": [
                              "APPLY",
                              "DOWNLOAD",
                              "VIEW_QUOTE",
                              "LEARN_MORE",
                              "SIGN_UP",
                              "SUBSCRIBE",
                              "REGISTER",
                              "JOIN",
                              "ATTEND",
                              "REQUEST_DEMO",
                              "SEE_MORE",
                              "BUY_NOW",
                              "SHOP_NOW"
                            ],
                            "type": "string"
                          },
                          "linkedin_cta_label": {
                            "description": "LinkedIn contentCallToActionLabel, including BUY_NOW and SHOP_NOW (version 202504). Pair with content_landing_page. Alias for content_call_to_action_label.",
                            "enum": [
                              "APPLY",
                              "DOWNLOAD",
                              "VIEW_QUOTE",
                              "LEARN_MORE",
                              "SIGN_UP",
                              "SUBSCRIBE",
                              "REGISTER",
                              "JOIN",
                              "ATTEND",
                              "REQUEST_DEMO",
                              "SEE_MORE",
                              "BUY_NOW",
                              "SHOP_NOW"
                            ],
                            "type": "string"
                          },
                          "content_landing_page": {
                            "description": "Landing page URL sent as contentLandingPage with the LinkedIn call to action.",
                            "type": "string"
                          },
                          "cta_url": {
                            "description": "Landing page URL sent as contentLandingPage with the LinkedIn call to action. Alias for content_landing_page.",
                            "type": "string"
                          },
                          "linkedin_cta_url": {
                            "description": "Landing page URL sent as contentLandingPage with the LinkedIn call to action. Alias for content_landing_page.",
                            "type": "string"
                          },
                          "media_alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "media_accessibility": {
                            "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                            "type": "array",
                            "items": {
                              "type": "object",
                              "required": [
                                "index",
                                "alt_text"
                              ],
                              "properties": {
                                "index": {
                                  "type": "integer",
                                  "minimum": 0
                                },
                                "asset_id": {
                                  "type": "string"
                                },
                                "source_url": {
                                  "type": "string",
                                  "format": "uri"
                                },
                                "alt_text": {
                                  "type": "string"
                                }
                              },
                              "additionalProperties": false
                            }
                          }
                        },
                        "additionalProperties": true,
                        "example": {
                          "document_title": "Launch plan",
                          "mentions": [
                            {
                              "display_name": "posterly",
                              "urn": "urn:li:organization:123"
                            }
                          ],
                          "poll": {
                            "question": "Which feature next?",
                            "options": [
                              "Polls",
                              "Analytics"
                            ],
                            "duration": "THREE_DAYS"
                          },
                          "content_call_to_action_label": "BUY_NOW",
                          "content_landing_page": "https://www.poster.ly"
                        }
                      },
                      {
                        "title": "YouTube settings",
                        "type": "object",
                        "properties": {
                          "title": {
                            "description": "YouTube video title.",
                            "type": "string"
                          },
                          "youtube_title": {
                            "description": "YouTube video title. Alias for title.",
                            "type": "string"
                          },
                          "thumbnail_url": {
                            "description": "Custom YouTube thumbnail URL.",
                            "type": "string"
                          },
                          "privacy_status": {
                            "description": "YouTube video visibility.",
                            "enum": [
                              "public",
                              "unlisted",
                              "private"
                            ],
                            "type": "string"
                          },
                          "privacy": {
                            "description": "YouTube video visibility. Alias for privacy_status.",
                            "enum": [
                              "public",
                              "unlisted",
                              "private"
                            ],
                            "type": "string"
                          },
                          "made_for_kids": {
                            "description": "YouTube made-for-kids declaration.",
                            "type": "boolean"
                          },
                          "tags": {
                            "description": "YouTube tags.",
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "category_id": {
                            "description": "YouTube category ID.",
                            "type": "string"
                          },
                          "notify_subscribers": {
                            "description": "Notify subscribers when the video publishes (default true).",
                            "type": "boolean"
                          },
                          "add_shorts_hashtag": {
                            "description": "Append #Shorts to the description for Shorts-feed eligibility (vertical clips).",
                            "type": "boolean"
                          },
                          "ai_generated": {
                            "description": "Label the video as containing AI/synthetic media (containsSyntheticMedia).",
                            "type": "boolean"
                          },
                          "ai_disclosure": {
                            "description": "Label the video as containing AI/synthetic media (containsSyntheticMedia). Alias for ai_generated.",
                            "type": "boolean"
                          },
                          "brand_partner": {
                            "description": "Optional YouTube brandPartner channel ID (UC…) or handle (@…). Added to videos.insert part=brandPartner when set.",
                            "type": "string"
                          },
                          "brandPartner": {
                            "description": "Optional YouTube brandPartner channel ID (UC…) or handle (@…). Added to videos.insert part=brandPartner when set. Alias for brand_partner.",
                            "type": "string"
                          }
                        },
                        "required": [
                          "title"
                        ],
                        "additionalProperties": true,
                        "example": {
                          "title": "Launch walkthrough",
                          "privacy_status": "unlisted",
                          "notify_subscribers": false,
                          "add_shorts_hashtag": true,
                          "brand_partner": "@brand"
                        }
                      },
                      {
                        "title": "Pinterest settings",
                        "type": "object",
                        "properties": {
                          "board_id": {
                            "description": "Pinterest board ID from the pinterest.boards helper.",
                            "type": "string"
                          },
                          "pinterest_board_id": {
                            "description": "Pinterest board ID from the pinterest.boards helper. Alias for board_id.",
                            "type": "string"
                          },
                          "title": {
                            "description": "Pinterest Pin title.",
                            "type": "string"
                          },
                          "link": {
                            "description": "Destination URL for the Pin.",
                            "type": "string"
                          },
                          "destination_url": {
                            "description": "Destination URL for the Pin. Alias for link.",
                            "type": "string"
                          },
                          "cover_image_url": {
                            "description": "Required for video Pins: a stored, probe-verified JPEG or PNG cover URL (20 MiB maximum).",
                            "type": "string"
                          },
                          "video_cover_url": {
                            "description": "Required for video Pins: a stored, probe-verified JPEG or PNG cover URL (20 MiB maximum). Alias for cover_image_url.",
                            "type": "string"
                          },
                          "pinterest_cover_image_url": {
                            "description": "Required for video Pins: a stored, probe-verified JPEG or PNG cover URL (20 MiB maximum). Alias for cover_image_url.",
                            "type": "string"
                          },
                          "ai_generated": {
                            "description": "Label the Pin as AI-modified (ai_disclosures).",
                            "type": "boolean"
                          },
                          "ai_disclosure": {
                            "description": "Label the Pin as AI-modified (ai_disclosures). Alias for ai_generated.",
                            "type": "boolean"
                          },
                          "product_tags": {
                            "description": "Optional product tags on POST /v5/pins (product_id, optional x/y). Existing pins:write. Pin note is not written.",
                            "type": "array",
                            "items": {}
                          },
                          "media_alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "media_accessibility": {
                            "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                            "type": "array",
                            "items": {
                              "type": "object",
                              "required": [
                                "index",
                                "alt_text"
                              ],
                              "properties": {
                                "index": {
                                  "type": "integer",
                                  "minimum": 0
                                },
                                "asset_id": {
                                  "type": "string"
                                },
                                "source_url": {
                                  "type": "string",
                                  "format": "uri"
                                },
                                "alt_text": {
                                  "type": "string"
                                }
                              },
                              "additionalProperties": false
                            }
                          }
                        },
                        "required": [
                          "board_id"
                        ],
                        "additionalProperties": true,
                        "example": {
                          "board_id": "123456789",
                          "title": "Launch ideas",
                          "link": "https://www.poster.ly",
                          "cover_image_url": "https://assets.poster.ly/users/123/pinterest-video-covers/cover.jpg",
                          "product_tags": [
                            {
                              "product_id": "123"
                            }
                          ]
                        }
                      },
                      {
                        "title": "Threads settings",
                        "type": "object",
                        "properties": {
                          "reply_control": {
                            "description": "Threads reply control setting.",
                            "enum": [
                              "everyone",
                              "accounts_you_follow",
                              "mentioned_only",
                              "followers_only",
                              "parent_post_author_only"
                            ],
                            "type": "string"
                          },
                          "threads_reply_control": {
                            "description": "Threads reply control setting. Alias for reply_control.",
                            "enum": [
                              "everyone",
                              "accounts_you_follow",
                              "mentioned_only",
                              "followers_only",
                              "parent_post_author_only"
                            ],
                            "type": "string"
                          },
                          "poll": {
                            "description": "Threads poll: { options (2-4) }. Text-only, fixed 24h duration.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "threads_poll": {
                            "description": "Threads poll: { options (2-4) }. Text-only, fixed 24h duration. Alias for poll.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "topic_tag": {
                            "description": "A single Threads topic tag (1-50 chars, no periods/ampersands).",
                            "type": "string"
                          },
                          "threads_topic_tag": {
                            "description": "A single Threads topic tag (1-50 chars, no periods/ampersands). Alias for topic_tag.",
                            "type": "string"
                          },
                          "text_attachment": {
                            "description": "Long-form Threads text attachment.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "threads_text_attachment": {
                            "description": "Long-form Threads text attachment. Alias for text_attachment.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "share_to_instagram": {
                            "description": "Also share the published post to the Instagram account linked to the Threads profile as a Story (dark card). Requires Instagram sharing enabled for the Threads profile in the Threads app.",
                            "type": "boolean"
                          },
                          "threads_share_to_instagram": {
                            "description": "Also share the published post to the Instagram account linked to the Threads profile as a Story (dark card). Requires Instagram sharing enabled for the Threads profile in the Threads app. Alias for share_to_instagram.",
                            "type": "boolean"
                          },
                          "is_ghost_post": {
                            "description": "Publish as a Threads ghost post. Text-only.",
                            "type": "boolean"
                          },
                          "threads_is_ghost_post": {
                            "description": "Publish as a Threads ghost post. Text-only. Alias for is_ghost_post.",
                            "type": "boolean"
                          },
                          "is_spoiler": {
                            "description": "Mark the Threads post as a spoiler (full-caption text entity and/or is_spoiler_media).",
                            "type": "boolean"
                          },
                          "threads_is_spoiler": {
                            "description": "Mark the Threads post as a spoiler (full-caption text entity and/or is_spoiler_media). Alias for is_spoiler.",
                            "type": "boolean"
                          },
                          "is_spoiler_media": {
                            "description": "Set is_spoiler_media on the Threads container when media is attached.",
                            "type": "boolean"
                          },
                          "threads_is_spoiler_media": {
                            "description": "Set is_spoiler_media on the Threads container when media is attached. Alias for is_spoiler_media.",
                            "type": "boolean"
                          },
                          "text_entities": {
                            "description": "Threads text_entities, for example spoiler ranges with entity_type, offset, and length.",
                            "type": "array",
                            "items": {}
                          },
                          "threads_text_entities": {
                            "description": "Threads text_entities, for example spoiler ranges with entity_type, offset, and length. Alias for text_entities.",
                            "type": "array",
                            "items": {}
                          },
                          "enable_reply_approvals": {
                            "description": "Require approval before replies appear (enable_reply_approvals).",
                            "type": "boolean"
                          },
                          "threads_enable_reply_approvals": {
                            "description": "Require approval before replies appear (enable_reply_approvals). Alias for enable_reply_approvals.",
                            "type": "boolean"
                          },
                          "gif_attachment": {
                            "description": "GIPHY gif_attachment: { gif_id, provider: \"GIPHY\" }. Tenor is not supported.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "threads_gif_attachment": {
                            "description": "GIPHY gif_attachment: { gif_id, provider: \"GIPHY\" }. Tenor is not supported. Alias for gif_attachment.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "media_alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "media_accessibility": {
                            "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                            "type": "array",
                            "items": {
                              "type": "object",
                              "required": [
                                "index",
                                "alt_text"
                              ],
                              "properties": {
                                "index": {
                                  "type": "integer",
                                  "minimum": 0
                                },
                                "asset_id": {
                                  "type": "string"
                                },
                                "source_url": {
                                  "type": "string",
                                  "format": "uri"
                                },
                                "alt_text": {
                                  "type": "string"
                                }
                              },
                              "additionalProperties": false
                            }
                          }
                        },
                        "additionalProperties": true,
                        "example": {
                          "reply_control": "everyone",
                          "poll": {
                            "options": [
                              "Polls",
                              "Analytics"
                            ]
                          },
                          "topic_tag": "producthunt",
                          "is_ghost_post": false,
                          "enable_reply_approvals": true
                        }
                      },
                      {
                        "title": "Google Business settings",
                        "type": "object",
                        "properties": {
                          "post_type": {
                            "description": "Google Business Profile post type.",
                            "enum": [
                              "STANDARD",
                              "EVENT",
                              "OFFER"
                            ],
                            "type": "string"
                          },
                          "topic_type": {
                            "description": "Google Business Profile post type. Alias for post_type.",
                            "enum": [
                              "STANDARD",
                              "EVENT",
                              "OFFER"
                            ],
                            "type": "string"
                          },
                          "event": {
                            "description": "Event title and start/end date/time.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "offer": {
                            "description": "Offer coupon, redeem URL, and terms.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "cta": {
                            "description": "CTA type and URL.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "recurrence": {
                            "description": "EVENT/OFFER recurrenceInfo: { type: DAILY|WEEKLY|MONTHLY, series_end_time? }. Keeps one-off scheduledTime.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "recurrenceInfo": {
                            "description": "EVENT/OFFER recurrenceInfo: { type: DAILY|WEEKLY|MONTHLY, series_end_time? }. Keeps one-off scheduledTime. Alias for recurrence.",
                            "type": "object",
                            "additionalProperties": true
                          }
                        },
                        "additionalProperties": true,
                        "example": {
                          "post_type": "EVENT",
                          "event": {
                            "title": "Launch night",
                            "start_date": "2026-09-01"
                          },
                          "recurrence": {
                            "type": "WEEKLY",
                            "series_end_time": "2026-12-01T00:00:00Z"
                          },
                          "cta": {
                            "type": "LEARN_MORE",
                            "url": "https://www.poster.ly"
                          }
                        }
                      },
                      {
                        "title": "Telegram settings",
                        "type": "object",
                        "properties": {
                          "parse_mode": {
                            "description": "Telegram caption parse mode when supported.",
                            "enum": [
                              "HTML",
                              "MarkdownV2"
                            ],
                            "type": "string"
                          },
                          "disable_web_page_preview": {
                            "description": "Disable link previews for text posts.",
                            "type": "boolean"
                          },
                          "poll": {
                            "description": "Telegram native poll: { question, options (2-10), allows_multiple_answers? }.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "telegram_poll": {
                            "description": "Telegram native poll: { question, options (2-10), allows_multiple_answers? }. Alias for poll.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "buttons": {
                            "description": "Inline CTA buttons: [{ text, url }] (up to 3).",
                            "type": "array",
                            "items": {}
                          },
                          "telegram_buttons": {
                            "description": "Inline CTA buttons: [{ text, url }] (up to 3). Alias for buttons.",
                            "type": "array",
                            "items": {}
                          },
                          "video_cover_url": {
                            "description": "Cover image URL for sendVideo (Bot API cover).",
                            "type": "string"
                          },
                          "cover_url": {
                            "description": "Cover image URL for sendVideo (Bot API cover). Alias for video_cover_url.",
                            "type": "string"
                          },
                          "telegram_video_cover_url": {
                            "description": "Cover image URL for sendVideo (Bot API cover). Alias for video_cover_url.",
                            "type": "string"
                          },
                          "start_timestamp": {
                            "description": "Video start timestamp in seconds for sendVideo (Bot API start_timestamp).",
                            "type": "number"
                          },
                          "telegram_start_timestamp": {
                            "description": "Video start timestamp in seconds for sendVideo (Bot API start_timestamp). Alias for start_timestamp.",
                            "type": "number"
                          },
                          "is_live_photo": {
                            "description": "Send as sendLivePhoto when both a still image and a video are attached.",
                            "type": "boolean"
                          },
                          "telegram_is_live_photo": {
                            "description": "Send as sendLivePhoto when both a still image and a video are attached. Alias for is_live_photo.",
                            "type": "boolean"
                          }
                        },
                        "additionalProperties": true,
                        "example": {
                          "poll": {
                            "question": "Which feature next?",
                            "options": [
                              "Polls",
                              "Analytics"
                            ]
                          },
                          "buttons": [
                            {
                              "text": "Read more",
                              "url": "https://www.poster.ly"
                            }
                          ],
                          "video_cover_url": "https://example.com/cover.jpg"
                        }
                      },
                      {
                        "title": "Bluesky settings",
                        "type": "object",
                        "properties": {
                          "langs": {
                            "description": "Language tags for the Bluesky post.",
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "content_label": {
                            "description": "Self-applied content warning (tap-to-reveal).",
                            "enum": [
                              "sexual",
                              "nudity",
                              "porn",
                              "graphic-media"
                            ],
                            "type": "string"
                          },
                          "content_warning": {
                            "description": "Self-applied content warning (tap-to-reveal). Alias for content_label.",
                            "enum": [
                              "sexual",
                              "nudity",
                              "porn",
                              "graphic-media"
                            ],
                            "type": "string"
                          },
                          "tags": {
                            "description": "Up to 8 hidden discovery tags (separate from in-text hashtags).",
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "bluesky_tags": {
                            "description": "Up to 8 hidden discovery tags (separate from in-text hashtags). Alias for tags.",
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "quote_url": {
                            "description": "A Bluesky post URL (or AT-URI) to quote.",
                            "type": "string"
                          },
                          "quote": {
                            "description": "A Bluesky post URL (or AT-URI) to quote. Alias for quote_url.",
                            "type": "string"
                          },
                          "bluesky_quote_url": {
                            "description": "A Bluesky post URL (or AT-URI) to quote. Alias for quote_url.",
                            "type": "string"
                          },
                          "disable_quotes": {
                            "description": "Prevent others from quote-posting this post (postgate).",
                            "type": "boolean"
                          },
                          "media_alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "media_accessibility": {
                            "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                            "type": "array",
                            "items": {
                              "type": "object",
                              "required": [
                                "index",
                                "alt_text"
                              ],
                              "properties": {
                                "index": {
                                  "type": "integer",
                                  "minimum": 0
                                },
                                "asset_id": {
                                  "type": "string"
                                },
                                "source_url": {
                                  "type": "string",
                                  "format": "uri"
                                },
                                "alt_text": {
                                  "type": "string"
                                }
                              },
                              "additionalProperties": false
                            }
                          }
                        },
                        "additionalProperties": true,
                        "example": {
                          "langs": [
                            "en"
                          ],
                          "tags": [
                            "producthunt",
                            "launch"
                          ],
                          "quote_url": "https://bsky.app/profile/poster.ly/post/abc123"
                        }
                      },
                      {
                        "title": "Discord settings",
                        "type": "object",
                        "properties": {
                          "media_alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "media_accessibility": {
                            "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                            "type": "array",
                            "items": {
                              "type": "object",
                              "required": [
                                "index",
                                "alt_text"
                              ],
                              "properties": {
                                "index": {
                                  "type": "integer",
                                  "minimum": 0
                                },
                                "asset_id": {
                                  "type": "string"
                                },
                                "source_url": {
                                  "type": "string",
                                  "format": "uri"
                                },
                                "alt_text": {
                                  "type": "string"
                                }
                              },
                              "additionalProperties": false
                            }
                          }
                        },
                        "additionalProperties": true,
                        "example": {
                          "media_alt_texts": {
                            "https://example.com/chart.png": "Q2 revenue chart"
                          }
                        }
                      },
                      {
                        "title": "Slack settings",
                        "type": "object",
                        "properties": {
                          "markdown": {
                            "description": "Send the caption as a Block Kit markdown block on chat.postMessage.",
                            "type": "boolean"
                          },
                          "slack_markdown": {
                            "description": "Send the caption as a Block Kit markdown block on chat.postMessage. Alias for markdown.",
                            "type": "boolean"
                          },
                          "blocks": {
                            "description": "Optional Block Kit blocks (markdown, card, or carousel) passed to chat.postMessage. File upload still uses getUploadURLExternal.",
                            "type": "array",
                            "items": {}
                          },
                          "slack_blocks": {
                            "description": "Optional Block Kit blocks (markdown, card, or carousel) passed to chat.postMessage. File upload still uses getUploadURLExternal. Alias for blocks.",
                            "type": "array",
                            "items": {}
                          }
                        },
                        "additionalProperties": true,
                        "example": {
                          "markdown": true
                        }
                      },
                      {
                        "title": "Mastodon settings",
                        "type": "object",
                        "properties": {
                          "visibility": {
                            "description": "Status visibility (private means followers only).",
                            "enum": [
                              "public",
                              "unlisted",
                              "private"
                            ],
                            "type": "string"
                          },
                          "mastodon_visibility": {
                            "description": "Status visibility (private means followers only). Alias for visibility.",
                            "enum": [
                              "public",
                              "unlisted",
                              "private"
                            ],
                            "type": "string"
                          },
                          "spoiler_text": {
                            "description": "Content warning shown before the post is revealed (marks media sensitive).",
                            "type": "string"
                          },
                          "content_warning": {
                            "description": "Content warning shown before the post is revealed (marks media sensitive). Alias for spoiler_text.",
                            "type": "string"
                          },
                          "mastodon_spoiler_text": {
                            "description": "Content warning shown before the post is revealed (marks media sensitive). Alias for spoiler_text.",
                            "type": "string"
                          },
                          "language": {
                            "description": "ISO 639 language code for the status.",
                            "type": "string"
                          },
                          "mastodon_language": {
                            "description": "ISO 639 language code for the status. Alias for language.",
                            "type": "string"
                          },
                          "quoted_status_id": {
                            "description": "Mastodon status ID to quote (4.5+ quoted_status_id).",
                            "type": "string"
                          },
                          "quote_id": {
                            "description": "Mastodon status ID to quote (4.5+ quoted_status_id). Alias for quoted_status_id.",
                            "type": "string"
                          },
                          "mastodon_quoted_status_id": {
                            "description": "Mastodon status ID to quote (4.5+ quoted_status_id). Alias for quoted_status_id.",
                            "type": "string"
                          },
                          "poll": {
                            "description": "Mastodon poll: { options (2-4), expires_in seconds, multiple? }. Media and a poll can be combined on Mastodon 4.6+.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "mastodon_poll": {
                            "description": "Mastodon poll: { options (2-4), expires_in seconds, multiple? }. Media and a poll can be combined on Mastodon 4.6+. Alias for poll.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "media_alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "media_accessibility": {
                            "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                            "type": "array",
                            "items": {
                              "type": "object",
                              "required": [
                                "index",
                                "alt_text"
                              ],
                              "properties": {
                                "index": {
                                  "type": "integer",
                                  "minimum": 0
                                },
                                "asset_id": {
                                  "type": "string"
                                },
                                "source_url": {
                                  "type": "string",
                                  "format": "uri"
                                },
                                "alt_text": {
                                  "type": "string"
                                }
                              },
                              "additionalProperties": false
                            }
                          }
                        },
                        "additionalProperties": true,
                        "example": {
                          "visibility": "public",
                          "spoiler_text": "Launch spoilers",
                          "language": "en",
                          "quoted_status_id": "123",
                          "poll": {
                            "options": [
                              "Yes",
                              "No"
                            ],
                            "expires_in": 86400
                          }
                        }
                      },
                      {
                        "title": "Dev.to settings",
                        "type": "object",
                        "properties": {
                          "title": {
                            "description": "Article title. Falls back to the first line of the caption.",
                            "type": "string"
                          },
                          "devto_title": {
                            "description": "Article title. Falls back to the first line of the caption. Alias for title.",
                            "type": "string"
                          },
                          "tags": {
                            "description": "Up to 4 tags (lowercase alphanumeric).",
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "devto_tags": {
                            "description": "Up to 4 tags (lowercase alphanumeric). Alias for tags.",
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "canonical_url": {
                            "description": "Canonical URL when cross-posting from your own blog.",
                            "type": "string"
                          },
                          "media_alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "media_accessibility": {
                            "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                            "type": "array",
                            "items": {
                              "type": "object",
                              "required": [
                                "index",
                                "alt_text"
                              ],
                              "properties": {
                                "index": {
                                  "type": "integer",
                                  "minimum": 0
                                },
                                "asset_id": {
                                  "type": "string"
                                },
                                "source_url": {
                                  "type": "string",
                                  "format": "uri"
                                },
                                "alt_text": {
                                  "type": "string"
                                }
                              },
                              "additionalProperties": false
                            }
                          }
                        },
                        "additionalProperties": true,
                        "example": {
                          "title": "How we ship 18 platforms",
                          "tags": [
                            "webdev",
                            "saas"
                          ]
                        }
                      },
                      {
                        "title": "Hashnode settings",
                        "type": "object",
                        "properties": {
                          "title": {
                            "description": "Post title. Falls back to the first line of the caption.",
                            "type": "string"
                          },
                          "hashnode_title": {
                            "description": "Post title. Falls back to the first line of the caption. Alias for title.",
                            "type": "string"
                          },
                          "tags": {
                            "description": "Up to 4 tags (lowercase alphanumeric).",
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "hashnode_tags": {
                            "description": "Up to 4 tags (lowercase alphanumeric). Alias for tags.",
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "publication_id": {
                            "description": "Target publication. Defaults to the account blog captured at connect time.",
                            "type": "string"
                          },
                          "media_alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "media_accessibility": {
                            "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                            "type": "array",
                            "items": {
                              "type": "object",
                              "required": [
                                "index",
                                "alt_text"
                              ],
                              "properties": {
                                "index": {
                                  "type": "integer",
                                  "minimum": 0
                                },
                                "asset_id": {
                                  "type": "string"
                                },
                                "source_url": {
                                  "type": "string",
                                  "format": "uri"
                                },
                                "alt_text": {
                                  "type": "string"
                                }
                              },
                              "additionalProperties": false
                            }
                          }
                        },
                        "additionalProperties": true,
                        "example": {
                          "title": "How we ship 18 platforms",
                          "tags": [
                            "webdev",
                            "saas"
                          ]
                        }
                      },
                      {
                        "title": "WordPress settings",
                        "type": "object",
                        "properties": {
                          "title": {
                            "description": "Post title. Falls back to the first line of the caption.",
                            "type": "string"
                          },
                          "wordpress_title": {
                            "description": "Post title. Falls back to the first line of the caption. Alias for title.",
                            "type": "string"
                          },
                          "media_alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "media_accessibility": {
                            "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                            "type": "array",
                            "items": {
                              "type": "object",
                              "required": [
                                "index",
                                "alt_text"
                              ],
                              "properties": {
                                "index": {
                                  "type": "integer",
                                  "minimum": 0
                                },
                                "asset_id": {
                                  "type": "string"
                                },
                                "source_url": {
                                  "type": "string",
                                  "format": "uri"
                                },
                                "alt_text": {
                                  "type": "string"
                                }
                              },
                              "additionalProperties": false
                            }
                          }
                        },
                        "additionalProperties": true,
                        "example": {
                          "title": "How we ship 18 platforms"
                        }
                      },
                      {
                        "title": "Lemmy settings",
                        "type": "object",
                        "properties": {
                          "community": {
                            "description": "Target community, e.g. technology or technology@lemmy.world.",
                            "type": "string"
                          },
                          "lemmy_community": {
                            "description": "Target community, e.g. technology or technology@lemmy.world. Alias for community.",
                            "type": "string"
                          },
                          "title": {
                            "description": "Post title. Falls back to the first line of the caption.",
                            "type": "string"
                          },
                          "lemmy_title": {
                            "description": "Post title. Falls back to the first line of the caption. Alias for title.",
                            "type": "string"
                          },
                          "url": {
                            "description": "Link post URL. Defaults to the first attached image.",
                            "type": "string"
                          },
                          "lemmy_url": {
                            "description": "Link post URL. Defaults to the first attached image. Alias for url.",
                            "type": "string"
                          },
                          "nsfw": {
                            "description": "Mark the post NSFW.",
                            "type": "boolean"
                          },
                          "media_alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "media_accessibility": {
                            "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                            "type": "array",
                            "items": {
                              "type": "object",
                              "required": [
                                "index",
                                "alt_text"
                              ],
                              "properties": {
                                "index": {
                                  "type": "integer",
                                  "minimum": 0
                                },
                                "asset_id": {
                                  "type": "string"
                                },
                                "source_url": {
                                  "type": "string",
                                  "format": "uri"
                                },
                                "alt_text": {
                                  "type": "string"
                                }
                              },
                              "additionalProperties": false
                            }
                          }
                        },
                        "required": [
                          "community"
                        ],
                        "additionalProperties": true,
                        "example": {
                          "community": "selfhosted@lemmy.world",
                          "title": "posterly now posts to Lemmy"
                        }
                      }
                    ],
                    "additionalProperties": true
                  },
                  "instagram_settings": {
                    "type": "object",
                    "description": "Platform-specific composer controls. Call list_platforms or get_platform_schema for the selected account before sending settings.",
                    "oneOf": [
                      {
                        "title": "Instagram settings",
                        "type": "object",
                        "properties": {
                          "__type": {
                            "description": "Instagram account type hint.",
                            "enum": [
                              "instagram",
                              "instagram-standalone"
                            ],
                            "type": "string"
                          },
                          "post_type": {
                            "description": "Instagram publishing format.",
                            "enum": [
                              "post",
                              "feed",
                              "story",
                              "reel",
                              "carousel"
                            ],
                            "type": "string"
                          },
                          "is_trial_reel": {
                            "description": "Request an Instagram Trial Reel when the account supports it.",
                            "type": "boolean"
                          },
                          "trial_reel": {
                            "description": "Request an Instagram Trial Reel when the account supports it. Alias for is_trial_reel.",
                            "type": "boolean"
                          },
                          "graduation_strategy": {
                            "description": "Trial Reel graduation strategy.",
                            "enum": [
                              "MANUAL",
                              "SS_PERFORMANCE"
                            ],
                            "type": "string"
                          },
                          "collaborators": {
                            "description": "Native co-author invitations. Meta-linked Instagram accounts only; feed images, Reels, and carousels; maximum 3; not Stories.",
                            "type": "array",
                            "items": {}
                          },
                          "user_tags": {
                            "description": "Native clickable media tags, not caption @mentions. Supported by eligible direct Instagram and Meta-linked connections; feed images, Reels/video, and Stories. Tags apply to each carousel child and the first Story in a Story Series.",
                            "type": "array",
                            "items": {}
                          },
                          "first_comment": {
                            "description": "First comment to publish after the post.",
                            "type": "string"
                          },
                          "reel_cover_url": {
                            "description": "Custom Reel cover image URL.",
                            "type": "string"
                          },
                          "cover_url": {
                            "description": "Custom Reel cover image URL. Alias for reel_cover_url.",
                            "type": "string"
                          },
                          "reel_thumb_offset": {
                            "description": "Video timestamp, in milliseconds, for a generated Reel thumbnail.",
                            "type": "number"
                          },
                          "thumb_offset": {
                            "description": "Video timestamp, in milliseconds, for a generated Reel thumbnail. Alias for reel_thumb_offset.",
                            "type": "number"
                          },
                          "is_ai_generated": {
                            "description": "Label the parent media container as AI-generated (is_ai_generated). For carousels, set this on the parent only, never on child slides.",
                            "type": "boolean"
                          },
                          "instagram_is_ai_generated": {
                            "description": "Label the parent media container as AI-generated (is_ai_generated). For carousels, set this on the parent only, never on child slides. Alias for is_ai_generated.",
                            "type": "boolean"
                          },
                          "ai_generated": {
                            "description": "Label the parent media container as AI-generated (is_ai_generated). For carousels, set this on the parent only, never on child slides. Alias for is_ai_generated.",
                            "type": "boolean"
                          },
                          "audio_id": {
                            "description": "Licensed Instagram audio ID for Reels (audio_configuration.audio_id). Meta-linked Facebook Login accounts only; hidden for Instagram Login.",
                            "type": "string"
                          },
                          "instagram_audio_id": {
                            "description": "Licensed Instagram audio ID for Reels (audio_configuration.audio_id). Meta-linked Facebook Login accounts only; hidden for Instagram Login. Alias for audio_id.",
                            "type": "string"
                          },
                          "media_alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "media_accessibility": {
                            "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                            "type": "array",
                            "items": {
                              "type": "object",
                              "required": [
                                "index",
                                "alt_text"
                              ],
                              "properties": {
                                "index": {
                                  "type": "integer",
                                  "minimum": 0
                                },
                                "asset_id": {
                                  "type": "string"
                                },
                                "source_url": {
                                  "type": "string",
                                  "format": "uri"
                                },
                                "alt_text": {
                                  "type": "string"
                                }
                              },
                              "additionalProperties": false
                            }
                          }
                        },
                        "additionalProperties": true,
                        "example": {
                          "__type": "instagram",
                          "post_type": "reel",
                          "first_comment": "Full details in the caption.",
                          "is_ai_generated": true
                        }
                      },
                      {
                        "title": "Facebook settings",
                        "type": "object",
                        "properties": {
                          "post_type": {
                            "description": "Facebook publishing format. Reel uses the Graph Reels API and must be 90 seconds or shorter; use video for longer clips. A 90.0 second Reel is allowed.",
                            "enum": [
                              "post",
                              "feed",
                              "story",
                              "reel",
                              "cover_photo"
                            ],
                            "type": "string"
                          },
                          "text_format_preset_id": {
                            "description": "Styled text post background preset.",
                            "type": "string"
                          },
                          "background_preset_id": {
                            "description": "Styled text post background preset. Alias for text_format_preset_id.",
                            "type": "string"
                          },
                          "reel_cover_url": {
                            "description": "Custom Reel cover image URL.",
                            "type": "string"
                          },
                          "cover_url": {
                            "description": "Custom Reel cover image URL. Alias for reel_cover_url.",
                            "type": "string"
                          },
                          "media_alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "media_accessibility": {
                            "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                            "type": "array",
                            "items": {
                              "type": "object",
                              "required": [
                                "index",
                                "alt_text"
                              ],
                              "properties": {
                                "index": {
                                  "type": "integer",
                                  "minimum": 0
                                },
                                "asset_id": {
                                  "type": "string"
                                },
                                "source_url": {
                                  "type": "string",
                                  "format": "uri"
                                },
                                "alt_text": {
                                  "type": "string"
                                }
                              },
                              "additionalProperties": false
                            }
                          }
                        },
                        "additionalProperties": true,
                        "example": {
                          "post_type": "reel",
                          "reel_cover_url": "https://example.com/cover.jpg"
                        }
                      },
                      {
                        "title": "TikTok settings",
                        "type": "object",
                        "properties": {
                          "privacy_level": {
                            "description": "TikTok direct-post privacy level from the creator info helper.",
                            "type": "string"
                          },
                          "allow_comment": {
                            "description": "Allow comments when direct posting.",
                            "type": "boolean"
                          },
                          "allow_duet": {
                            "description": "Allow duets when direct posting.",
                            "type": "boolean"
                          },
                          "allow_stitch": {
                            "description": "Allow stitches when direct posting.",
                            "type": "boolean"
                          },
                          "title": {
                            "description": "TikTok title/caption field.",
                            "type": "string"
                          },
                          "media_type": {
                            "description": "Set to PHOTO for TikTok photo posts or multi-photo slideshows.",
                            "enum": [
                              "PHOTO"
                            ],
                            "type": "string"
                          },
                          "photo_cover_index": {
                            "description": "Zero-based cover image index for TikTok photo posts.",
                            "type": "number"
                          },
                          "video_cover_timestamp_ms": {
                            "description": "Millisecond timestamp of the video frame to use as the cover (direct post only).",
                            "type": "number"
                          },
                          "cover_timestamp_ms": {
                            "description": "Millisecond timestamp of the video frame to use as the cover (direct post only). Alias for video_cover_timestamp_ms.",
                            "type": "number"
                          },
                          "auto_add_music": {
                            "description": "Ask TikTok to add recommended music to photo posts when direct posting.",
                            "type": "boolean"
                          },
                          "is_commercial_content": {
                            "description": "TikTok commercial content disclosure.",
                            "type": "boolean"
                          },
                          "is_your_brand": {
                            "description": "TikTok branded content: your own brand.",
                            "type": "boolean"
                          },
                          "is_branded_content": {
                            "description": "TikTok branded content: third-party brand.",
                            "type": "boolean"
                          },
                          "ai_generated": {
                            "description": "Label the post as AI-generated (TikTok is_aigc).",
                            "type": "boolean"
                          },
                          "ai_disclosure": {
                            "description": "Label the post as AI-generated (TikTok is_aigc). Alias for ai_generated.",
                            "type": "boolean"
                          }
                        },
                        "additionalProperties": true,
                        "example": {
                          "privacy_level": "PUBLIC_TO_EVERYONE",
                          "media_type": "PHOTO",
                          "photo_cover_index": 0,
                          "auto_add_music": true,
                          "allow_comment": true,
                          "allow_duet": false,
                          "allow_stitch": false,
                          "video_cover_timestamp_ms": 1500
                        }
                      },
                      {
                        "title": "X settings",
                        "type": "object",
                        "properties": {
                          "reply_settings": {
                            "description": "Who can reply to the post.",
                            "enum": [
                              "everyone",
                              "following",
                              "mentionedUsers",
                              "subscribers",
                              "verified"
                            ],
                            "type": "string"
                          },
                          "x_reply_settings": {
                            "description": "Who can reply to the post. Alias for reply_settings.",
                            "enum": [
                              "everyone",
                              "following",
                              "mentionedUsers",
                              "subscribers",
                              "verified"
                            ],
                            "type": "string"
                          },
                          "poll": {
                            "description": "X poll settings: options and duration_minutes.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "x_poll": {
                            "description": "X poll settings: options and duration_minutes. Alias for poll.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "ai_generated": {
                            "description": "Label the post as AI-generated (X made_with_ai).",
                            "type": "boolean"
                          },
                          "ai_disclosure": {
                            "description": "Label the post as AI-generated (X made_with_ai). Alias for ai_generated.",
                            "type": "boolean"
                          },
                          "made_with_ai": {
                            "description": "Label the post as AI-generated (X made_with_ai). Alias for ai_generated.",
                            "type": "boolean"
                          },
                          "paid_partnership": {
                            "description": "Mark the post as a paid partnership (POST /2/tweets paid_partnership). Existing tweet.write.",
                            "type": "boolean"
                          },
                          "x_paid_partnership": {
                            "description": "Mark the post as a paid partnership (POST /2/tweets paid_partnership). Existing tweet.write. Alias for paid_partnership.",
                            "type": "boolean"
                          },
                          "media_alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "media_accessibility": {
                            "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                            "type": "array",
                            "items": {
                              "type": "object",
                              "required": [
                                "index",
                                "alt_text"
                              ],
                              "properties": {
                                "index": {
                                  "type": "integer",
                                  "minimum": 0
                                },
                                "asset_id": {
                                  "type": "string"
                                },
                                "source_url": {
                                  "type": "string",
                                  "format": "uri"
                                },
                                "alt_text": {
                                  "type": "string"
                                }
                              },
                              "additionalProperties": false
                            }
                          }
                        },
                        "additionalProperties": true,
                        "example": {
                          "reply_settings": "following",
                          "poll": {
                            "options": [
                              "Yes",
                              "No"
                            ],
                            "duration_minutes": 1440
                          },
                          "paid_partnership": true
                        }
                      },
                      {
                        "title": "LinkedIn settings",
                        "type": "object",
                        "properties": {
                          "document_title": {
                            "description": "Title for a LinkedIn PDF/document post.",
                            "type": "string"
                          },
                          "linkedin_document_title": {
                            "description": "Title for a LinkedIn PDF/document post. Alias for document_title.",
                            "type": "string"
                          },
                          "document_filename": {
                            "description": "Filename for a LinkedIn document post.",
                            "type": "string"
                          },
                          "mentions": {
                            "description": "LinkedIn organization mention objects.",
                            "type": "array",
                            "items": {}
                          },
                          "linkedin_mentions": {
                            "description": "LinkedIn organization mention objects. Alias for mentions.",
                            "type": "array",
                            "items": {}
                          },
                          "poll": {
                            "description": "LinkedIn poll: { question, options (2-4), duration (ONE_DAY|THREE_DAYS|SEVEN_DAYS|FOURTEEN_DAYS) }. Mutually exclusive with media.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "linkedin_poll": {
                            "description": "LinkedIn poll: { question, options (2-4), duration (ONE_DAY|THREE_DAYS|SEVEN_DAYS|FOURTEEN_DAYS) }. Mutually exclusive with media. Alias for poll.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "thumbnail_url": {
                            "description": "Custom video thumbnail URL.",
                            "type": "string"
                          },
                          "content_call_to_action_label": {
                            "description": "LinkedIn contentCallToActionLabel, including BUY_NOW and SHOP_NOW (version 202504). Pair with content_landing_page.",
                            "enum": [
                              "APPLY",
                              "DOWNLOAD",
                              "VIEW_QUOTE",
                              "LEARN_MORE",
                              "SIGN_UP",
                              "SUBSCRIBE",
                              "REGISTER",
                              "JOIN",
                              "ATTEND",
                              "REQUEST_DEMO",
                              "SEE_MORE",
                              "BUY_NOW",
                              "SHOP_NOW"
                            ],
                            "type": "string"
                          },
                          "cta_label": {
                            "description": "LinkedIn contentCallToActionLabel, including BUY_NOW and SHOP_NOW (version 202504). Pair with content_landing_page. Alias for content_call_to_action_label.",
                            "enum": [
                              "APPLY",
                              "DOWNLOAD",
                              "VIEW_QUOTE",
                              "LEARN_MORE",
                              "SIGN_UP",
                              "SUBSCRIBE",
                              "REGISTER",
                              "JOIN",
                              "ATTEND",
                              "REQUEST_DEMO",
                              "SEE_MORE",
                              "BUY_NOW",
                              "SHOP_NOW"
                            ],
                            "type": "string"
                          },
                          "linkedin_cta_label": {
                            "description": "LinkedIn contentCallToActionLabel, including BUY_NOW and SHOP_NOW (version 202504). Pair with content_landing_page. Alias for content_call_to_action_label.",
                            "enum": [
                              "APPLY",
                              "DOWNLOAD",
                              "VIEW_QUOTE",
                              "LEARN_MORE",
                              "SIGN_UP",
                              "SUBSCRIBE",
                              "REGISTER",
                              "JOIN",
                              "ATTEND",
                              "REQUEST_DEMO",
                              "SEE_MORE",
                              "BUY_NOW",
                              "SHOP_NOW"
                            ],
                            "type": "string"
                          },
                          "content_landing_page": {
                            "description": "Landing page URL sent as contentLandingPage with the LinkedIn call to action.",
                            "type": "string"
                          },
                          "cta_url": {
                            "description": "Landing page URL sent as contentLandingPage with the LinkedIn call to action. Alias for content_landing_page.",
                            "type": "string"
                          },
                          "linkedin_cta_url": {
                            "description": "Landing page URL sent as contentLandingPage with the LinkedIn call to action. Alias for content_landing_page.",
                            "type": "string"
                          },
                          "media_alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "media_accessibility": {
                            "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                            "type": "array",
                            "items": {
                              "type": "object",
                              "required": [
                                "index",
                                "alt_text"
                              ],
                              "properties": {
                                "index": {
                                  "type": "integer",
                                  "minimum": 0
                                },
                                "asset_id": {
                                  "type": "string"
                                },
                                "source_url": {
                                  "type": "string",
                                  "format": "uri"
                                },
                                "alt_text": {
                                  "type": "string"
                                }
                              },
                              "additionalProperties": false
                            }
                          }
                        },
                        "additionalProperties": true,
                        "example": {
                          "document_title": "Launch plan",
                          "mentions": [
                            {
                              "display_name": "posterly",
                              "urn": "urn:li:organization:123"
                            }
                          ],
                          "poll": {
                            "question": "Which feature next?",
                            "options": [
                              "Polls",
                              "Analytics"
                            ],
                            "duration": "THREE_DAYS"
                          },
                          "content_call_to_action_label": "BUY_NOW",
                          "content_landing_page": "https://www.poster.ly"
                        }
                      },
                      {
                        "title": "YouTube settings",
                        "type": "object",
                        "properties": {
                          "title": {
                            "description": "YouTube video title.",
                            "type": "string"
                          },
                          "youtube_title": {
                            "description": "YouTube video title. Alias for title.",
                            "type": "string"
                          },
                          "thumbnail_url": {
                            "description": "Custom YouTube thumbnail URL.",
                            "type": "string"
                          },
                          "privacy_status": {
                            "description": "YouTube video visibility.",
                            "enum": [
                              "public",
                              "unlisted",
                              "private"
                            ],
                            "type": "string"
                          },
                          "privacy": {
                            "description": "YouTube video visibility. Alias for privacy_status.",
                            "enum": [
                              "public",
                              "unlisted",
                              "private"
                            ],
                            "type": "string"
                          },
                          "made_for_kids": {
                            "description": "YouTube made-for-kids declaration.",
                            "type": "boolean"
                          },
                          "tags": {
                            "description": "YouTube tags.",
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "category_id": {
                            "description": "YouTube category ID.",
                            "type": "string"
                          },
                          "notify_subscribers": {
                            "description": "Notify subscribers when the video publishes (default true).",
                            "type": "boolean"
                          },
                          "add_shorts_hashtag": {
                            "description": "Append #Shorts to the description for Shorts-feed eligibility (vertical clips).",
                            "type": "boolean"
                          },
                          "ai_generated": {
                            "description": "Label the video as containing AI/synthetic media (containsSyntheticMedia).",
                            "type": "boolean"
                          },
                          "ai_disclosure": {
                            "description": "Label the video as containing AI/synthetic media (containsSyntheticMedia). Alias for ai_generated.",
                            "type": "boolean"
                          },
                          "brand_partner": {
                            "description": "Optional YouTube brandPartner channel ID (UC…) or handle (@…). Added to videos.insert part=brandPartner when set.",
                            "type": "string"
                          },
                          "brandPartner": {
                            "description": "Optional YouTube brandPartner channel ID (UC…) or handle (@…). Added to videos.insert part=brandPartner when set. Alias for brand_partner.",
                            "type": "string"
                          }
                        },
                        "required": [
                          "title"
                        ],
                        "additionalProperties": true,
                        "example": {
                          "title": "Launch walkthrough",
                          "privacy_status": "unlisted",
                          "notify_subscribers": false,
                          "add_shorts_hashtag": true,
                          "brand_partner": "@brand"
                        }
                      },
                      {
                        "title": "Pinterest settings",
                        "type": "object",
                        "properties": {
                          "board_id": {
                            "description": "Pinterest board ID from the pinterest.boards helper.",
                            "type": "string"
                          },
                          "pinterest_board_id": {
                            "description": "Pinterest board ID from the pinterest.boards helper. Alias for board_id.",
                            "type": "string"
                          },
                          "title": {
                            "description": "Pinterest Pin title.",
                            "type": "string"
                          },
                          "link": {
                            "description": "Destination URL for the Pin.",
                            "type": "string"
                          },
                          "destination_url": {
                            "description": "Destination URL for the Pin. Alias for link.",
                            "type": "string"
                          },
                          "cover_image_url": {
                            "description": "Required for video Pins: a stored, probe-verified JPEG or PNG cover URL (20 MiB maximum).",
                            "type": "string"
                          },
                          "video_cover_url": {
                            "description": "Required for video Pins: a stored, probe-verified JPEG or PNG cover URL (20 MiB maximum). Alias for cover_image_url.",
                            "type": "string"
                          },
                          "pinterest_cover_image_url": {
                            "description": "Required for video Pins: a stored, probe-verified JPEG or PNG cover URL (20 MiB maximum). Alias for cover_image_url.",
                            "type": "string"
                          },
                          "ai_generated": {
                            "description": "Label the Pin as AI-modified (ai_disclosures).",
                            "type": "boolean"
                          },
                          "ai_disclosure": {
                            "description": "Label the Pin as AI-modified (ai_disclosures). Alias for ai_generated.",
                            "type": "boolean"
                          },
                          "product_tags": {
                            "description": "Optional product tags on POST /v5/pins (product_id, optional x/y). Existing pins:write. Pin note is not written.",
                            "type": "array",
                            "items": {}
                          },
                          "media_alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "media_accessibility": {
                            "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                            "type": "array",
                            "items": {
                              "type": "object",
                              "required": [
                                "index",
                                "alt_text"
                              ],
                              "properties": {
                                "index": {
                                  "type": "integer",
                                  "minimum": 0
                                },
                                "asset_id": {
                                  "type": "string"
                                },
                                "source_url": {
                                  "type": "string",
                                  "format": "uri"
                                },
                                "alt_text": {
                                  "type": "string"
                                }
                              },
                              "additionalProperties": false
                            }
                          }
                        },
                        "required": [
                          "board_id"
                        ],
                        "additionalProperties": true,
                        "example": {
                          "board_id": "123456789",
                          "title": "Launch ideas",
                          "link": "https://www.poster.ly",
                          "cover_image_url": "https://assets.poster.ly/users/123/pinterest-video-covers/cover.jpg",
                          "product_tags": [
                            {
                              "product_id": "123"
                            }
                          ]
                        }
                      },
                      {
                        "title": "Threads settings",
                        "type": "object",
                        "properties": {
                          "reply_control": {
                            "description": "Threads reply control setting.",
                            "enum": [
                              "everyone",
                              "accounts_you_follow",
                              "mentioned_only",
                              "followers_only",
                              "parent_post_author_only"
                            ],
                            "type": "string"
                          },
                          "threads_reply_control": {
                            "description": "Threads reply control setting. Alias for reply_control.",
                            "enum": [
                              "everyone",
                              "accounts_you_follow",
                              "mentioned_only",
                              "followers_only",
                              "parent_post_author_only"
                            ],
                            "type": "string"
                          },
                          "poll": {
                            "description": "Threads poll: { options (2-4) }. Text-only, fixed 24h duration.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "threads_poll": {
                            "description": "Threads poll: { options (2-4) }. Text-only, fixed 24h duration. Alias for poll.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "topic_tag": {
                            "description": "A single Threads topic tag (1-50 chars, no periods/ampersands).",
                            "type": "string"
                          },
                          "threads_topic_tag": {
                            "description": "A single Threads topic tag (1-50 chars, no periods/ampersands). Alias for topic_tag.",
                            "type": "string"
                          },
                          "text_attachment": {
                            "description": "Long-form Threads text attachment.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "threads_text_attachment": {
                            "description": "Long-form Threads text attachment. Alias for text_attachment.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "share_to_instagram": {
                            "description": "Also share the published post to the Instagram account linked to the Threads profile as a Story (dark card). Requires Instagram sharing enabled for the Threads profile in the Threads app.",
                            "type": "boolean"
                          },
                          "threads_share_to_instagram": {
                            "description": "Also share the published post to the Instagram account linked to the Threads profile as a Story (dark card). Requires Instagram sharing enabled for the Threads profile in the Threads app. Alias for share_to_instagram.",
                            "type": "boolean"
                          },
                          "is_ghost_post": {
                            "description": "Publish as a Threads ghost post. Text-only.",
                            "type": "boolean"
                          },
                          "threads_is_ghost_post": {
                            "description": "Publish as a Threads ghost post. Text-only. Alias for is_ghost_post.",
                            "type": "boolean"
                          },
                          "is_spoiler": {
                            "description": "Mark the Threads post as a spoiler (full-caption text entity and/or is_spoiler_media).",
                            "type": "boolean"
                          },
                          "threads_is_spoiler": {
                            "description": "Mark the Threads post as a spoiler (full-caption text entity and/or is_spoiler_media). Alias for is_spoiler.",
                            "type": "boolean"
                          },
                          "is_spoiler_media": {
                            "description": "Set is_spoiler_media on the Threads container when media is attached.",
                            "type": "boolean"
                          },
                          "threads_is_spoiler_media": {
                            "description": "Set is_spoiler_media on the Threads container when media is attached. Alias for is_spoiler_media.",
                            "type": "boolean"
                          },
                          "text_entities": {
                            "description": "Threads text_entities, for example spoiler ranges with entity_type, offset, and length.",
                            "type": "array",
                            "items": {}
                          },
                          "threads_text_entities": {
                            "description": "Threads text_entities, for example spoiler ranges with entity_type, offset, and length. Alias for text_entities.",
                            "type": "array",
                            "items": {}
                          },
                          "enable_reply_approvals": {
                            "description": "Require approval before replies appear (enable_reply_approvals).",
                            "type": "boolean"
                          },
                          "threads_enable_reply_approvals": {
                            "description": "Require approval before replies appear (enable_reply_approvals). Alias for enable_reply_approvals.",
                            "type": "boolean"
                          },
                          "gif_attachment": {
                            "description": "GIPHY gif_attachment: { gif_id, provider: \"GIPHY\" }. Tenor is not supported.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "threads_gif_attachment": {
                            "description": "GIPHY gif_attachment: { gif_id, provider: \"GIPHY\" }. Tenor is not supported. Alias for gif_attachment.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "media_alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "media_accessibility": {
                            "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                            "type": "array",
                            "items": {
                              "type": "object",
                              "required": [
                                "index",
                                "alt_text"
                              ],
                              "properties": {
                                "index": {
                                  "type": "integer",
                                  "minimum": 0
                                },
                                "asset_id": {
                                  "type": "string"
                                },
                                "source_url": {
                                  "type": "string",
                                  "format": "uri"
                                },
                                "alt_text": {
                                  "type": "string"
                                }
                              },
                              "additionalProperties": false
                            }
                          }
                        },
                        "additionalProperties": true,
                        "example": {
                          "reply_control": "everyone",
                          "poll": {
                            "options": [
                              "Polls",
                              "Analytics"
                            ]
                          },
                          "topic_tag": "producthunt",
                          "is_ghost_post": false,
                          "enable_reply_approvals": true
                        }
                      },
                      {
                        "title": "Google Business settings",
                        "type": "object",
                        "properties": {
                          "post_type": {
                            "description": "Google Business Profile post type.",
                            "enum": [
                              "STANDARD",
                              "EVENT",
                              "OFFER"
                            ],
                            "type": "string"
                          },
                          "topic_type": {
                            "description": "Google Business Profile post type. Alias for post_type.",
                            "enum": [
                              "STANDARD",
                              "EVENT",
                              "OFFER"
                            ],
                            "type": "string"
                          },
                          "event": {
                            "description": "Event title and start/end date/time.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "offer": {
                            "description": "Offer coupon, redeem URL, and terms.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "cta": {
                            "description": "CTA type and URL.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "recurrence": {
                            "description": "EVENT/OFFER recurrenceInfo: { type: DAILY|WEEKLY|MONTHLY, series_end_time? }. Keeps one-off scheduledTime.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "recurrenceInfo": {
                            "description": "EVENT/OFFER recurrenceInfo: { type: DAILY|WEEKLY|MONTHLY, series_end_time? }. Keeps one-off scheduledTime. Alias for recurrence.",
                            "type": "object",
                            "additionalProperties": true
                          }
                        },
                        "additionalProperties": true,
                        "example": {
                          "post_type": "EVENT",
                          "event": {
                            "title": "Launch night",
                            "start_date": "2026-09-01"
                          },
                          "recurrence": {
                            "type": "WEEKLY",
                            "series_end_time": "2026-12-01T00:00:00Z"
                          },
                          "cta": {
                            "type": "LEARN_MORE",
                            "url": "https://www.poster.ly"
                          }
                        }
                      },
                      {
                        "title": "Telegram settings",
                        "type": "object",
                        "properties": {
                          "parse_mode": {
                            "description": "Telegram caption parse mode when supported.",
                            "enum": [
                              "HTML",
                              "MarkdownV2"
                            ],
                            "type": "string"
                          },
                          "disable_web_page_preview": {
                            "description": "Disable link previews for text posts.",
                            "type": "boolean"
                          },
                          "poll": {
                            "description": "Telegram native poll: { question, options (2-10), allows_multiple_answers? }.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "telegram_poll": {
                            "description": "Telegram native poll: { question, options (2-10), allows_multiple_answers? }. Alias for poll.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "buttons": {
                            "description": "Inline CTA buttons: [{ text, url }] (up to 3).",
                            "type": "array",
                            "items": {}
                          },
                          "telegram_buttons": {
                            "description": "Inline CTA buttons: [{ text, url }] (up to 3). Alias for buttons.",
                            "type": "array",
                            "items": {}
                          },
                          "video_cover_url": {
                            "description": "Cover image URL for sendVideo (Bot API cover).",
                            "type": "string"
                          },
                          "cover_url": {
                            "description": "Cover image URL for sendVideo (Bot API cover). Alias for video_cover_url.",
                            "type": "string"
                          },
                          "telegram_video_cover_url": {
                            "description": "Cover image URL for sendVideo (Bot API cover). Alias for video_cover_url.",
                            "type": "string"
                          },
                          "start_timestamp": {
                            "description": "Video start timestamp in seconds for sendVideo (Bot API start_timestamp).",
                            "type": "number"
                          },
                          "telegram_start_timestamp": {
                            "description": "Video start timestamp in seconds for sendVideo (Bot API start_timestamp). Alias for start_timestamp.",
                            "type": "number"
                          },
                          "is_live_photo": {
                            "description": "Send as sendLivePhoto when both a still image and a video are attached.",
                            "type": "boolean"
                          },
                          "telegram_is_live_photo": {
                            "description": "Send as sendLivePhoto when both a still image and a video are attached. Alias for is_live_photo.",
                            "type": "boolean"
                          }
                        },
                        "additionalProperties": true,
                        "example": {
                          "poll": {
                            "question": "Which feature next?",
                            "options": [
                              "Polls",
                              "Analytics"
                            ]
                          },
                          "buttons": [
                            {
                              "text": "Read more",
                              "url": "https://www.poster.ly"
                            }
                          ],
                          "video_cover_url": "https://example.com/cover.jpg"
                        }
                      },
                      {
                        "title": "Bluesky settings",
                        "type": "object",
                        "properties": {
                          "langs": {
                            "description": "Language tags for the Bluesky post.",
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "content_label": {
                            "description": "Self-applied content warning (tap-to-reveal).",
                            "enum": [
                              "sexual",
                              "nudity",
                              "porn",
                              "graphic-media"
                            ],
                            "type": "string"
                          },
                          "content_warning": {
                            "description": "Self-applied content warning (tap-to-reveal). Alias for content_label.",
                            "enum": [
                              "sexual",
                              "nudity",
                              "porn",
                              "graphic-media"
                            ],
                            "type": "string"
                          },
                          "tags": {
                            "description": "Up to 8 hidden discovery tags (separate from in-text hashtags).",
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "bluesky_tags": {
                            "description": "Up to 8 hidden discovery tags (separate from in-text hashtags). Alias for tags.",
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "quote_url": {
                            "description": "A Bluesky post URL (or AT-URI) to quote.",
                            "type": "string"
                          },
                          "quote": {
                            "description": "A Bluesky post URL (or AT-URI) to quote. Alias for quote_url.",
                            "type": "string"
                          },
                          "bluesky_quote_url": {
                            "description": "A Bluesky post URL (or AT-URI) to quote. Alias for quote_url.",
                            "type": "string"
                          },
                          "disable_quotes": {
                            "description": "Prevent others from quote-posting this post (postgate).",
                            "type": "boolean"
                          },
                          "media_alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "media_accessibility": {
                            "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                            "type": "array",
                            "items": {
                              "type": "object",
                              "required": [
                                "index",
                                "alt_text"
                              ],
                              "properties": {
                                "index": {
                                  "type": "integer",
                                  "minimum": 0
                                },
                                "asset_id": {
                                  "type": "string"
                                },
                                "source_url": {
                                  "type": "string",
                                  "format": "uri"
                                },
                                "alt_text": {
                                  "type": "string"
                                }
                              },
                              "additionalProperties": false
                            }
                          }
                        },
                        "additionalProperties": true,
                        "example": {
                          "langs": [
                            "en"
                          ],
                          "tags": [
                            "producthunt",
                            "launch"
                          ],
                          "quote_url": "https://bsky.app/profile/poster.ly/post/abc123"
                        }
                      },
                      {
                        "title": "Discord settings",
                        "type": "object",
                        "properties": {
                          "media_alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "media_accessibility": {
                            "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                            "type": "array",
                            "items": {
                              "type": "object",
                              "required": [
                                "index",
                                "alt_text"
                              ],
                              "properties": {
                                "index": {
                                  "type": "integer",
                                  "minimum": 0
                                },
                                "asset_id": {
                                  "type": "string"
                                },
                                "source_url": {
                                  "type": "string",
                                  "format": "uri"
                                },
                                "alt_text": {
                                  "type": "string"
                                }
                              },
                              "additionalProperties": false
                            }
                          }
                        },
                        "additionalProperties": true,
                        "example": {
                          "media_alt_texts": {
                            "https://example.com/chart.png": "Q2 revenue chart"
                          }
                        }
                      },
                      {
                        "title": "Slack settings",
                        "type": "object",
                        "properties": {
                          "markdown": {
                            "description": "Send the caption as a Block Kit markdown block on chat.postMessage.",
                            "type": "boolean"
                          },
                          "slack_markdown": {
                            "description": "Send the caption as a Block Kit markdown block on chat.postMessage. Alias for markdown.",
                            "type": "boolean"
                          },
                          "blocks": {
                            "description": "Optional Block Kit blocks (markdown, card, or carousel) passed to chat.postMessage. File upload still uses getUploadURLExternal.",
                            "type": "array",
                            "items": {}
                          },
                          "slack_blocks": {
                            "description": "Optional Block Kit blocks (markdown, card, or carousel) passed to chat.postMessage. File upload still uses getUploadURLExternal. Alias for blocks.",
                            "type": "array",
                            "items": {}
                          }
                        },
                        "additionalProperties": true,
                        "example": {
                          "markdown": true
                        }
                      },
                      {
                        "title": "Mastodon settings",
                        "type": "object",
                        "properties": {
                          "visibility": {
                            "description": "Status visibility (private means followers only).",
                            "enum": [
                              "public",
                              "unlisted",
                              "private"
                            ],
                            "type": "string"
                          },
                          "mastodon_visibility": {
                            "description": "Status visibility (private means followers only). Alias for visibility.",
                            "enum": [
                              "public",
                              "unlisted",
                              "private"
                            ],
                            "type": "string"
                          },
                          "spoiler_text": {
                            "description": "Content warning shown before the post is revealed (marks media sensitive).",
                            "type": "string"
                          },
                          "content_warning": {
                            "description": "Content warning shown before the post is revealed (marks media sensitive). Alias for spoiler_text.",
                            "type": "string"
                          },
                          "mastodon_spoiler_text": {
                            "description": "Content warning shown before the post is revealed (marks media sensitive). Alias for spoiler_text.",
                            "type": "string"
                          },
                          "language": {
                            "description": "ISO 639 language code for the status.",
                            "type": "string"
                          },
                          "mastodon_language": {
                            "description": "ISO 639 language code for the status. Alias for language.",
                            "type": "string"
                          },
                          "quoted_status_id": {
                            "description": "Mastodon status ID to quote (4.5+ quoted_status_id).",
                            "type": "string"
                          },
                          "quote_id": {
                            "description": "Mastodon status ID to quote (4.5+ quoted_status_id). Alias for quoted_status_id.",
                            "type": "string"
                          },
                          "mastodon_quoted_status_id": {
                            "description": "Mastodon status ID to quote (4.5+ quoted_status_id). Alias for quoted_status_id.",
                            "type": "string"
                          },
                          "poll": {
                            "description": "Mastodon poll: { options (2-4), expires_in seconds, multiple? }. Media and a poll can be combined on Mastodon 4.6+.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "mastodon_poll": {
                            "description": "Mastodon poll: { options (2-4), expires_in seconds, multiple? }. Media and a poll can be combined on Mastodon 4.6+. Alias for poll.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "media_alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "media_accessibility": {
                            "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                            "type": "array",
                            "items": {
                              "type": "object",
                              "required": [
                                "index",
                                "alt_text"
                              ],
                              "properties": {
                                "index": {
                                  "type": "integer",
                                  "minimum": 0
                                },
                                "asset_id": {
                                  "type": "string"
                                },
                                "source_url": {
                                  "type": "string",
                                  "format": "uri"
                                },
                                "alt_text": {
                                  "type": "string"
                                }
                              },
                              "additionalProperties": false
                            }
                          }
                        },
                        "additionalProperties": true,
                        "example": {
                          "visibility": "public",
                          "spoiler_text": "Launch spoilers",
                          "language": "en",
                          "quoted_status_id": "123",
                          "poll": {
                            "options": [
                              "Yes",
                              "No"
                            ],
                            "expires_in": 86400
                          }
                        }
                      },
                      {
                        "title": "Dev.to settings",
                        "type": "object",
                        "properties": {
                          "title": {
                            "description": "Article title. Falls back to the first line of the caption.",
                            "type": "string"
                          },
                          "devto_title": {
                            "description": "Article title. Falls back to the first line of the caption. Alias for title.",
                            "type": "string"
                          },
                          "tags": {
                            "description": "Up to 4 tags (lowercase alphanumeric).",
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "devto_tags": {
                            "description": "Up to 4 tags (lowercase alphanumeric). Alias for tags.",
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "canonical_url": {
                            "description": "Canonical URL when cross-posting from your own blog.",
                            "type": "string"
                          },
                          "media_alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "media_accessibility": {
                            "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                            "type": "array",
                            "items": {
                              "type": "object",
                              "required": [
                                "index",
                                "alt_text"
                              ],
                              "properties": {
                                "index": {
                                  "type": "integer",
                                  "minimum": 0
                                },
                                "asset_id": {
                                  "type": "string"
                                },
                                "source_url": {
                                  "type": "string",
                                  "format": "uri"
                                },
                                "alt_text": {
                                  "type": "string"
                                }
                              },
                              "additionalProperties": false
                            }
                          }
                        },
                        "additionalProperties": true,
                        "example": {
                          "title": "How we ship 18 platforms",
                          "tags": [
                            "webdev",
                            "saas"
                          ]
                        }
                      },
                      {
                        "title": "Hashnode settings",
                        "type": "object",
                        "properties": {
                          "title": {
                            "description": "Post title. Falls back to the first line of the caption.",
                            "type": "string"
                          },
                          "hashnode_title": {
                            "description": "Post title. Falls back to the first line of the caption. Alias for title.",
                            "type": "string"
                          },
                          "tags": {
                            "description": "Up to 4 tags (lowercase alphanumeric).",
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "hashnode_tags": {
                            "description": "Up to 4 tags (lowercase alphanumeric). Alias for tags.",
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "publication_id": {
                            "description": "Target publication. Defaults to the account blog captured at connect time.",
                            "type": "string"
                          },
                          "media_alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "media_accessibility": {
                            "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                            "type": "array",
                            "items": {
                              "type": "object",
                              "required": [
                                "index",
                                "alt_text"
                              ],
                              "properties": {
                                "index": {
                                  "type": "integer",
                                  "minimum": 0
                                },
                                "asset_id": {
                                  "type": "string"
                                },
                                "source_url": {
                                  "type": "string",
                                  "format": "uri"
                                },
                                "alt_text": {
                                  "type": "string"
                                }
                              },
                              "additionalProperties": false
                            }
                          }
                        },
                        "additionalProperties": true,
                        "example": {
                          "title": "How we ship 18 platforms",
                          "tags": [
                            "webdev",
                            "saas"
                          ]
                        }
                      },
                      {
                        "title": "WordPress settings",
                        "type": "object",
                        "properties": {
                          "title": {
                            "description": "Post title. Falls back to the first line of the caption.",
                            "type": "string"
                          },
                          "wordpress_title": {
                            "description": "Post title. Falls back to the first line of the caption. Alias for title.",
                            "type": "string"
                          },
                          "media_alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "media_accessibility": {
                            "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                            "type": "array",
                            "items": {
                              "type": "object",
                              "required": [
                                "index",
                                "alt_text"
                              ],
                              "properties": {
                                "index": {
                                  "type": "integer",
                                  "minimum": 0
                                },
                                "asset_id": {
                                  "type": "string"
                                },
                                "source_url": {
                                  "type": "string",
                                  "format": "uri"
                                },
                                "alt_text": {
                                  "type": "string"
                                }
                              },
                              "additionalProperties": false
                            }
                          }
                        },
                        "additionalProperties": true,
                        "example": {
                          "title": "How we ship 18 platforms"
                        }
                      },
                      {
                        "title": "Lemmy settings",
                        "type": "object",
                        "properties": {
                          "community": {
                            "description": "Target community, e.g. technology or technology@lemmy.world.",
                            "type": "string"
                          },
                          "lemmy_community": {
                            "description": "Target community, e.g. technology or technology@lemmy.world. Alias for community.",
                            "type": "string"
                          },
                          "title": {
                            "description": "Post title. Falls back to the first line of the caption.",
                            "type": "string"
                          },
                          "lemmy_title": {
                            "description": "Post title. Falls back to the first line of the caption. Alias for title.",
                            "type": "string"
                          },
                          "url": {
                            "description": "Link post URL. Defaults to the first attached image.",
                            "type": "string"
                          },
                          "lemmy_url": {
                            "description": "Link post URL. Defaults to the first attached image. Alias for url.",
                            "type": "string"
                          },
                          "nsfw": {
                            "description": "Mark the post NSFW.",
                            "type": "boolean"
                          },
                          "media_alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "media_accessibility": {
                            "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                            "type": "array",
                            "items": {
                              "type": "object",
                              "required": [
                                "index",
                                "alt_text"
                              ],
                              "properties": {
                                "index": {
                                  "type": "integer",
                                  "minimum": 0
                                },
                                "asset_id": {
                                  "type": "string"
                                },
                                "source_url": {
                                  "type": "string",
                                  "format": "uri"
                                },
                                "alt_text": {
                                  "type": "string"
                                }
                              },
                              "additionalProperties": false
                            }
                          }
                        },
                        "required": [
                          "community"
                        ],
                        "additionalProperties": true,
                        "example": {
                          "community": "selfhosted@lemmy.world",
                          "title": "posterly now posts to Lemmy"
                        }
                      }
                    ],
                    "additionalProperties": true
                  },
                  "settings": {
                    "type": "object",
                    "description": "Platform-specific composer controls. Call list_platforms or get_platform_schema for the selected account before sending settings.",
                    "oneOf": [
                      {
                        "title": "Instagram settings",
                        "type": "object",
                        "properties": {
                          "__type": {
                            "description": "Instagram account type hint.",
                            "enum": [
                              "instagram",
                              "instagram-standalone"
                            ],
                            "type": "string"
                          },
                          "post_type": {
                            "description": "Instagram publishing format.",
                            "enum": [
                              "post",
                              "feed",
                              "story",
                              "reel",
                              "carousel"
                            ],
                            "type": "string"
                          },
                          "is_trial_reel": {
                            "description": "Request an Instagram Trial Reel when the account supports it.",
                            "type": "boolean"
                          },
                          "trial_reel": {
                            "description": "Request an Instagram Trial Reel when the account supports it. Alias for is_trial_reel.",
                            "type": "boolean"
                          },
                          "graduation_strategy": {
                            "description": "Trial Reel graduation strategy.",
                            "enum": [
                              "MANUAL",
                              "SS_PERFORMANCE"
                            ],
                            "type": "string"
                          },
                          "collaborators": {
                            "description": "Native co-author invitations. Meta-linked Instagram accounts only; feed images, Reels, and carousels; maximum 3; not Stories.",
                            "type": "array",
                            "items": {}
                          },
                          "user_tags": {
                            "description": "Native clickable media tags, not caption @mentions. Supported by eligible direct Instagram and Meta-linked connections; feed images, Reels/video, and Stories. Tags apply to each carousel child and the first Story in a Story Series.",
                            "type": "array",
                            "items": {}
                          },
                          "first_comment": {
                            "description": "First comment to publish after the post.",
                            "type": "string"
                          },
                          "reel_cover_url": {
                            "description": "Custom Reel cover image URL.",
                            "type": "string"
                          },
                          "cover_url": {
                            "description": "Custom Reel cover image URL. Alias for reel_cover_url.",
                            "type": "string"
                          },
                          "reel_thumb_offset": {
                            "description": "Video timestamp, in milliseconds, for a generated Reel thumbnail.",
                            "type": "number"
                          },
                          "thumb_offset": {
                            "description": "Video timestamp, in milliseconds, for a generated Reel thumbnail. Alias for reel_thumb_offset.",
                            "type": "number"
                          },
                          "is_ai_generated": {
                            "description": "Label the parent media container as AI-generated (is_ai_generated). For carousels, set this on the parent only, never on child slides.",
                            "type": "boolean"
                          },
                          "instagram_is_ai_generated": {
                            "description": "Label the parent media container as AI-generated (is_ai_generated). For carousels, set this on the parent only, never on child slides. Alias for is_ai_generated.",
                            "type": "boolean"
                          },
                          "ai_generated": {
                            "description": "Label the parent media container as AI-generated (is_ai_generated). For carousels, set this on the parent only, never on child slides. Alias for is_ai_generated.",
                            "type": "boolean"
                          },
                          "audio_id": {
                            "description": "Licensed Instagram audio ID for Reels (audio_configuration.audio_id). Meta-linked Facebook Login accounts only; hidden for Instagram Login.",
                            "type": "string"
                          },
                          "instagram_audio_id": {
                            "description": "Licensed Instagram audio ID for Reels (audio_configuration.audio_id). Meta-linked Facebook Login accounts only; hidden for Instagram Login. Alias for audio_id.",
                            "type": "string"
                          },
                          "media_alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "media_accessibility": {
                            "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                            "type": "array",
                            "items": {
                              "type": "object",
                              "required": [
                                "index",
                                "alt_text"
                              ],
                              "properties": {
                                "index": {
                                  "type": "integer",
                                  "minimum": 0
                                },
                                "asset_id": {
                                  "type": "string"
                                },
                                "source_url": {
                                  "type": "string",
                                  "format": "uri"
                                },
                                "alt_text": {
                                  "type": "string"
                                }
                              },
                              "additionalProperties": false
                            }
                          }
                        },
                        "additionalProperties": true,
                        "example": {
                          "__type": "instagram",
                          "post_type": "reel",
                          "first_comment": "Full details in the caption.",
                          "is_ai_generated": true
                        }
                      },
                      {
                        "title": "Facebook settings",
                        "type": "object",
                        "properties": {
                          "post_type": {
                            "description": "Facebook publishing format. Reel uses the Graph Reels API and must be 90 seconds or shorter; use video for longer clips. A 90.0 second Reel is allowed.",
                            "enum": [
                              "post",
                              "feed",
                              "story",
                              "reel",
                              "cover_photo"
                            ],
                            "type": "string"
                          },
                          "text_format_preset_id": {
                            "description": "Styled text post background preset.",
                            "type": "string"
                          },
                          "background_preset_id": {
                            "description": "Styled text post background preset. Alias for text_format_preset_id.",
                            "type": "string"
                          },
                          "reel_cover_url": {
                            "description": "Custom Reel cover image URL.",
                            "type": "string"
                          },
                          "cover_url": {
                            "description": "Custom Reel cover image URL. Alias for reel_cover_url.",
                            "type": "string"
                          },
                          "media_alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "media_accessibility": {
                            "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                            "type": "array",
                            "items": {
                              "type": "object",
                              "required": [
                                "index",
                                "alt_text"
                              ],
                              "properties": {
                                "index": {
                                  "type": "integer",
                                  "minimum": 0
                                },
                                "asset_id": {
                                  "type": "string"
                                },
                                "source_url": {
                                  "type": "string",
                                  "format": "uri"
                                },
                                "alt_text": {
                                  "type": "string"
                                }
                              },
                              "additionalProperties": false
                            }
                          }
                        },
                        "additionalProperties": true,
                        "example": {
                          "post_type": "reel",
                          "reel_cover_url": "https://example.com/cover.jpg"
                        }
                      },
                      {
                        "title": "TikTok settings",
                        "type": "object",
                        "properties": {
                          "privacy_level": {
                            "description": "TikTok direct-post privacy level from the creator info helper.",
                            "type": "string"
                          },
                          "allow_comment": {
                            "description": "Allow comments when direct posting.",
                            "type": "boolean"
                          },
                          "allow_duet": {
                            "description": "Allow duets when direct posting.",
                            "type": "boolean"
                          },
                          "allow_stitch": {
                            "description": "Allow stitches when direct posting.",
                            "type": "boolean"
                          },
                          "title": {
                            "description": "TikTok title/caption field.",
                            "type": "string"
                          },
                          "media_type": {
                            "description": "Set to PHOTO for TikTok photo posts or multi-photo slideshows.",
                            "enum": [
                              "PHOTO"
                            ],
                            "type": "string"
                          },
                          "photo_cover_index": {
                            "description": "Zero-based cover image index for TikTok photo posts.",
                            "type": "number"
                          },
                          "video_cover_timestamp_ms": {
                            "description": "Millisecond timestamp of the video frame to use as the cover (direct post only).",
                            "type": "number"
                          },
                          "cover_timestamp_ms": {
                            "description": "Millisecond timestamp of the video frame to use as the cover (direct post only). Alias for video_cover_timestamp_ms.",
                            "type": "number"
                          },
                          "auto_add_music": {
                            "description": "Ask TikTok to add recommended music to photo posts when direct posting.",
                            "type": "boolean"
                          },
                          "is_commercial_content": {
                            "description": "TikTok commercial content disclosure.",
                            "type": "boolean"
                          },
                          "is_your_brand": {
                            "description": "TikTok branded content: your own brand.",
                            "type": "boolean"
                          },
                          "is_branded_content": {
                            "description": "TikTok branded content: third-party brand.",
                            "type": "boolean"
                          },
                          "ai_generated": {
                            "description": "Label the post as AI-generated (TikTok is_aigc).",
                            "type": "boolean"
                          },
                          "ai_disclosure": {
                            "description": "Label the post as AI-generated (TikTok is_aigc). Alias for ai_generated.",
                            "type": "boolean"
                          }
                        },
                        "additionalProperties": true,
                        "example": {
                          "privacy_level": "PUBLIC_TO_EVERYONE",
                          "media_type": "PHOTO",
                          "photo_cover_index": 0,
                          "auto_add_music": true,
                          "allow_comment": true,
                          "allow_duet": false,
                          "allow_stitch": false,
                          "video_cover_timestamp_ms": 1500
                        }
                      },
                      {
                        "title": "X settings",
                        "type": "object",
                        "properties": {
                          "reply_settings": {
                            "description": "Who can reply to the post.",
                            "enum": [
                              "everyone",
                              "following",
                              "mentionedUsers",
                              "subscribers",
                              "verified"
                            ],
                            "type": "string"
                          },
                          "x_reply_settings": {
                            "description": "Who can reply to the post. Alias for reply_settings.",
                            "enum": [
                              "everyone",
                              "following",
                              "mentionedUsers",
                              "subscribers",
                              "verified"
                            ],
                            "type": "string"
                          },
                          "poll": {
                            "description": "X poll settings: options and duration_minutes.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "x_poll": {
                            "description": "X poll settings: options and duration_minutes. Alias for poll.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "ai_generated": {
                            "description": "Label the post as AI-generated (X made_with_ai).",
                            "type": "boolean"
                          },
                          "ai_disclosure": {
                            "description": "Label the post as AI-generated (X made_with_ai). Alias for ai_generated.",
                            "type": "boolean"
                          },
                          "made_with_ai": {
                            "description": "Label the post as AI-generated (X made_with_ai). Alias for ai_generated.",
                            "type": "boolean"
                          },
                          "paid_partnership": {
                            "description": "Mark the post as a paid partnership (POST /2/tweets paid_partnership). Existing tweet.write.",
                            "type": "boolean"
                          },
                          "x_paid_partnership": {
                            "description": "Mark the post as a paid partnership (POST /2/tweets paid_partnership). Existing tweet.write. Alias for paid_partnership.",
                            "type": "boolean"
                          },
                          "media_alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "media_accessibility": {
                            "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                            "type": "array",
                            "items": {
                              "type": "object",
                              "required": [
                                "index",
                                "alt_text"
                              ],
                              "properties": {
                                "index": {
                                  "type": "integer",
                                  "minimum": 0
                                },
                                "asset_id": {
                                  "type": "string"
                                },
                                "source_url": {
                                  "type": "string",
                                  "format": "uri"
                                },
                                "alt_text": {
                                  "type": "string"
                                }
                              },
                              "additionalProperties": false
                            }
                          }
                        },
                        "additionalProperties": true,
                        "example": {
                          "reply_settings": "following",
                          "poll": {
                            "options": [
                              "Yes",
                              "No"
                            ],
                            "duration_minutes": 1440
                          },
                          "paid_partnership": true
                        }
                      },
                      {
                        "title": "LinkedIn settings",
                        "type": "object",
                        "properties": {
                          "document_title": {
                            "description": "Title for a LinkedIn PDF/document post.",
                            "type": "string"
                          },
                          "linkedin_document_title": {
                            "description": "Title for a LinkedIn PDF/document post. Alias for document_title.",
                            "type": "string"
                          },
                          "document_filename": {
                            "description": "Filename for a LinkedIn document post.",
                            "type": "string"
                          },
                          "mentions": {
                            "description": "LinkedIn organization mention objects.",
                            "type": "array",
                            "items": {}
                          },
                          "linkedin_mentions": {
                            "description": "LinkedIn organization mention objects. Alias for mentions.",
                            "type": "array",
                            "items": {}
                          },
                          "poll": {
                            "description": "LinkedIn poll: { question, options (2-4), duration (ONE_DAY|THREE_DAYS|SEVEN_DAYS|FOURTEEN_DAYS) }. Mutually exclusive with media.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "linkedin_poll": {
                            "description": "LinkedIn poll: { question, options (2-4), duration (ONE_DAY|THREE_DAYS|SEVEN_DAYS|FOURTEEN_DAYS) }. Mutually exclusive with media. Alias for poll.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "thumbnail_url": {
                            "description": "Custom video thumbnail URL.",
                            "type": "string"
                          },
                          "content_call_to_action_label": {
                            "description": "LinkedIn contentCallToActionLabel, including BUY_NOW and SHOP_NOW (version 202504). Pair with content_landing_page.",
                            "enum": [
                              "APPLY",
                              "DOWNLOAD",
                              "VIEW_QUOTE",
                              "LEARN_MORE",
                              "SIGN_UP",
                              "SUBSCRIBE",
                              "REGISTER",
                              "JOIN",
                              "ATTEND",
                              "REQUEST_DEMO",
                              "SEE_MORE",
                              "BUY_NOW",
                              "SHOP_NOW"
                            ],
                            "type": "string"
                          },
                          "cta_label": {
                            "description": "LinkedIn contentCallToActionLabel, including BUY_NOW and SHOP_NOW (version 202504). Pair with content_landing_page. Alias for content_call_to_action_label.",
                            "enum": [
                              "APPLY",
                              "DOWNLOAD",
                              "VIEW_QUOTE",
                              "LEARN_MORE",
                              "SIGN_UP",
                              "SUBSCRIBE",
                              "REGISTER",
                              "JOIN",
                              "ATTEND",
                              "REQUEST_DEMO",
                              "SEE_MORE",
                              "BUY_NOW",
                              "SHOP_NOW"
                            ],
                            "type": "string"
                          },
                          "linkedin_cta_label": {
                            "description": "LinkedIn contentCallToActionLabel, including BUY_NOW and SHOP_NOW (version 202504). Pair with content_landing_page. Alias for content_call_to_action_label.",
                            "enum": [
                              "APPLY",
                              "DOWNLOAD",
                              "VIEW_QUOTE",
                              "LEARN_MORE",
                              "SIGN_UP",
                              "SUBSCRIBE",
                              "REGISTER",
                              "JOIN",
                              "ATTEND",
                              "REQUEST_DEMO",
                              "SEE_MORE",
                              "BUY_NOW",
                              "SHOP_NOW"
                            ],
                            "type": "string"
                          },
                          "content_landing_page": {
                            "description": "Landing page URL sent as contentLandingPage with the LinkedIn call to action.",
                            "type": "string"
                          },
                          "cta_url": {
                            "description": "Landing page URL sent as contentLandingPage with the LinkedIn call to action. Alias for content_landing_page.",
                            "type": "string"
                          },
                          "linkedin_cta_url": {
                            "description": "Landing page URL sent as contentLandingPage with the LinkedIn call to action. Alias for content_landing_page.",
                            "type": "string"
                          },
                          "media_alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "media_accessibility": {
                            "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                            "type": "array",
                            "items": {
                              "type": "object",
                              "required": [
                                "index",
                                "alt_text"
                              ],
                              "properties": {
                                "index": {
                                  "type": "integer",
                                  "minimum": 0
                                },
                                "asset_id": {
                                  "type": "string"
                                },
                                "source_url": {
                                  "type": "string",
                                  "format": "uri"
                                },
                                "alt_text": {
                                  "type": "string"
                                }
                              },
                              "additionalProperties": false
                            }
                          }
                        },
                        "additionalProperties": true,
                        "example": {
                          "document_title": "Launch plan",
                          "mentions": [
                            {
                              "display_name": "posterly",
                              "urn": "urn:li:organization:123"
                            }
                          ],
                          "poll": {
                            "question": "Which feature next?",
                            "options": [
                              "Polls",
                              "Analytics"
                            ],
                            "duration": "THREE_DAYS"
                          },
                          "content_call_to_action_label": "BUY_NOW",
                          "content_landing_page": "https://www.poster.ly"
                        }
                      },
                      {
                        "title": "YouTube settings",
                        "type": "object",
                        "properties": {
                          "title": {
                            "description": "YouTube video title.",
                            "type": "string"
                          },
                          "youtube_title": {
                            "description": "YouTube video title. Alias for title.",
                            "type": "string"
                          },
                          "thumbnail_url": {
                            "description": "Custom YouTube thumbnail URL.",
                            "type": "string"
                          },
                          "privacy_status": {
                            "description": "YouTube video visibility.",
                            "enum": [
                              "public",
                              "unlisted",
                              "private"
                            ],
                            "type": "string"
                          },
                          "privacy": {
                            "description": "YouTube video visibility. Alias for privacy_status.",
                            "enum": [
                              "public",
                              "unlisted",
                              "private"
                            ],
                            "type": "string"
                          },
                          "made_for_kids": {
                            "description": "YouTube made-for-kids declaration.",
                            "type": "boolean"
                          },
                          "tags": {
                            "description": "YouTube tags.",
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "category_id": {
                            "description": "YouTube category ID.",
                            "type": "string"
                          },
                          "notify_subscribers": {
                            "description": "Notify subscribers when the video publishes (default true).",
                            "type": "boolean"
                          },
                          "add_shorts_hashtag": {
                            "description": "Append #Shorts to the description for Shorts-feed eligibility (vertical clips).",
                            "type": "boolean"
                          },
                          "ai_generated": {
                            "description": "Label the video as containing AI/synthetic media (containsSyntheticMedia).",
                            "type": "boolean"
                          },
                          "ai_disclosure": {
                            "description": "Label the video as containing AI/synthetic media (containsSyntheticMedia). Alias for ai_generated.",
                            "type": "boolean"
                          },
                          "brand_partner": {
                            "description": "Optional YouTube brandPartner channel ID (UC…) or handle (@…). Added to videos.insert part=brandPartner when set.",
                            "type": "string"
                          },
                          "brandPartner": {
                            "description": "Optional YouTube brandPartner channel ID (UC…) or handle (@…). Added to videos.insert part=brandPartner when set. Alias for brand_partner.",
                            "type": "string"
                          }
                        },
                        "required": [
                          "title"
                        ],
                        "additionalProperties": true,
                        "example": {
                          "title": "Launch walkthrough",
                          "privacy_status": "unlisted",
                          "notify_subscribers": false,
                          "add_shorts_hashtag": true,
                          "brand_partner": "@brand"
                        }
                      },
                      {
                        "title": "Pinterest settings",
                        "type": "object",
                        "properties": {
                          "board_id": {
                            "description": "Pinterest board ID from the pinterest.boards helper.",
                            "type": "string"
                          },
                          "pinterest_board_id": {
                            "description": "Pinterest board ID from the pinterest.boards helper. Alias for board_id.",
                            "type": "string"
                          },
                          "title": {
                            "description": "Pinterest Pin title.",
                            "type": "string"
                          },
                          "link": {
                            "description": "Destination URL for the Pin.",
                            "type": "string"
                          },
                          "destination_url": {
                            "description": "Destination URL for the Pin. Alias for link.",
                            "type": "string"
                          },
                          "cover_image_url": {
                            "description": "Required for video Pins: a stored, probe-verified JPEG or PNG cover URL (20 MiB maximum).",
                            "type": "string"
                          },
                          "video_cover_url": {
                            "description": "Required for video Pins: a stored, probe-verified JPEG or PNG cover URL (20 MiB maximum). Alias for cover_image_url.",
                            "type": "string"
                          },
                          "pinterest_cover_image_url": {
                            "description": "Required for video Pins: a stored, probe-verified JPEG or PNG cover URL (20 MiB maximum). Alias for cover_image_url.",
                            "type": "string"
                          },
                          "ai_generated": {
                            "description": "Label the Pin as AI-modified (ai_disclosures).",
                            "type": "boolean"
                          },
                          "ai_disclosure": {
                            "description": "Label the Pin as AI-modified (ai_disclosures). Alias for ai_generated.",
                            "type": "boolean"
                          },
                          "product_tags": {
                            "description": "Optional product tags on POST /v5/pins (product_id, optional x/y). Existing pins:write. Pin note is not written.",
                            "type": "array",
                            "items": {}
                          },
                          "media_alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "media_accessibility": {
                            "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                            "type": "array",
                            "items": {
                              "type": "object",
                              "required": [
                                "index",
                                "alt_text"
                              ],
                              "properties": {
                                "index": {
                                  "type": "integer",
                                  "minimum": 0
                                },
                                "asset_id": {
                                  "type": "string"
                                },
                                "source_url": {
                                  "type": "string",
                                  "format": "uri"
                                },
                                "alt_text": {
                                  "type": "string"
                                }
                              },
                              "additionalProperties": false
                            }
                          }
                        },
                        "required": [
                          "board_id"
                        ],
                        "additionalProperties": true,
                        "example": {
                          "board_id": "123456789",
                          "title": "Launch ideas",
                          "link": "https://www.poster.ly",
                          "cover_image_url": "https://assets.poster.ly/users/123/pinterest-video-covers/cover.jpg",
                          "product_tags": [
                            {
                              "product_id": "123"
                            }
                          ]
                        }
                      },
                      {
                        "title": "Threads settings",
                        "type": "object",
                        "properties": {
                          "reply_control": {
                            "description": "Threads reply control setting.",
                            "enum": [
                              "everyone",
                              "accounts_you_follow",
                              "mentioned_only",
                              "followers_only",
                              "parent_post_author_only"
                            ],
                            "type": "string"
                          },
                          "threads_reply_control": {
                            "description": "Threads reply control setting. Alias for reply_control.",
                            "enum": [
                              "everyone",
                              "accounts_you_follow",
                              "mentioned_only",
                              "followers_only",
                              "parent_post_author_only"
                            ],
                            "type": "string"
                          },
                          "poll": {
                            "description": "Threads poll: { options (2-4) }. Text-only, fixed 24h duration.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "threads_poll": {
                            "description": "Threads poll: { options (2-4) }. Text-only, fixed 24h duration. Alias for poll.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "topic_tag": {
                            "description": "A single Threads topic tag (1-50 chars, no periods/ampersands).",
                            "type": "string"
                          },
                          "threads_topic_tag": {
                            "description": "A single Threads topic tag (1-50 chars, no periods/ampersands). Alias for topic_tag.",
                            "type": "string"
                          },
                          "text_attachment": {
                            "description": "Long-form Threads text attachment.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "threads_text_attachment": {
                            "description": "Long-form Threads text attachment. Alias for text_attachment.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "share_to_instagram": {
                            "description": "Also share the published post to the Instagram account linked to the Threads profile as a Story (dark card). Requires Instagram sharing enabled for the Threads profile in the Threads app.",
                            "type": "boolean"
                          },
                          "threads_share_to_instagram": {
                            "description": "Also share the published post to the Instagram account linked to the Threads profile as a Story (dark card). Requires Instagram sharing enabled for the Threads profile in the Threads app. Alias for share_to_instagram.",
                            "type": "boolean"
                          },
                          "is_ghost_post": {
                            "description": "Publish as a Threads ghost post. Text-only.",
                            "type": "boolean"
                          },
                          "threads_is_ghost_post": {
                            "description": "Publish as a Threads ghost post. Text-only. Alias for is_ghost_post.",
                            "type": "boolean"
                          },
                          "is_spoiler": {
                            "description": "Mark the Threads post as a spoiler (full-caption text entity and/or is_spoiler_media).",
                            "type": "boolean"
                          },
                          "threads_is_spoiler": {
                            "description": "Mark the Threads post as a spoiler (full-caption text entity and/or is_spoiler_media). Alias for is_spoiler.",
                            "type": "boolean"
                          },
                          "is_spoiler_media": {
                            "description": "Set is_spoiler_media on the Threads container when media is attached.",
                            "type": "boolean"
                          },
                          "threads_is_spoiler_media": {
                            "description": "Set is_spoiler_media on the Threads container when media is attached. Alias for is_spoiler_media.",
                            "type": "boolean"
                          },
                          "text_entities": {
                            "description": "Threads text_entities, for example spoiler ranges with entity_type, offset, and length.",
                            "type": "array",
                            "items": {}
                          },
                          "threads_text_entities": {
                            "description": "Threads text_entities, for example spoiler ranges with entity_type, offset, and length. Alias for text_entities.",
                            "type": "array",
                            "items": {}
                          },
                          "enable_reply_approvals": {
                            "description": "Require approval before replies appear (enable_reply_approvals).",
                            "type": "boolean"
                          },
                          "threads_enable_reply_approvals": {
                            "description": "Require approval before replies appear (enable_reply_approvals). Alias for enable_reply_approvals.",
                            "type": "boolean"
                          },
                          "gif_attachment": {
                            "description": "GIPHY gif_attachment: { gif_id, provider: \"GIPHY\" }. Tenor is not supported.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "threads_gif_attachment": {
                            "description": "GIPHY gif_attachment: { gif_id, provider: \"GIPHY\" }. Tenor is not supported. Alias for gif_attachment.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "media_alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "media_accessibility": {
                            "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                            "type": "array",
                            "items": {
                              "type": "object",
                              "required": [
                                "index",
                                "alt_text"
                              ],
                              "properties": {
                                "index": {
                                  "type": "integer",
                                  "minimum": 0
                                },
                                "asset_id": {
                                  "type": "string"
                                },
                                "source_url": {
                                  "type": "string",
                                  "format": "uri"
                                },
                                "alt_text": {
                                  "type": "string"
                                }
                              },
                              "additionalProperties": false
                            }
                          }
                        },
                        "additionalProperties": true,
                        "example": {
                          "reply_control": "everyone",
                          "poll": {
                            "options": [
                              "Polls",
                              "Analytics"
                            ]
                          },
                          "topic_tag": "producthunt",
                          "is_ghost_post": false,
                          "enable_reply_approvals": true
                        }
                      },
                      {
                        "title": "Google Business settings",
                        "type": "object",
                        "properties": {
                          "post_type": {
                            "description": "Google Business Profile post type.",
                            "enum": [
                              "STANDARD",
                              "EVENT",
                              "OFFER"
                            ],
                            "type": "string"
                          },
                          "topic_type": {
                            "description": "Google Business Profile post type. Alias for post_type.",
                            "enum": [
                              "STANDARD",
                              "EVENT",
                              "OFFER"
                            ],
                            "type": "string"
                          },
                          "event": {
                            "description": "Event title and start/end date/time.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "offer": {
                            "description": "Offer coupon, redeem URL, and terms.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "cta": {
                            "description": "CTA type and URL.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "recurrence": {
                            "description": "EVENT/OFFER recurrenceInfo: { type: DAILY|WEEKLY|MONTHLY, series_end_time? }. Keeps one-off scheduledTime.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "recurrenceInfo": {
                            "description": "EVENT/OFFER recurrenceInfo: { type: DAILY|WEEKLY|MONTHLY, series_end_time? }. Keeps one-off scheduledTime. Alias for recurrence.",
                            "type": "object",
                            "additionalProperties": true
                          }
                        },
                        "additionalProperties": true,
                        "example": {
                          "post_type": "EVENT",
                          "event": {
                            "title": "Launch night",
                            "start_date": "2026-09-01"
                          },
                          "recurrence": {
                            "type": "WEEKLY",
                            "series_end_time": "2026-12-01T00:00:00Z"
                          },
                          "cta": {
                            "type": "LEARN_MORE",
                            "url": "https://www.poster.ly"
                          }
                        }
                      },
                      {
                        "title": "Telegram settings",
                        "type": "object",
                        "properties": {
                          "parse_mode": {
                            "description": "Telegram caption parse mode when supported.",
                            "enum": [
                              "HTML",
                              "MarkdownV2"
                            ],
                            "type": "string"
                          },
                          "disable_web_page_preview": {
                            "description": "Disable link previews for text posts.",
                            "type": "boolean"
                          },
                          "poll": {
                            "description": "Telegram native poll: { question, options (2-10), allows_multiple_answers? }.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "telegram_poll": {
                            "description": "Telegram native poll: { question, options (2-10), allows_multiple_answers? }. Alias for poll.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "buttons": {
                            "description": "Inline CTA buttons: [{ text, url }] (up to 3).",
                            "type": "array",
                            "items": {}
                          },
                          "telegram_buttons": {
                            "description": "Inline CTA buttons: [{ text, url }] (up to 3). Alias for buttons.",
                            "type": "array",
                            "items": {}
                          },
                          "video_cover_url": {
                            "description": "Cover image URL for sendVideo (Bot API cover).",
                            "type": "string"
                          },
                          "cover_url": {
                            "description": "Cover image URL for sendVideo (Bot API cover). Alias for video_cover_url.",
                            "type": "string"
                          },
                          "telegram_video_cover_url": {
                            "description": "Cover image URL for sendVideo (Bot API cover). Alias for video_cover_url.",
                            "type": "string"
                          },
                          "start_timestamp": {
                            "description": "Video start timestamp in seconds for sendVideo (Bot API start_timestamp).",
                            "type": "number"
                          },
                          "telegram_start_timestamp": {
                            "description": "Video start timestamp in seconds for sendVideo (Bot API start_timestamp). Alias for start_timestamp.",
                            "type": "number"
                          },
                          "is_live_photo": {
                            "description": "Send as sendLivePhoto when both a still image and a video are attached.",
                            "type": "boolean"
                          },
                          "telegram_is_live_photo": {
                            "description": "Send as sendLivePhoto when both a still image and a video are attached. Alias for is_live_photo.",
                            "type": "boolean"
                          }
                        },
                        "additionalProperties": true,
                        "example": {
                          "poll": {
                            "question": "Which feature next?",
                            "options": [
                              "Polls",
                              "Analytics"
                            ]
                          },
                          "buttons": [
                            {
                              "text": "Read more",
                              "url": "https://www.poster.ly"
                            }
                          ],
                          "video_cover_url": "https://example.com/cover.jpg"
                        }
                      },
                      {
                        "title": "Bluesky settings",
                        "type": "object",
                        "properties": {
                          "langs": {
                            "description": "Language tags for the Bluesky post.",
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "content_label": {
                            "description": "Self-applied content warning (tap-to-reveal).",
                            "enum": [
                              "sexual",
                              "nudity",
                              "porn",
                              "graphic-media"
                            ],
                            "type": "string"
                          },
                          "content_warning": {
                            "description": "Self-applied content warning (tap-to-reveal). Alias for content_label.",
                            "enum": [
                              "sexual",
                              "nudity",
                              "porn",
                              "graphic-media"
                            ],
                            "type": "string"
                          },
                          "tags": {
                            "description": "Up to 8 hidden discovery tags (separate from in-text hashtags).",
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "bluesky_tags": {
                            "description": "Up to 8 hidden discovery tags (separate from in-text hashtags). Alias for tags.",
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "quote_url": {
                            "description": "A Bluesky post URL (or AT-URI) to quote.",
                            "type": "string"
                          },
                          "quote": {
                            "description": "A Bluesky post URL (or AT-URI) to quote. Alias for quote_url.",
                            "type": "string"
                          },
                          "bluesky_quote_url": {
                            "description": "A Bluesky post URL (or AT-URI) to quote. Alias for quote_url.",
                            "type": "string"
                          },
                          "disable_quotes": {
                            "description": "Prevent others from quote-posting this post (postgate).",
                            "type": "boolean"
                          },
                          "media_alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "media_accessibility": {
                            "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                            "type": "array",
                            "items": {
                              "type": "object",
                              "required": [
                                "index",
                                "alt_text"
                              ],
                              "properties": {
                                "index": {
                                  "type": "integer",
                                  "minimum": 0
                                },
                                "asset_id": {
                                  "type": "string"
                                },
                                "source_url": {
                                  "type": "string",
                                  "format": "uri"
                                },
                                "alt_text": {
                                  "type": "string"
                                }
                              },
                              "additionalProperties": false
                            }
                          }
                        },
                        "additionalProperties": true,
                        "example": {
                          "langs": [
                            "en"
                          ],
                          "tags": [
                            "producthunt",
                            "launch"
                          ],
                          "quote_url": "https://bsky.app/profile/poster.ly/post/abc123"
                        }
                      },
                      {
                        "title": "Discord settings",
                        "type": "object",
                        "properties": {
                          "media_alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "media_accessibility": {
                            "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                            "type": "array",
                            "items": {
                              "type": "object",
                              "required": [
                                "index",
                                "alt_text"
                              ],
                              "properties": {
                                "index": {
                                  "type": "integer",
                                  "minimum": 0
                                },
                                "asset_id": {
                                  "type": "string"
                                },
                                "source_url": {
                                  "type": "string",
                                  "format": "uri"
                                },
                                "alt_text": {
                                  "type": "string"
                                }
                              },
                              "additionalProperties": false
                            }
                          }
                        },
                        "additionalProperties": true,
                        "example": {
                          "media_alt_texts": {
                            "https://example.com/chart.png": "Q2 revenue chart"
                          }
                        }
                      },
                      {
                        "title": "Slack settings",
                        "type": "object",
                        "properties": {
                          "markdown": {
                            "description": "Send the caption as a Block Kit markdown block on chat.postMessage.",
                            "type": "boolean"
                          },
                          "slack_markdown": {
                            "description": "Send the caption as a Block Kit markdown block on chat.postMessage. Alias for markdown.",
                            "type": "boolean"
                          },
                          "blocks": {
                            "description": "Optional Block Kit blocks (markdown, card, or carousel) passed to chat.postMessage. File upload still uses getUploadURLExternal.",
                            "type": "array",
                            "items": {}
                          },
                          "slack_blocks": {
                            "description": "Optional Block Kit blocks (markdown, card, or carousel) passed to chat.postMessage. File upload still uses getUploadURLExternal. Alias for blocks.",
                            "type": "array",
                            "items": {}
                          }
                        },
                        "additionalProperties": true,
                        "example": {
                          "markdown": true
                        }
                      },
                      {
                        "title": "Mastodon settings",
                        "type": "object",
                        "properties": {
                          "visibility": {
                            "description": "Status visibility (private means followers only).",
                            "enum": [
                              "public",
                              "unlisted",
                              "private"
                            ],
                            "type": "string"
                          },
                          "mastodon_visibility": {
                            "description": "Status visibility (private means followers only). Alias for visibility.",
                            "enum": [
                              "public",
                              "unlisted",
                              "private"
                            ],
                            "type": "string"
                          },
                          "spoiler_text": {
                            "description": "Content warning shown before the post is revealed (marks media sensitive).",
                            "type": "string"
                          },
                          "content_warning": {
                            "description": "Content warning shown before the post is revealed (marks media sensitive). Alias for spoiler_text.",
                            "type": "string"
                          },
                          "mastodon_spoiler_text": {
                            "description": "Content warning shown before the post is revealed (marks media sensitive). Alias for spoiler_text.",
                            "type": "string"
                          },
                          "language": {
                            "description": "ISO 639 language code for the status.",
                            "type": "string"
                          },
                          "mastodon_language": {
                            "description": "ISO 639 language code for the status. Alias for language.",
                            "type": "string"
                          },
                          "quoted_status_id": {
                            "description": "Mastodon status ID to quote (4.5+ quoted_status_id).",
                            "type": "string"
                          },
                          "quote_id": {
                            "description": "Mastodon status ID to quote (4.5+ quoted_status_id). Alias for quoted_status_id.",
                            "type": "string"
                          },
                          "mastodon_quoted_status_id": {
                            "description": "Mastodon status ID to quote (4.5+ quoted_status_id). Alias for quoted_status_id.",
                            "type": "string"
                          },
                          "poll": {
                            "description": "Mastodon poll: { options (2-4), expires_in seconds, multiple? }. Media and a poll can be combined on Mastodon 4.6+.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "mastodon_poll": {
                            "description": "Mastodon poll: { options (2-4), expires_in seconds, multiple? }. Media and a poll can be combined on Mastodon 4.6+. Alias for poll.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "media_alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "media_accessibility": {
                            "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                            "type": "array",
                            "items": {
                              "type": "object",
                              "required": [
                                "index",
                                "alt_text"
                              ],
                              "properties": {
                                "index": {
                                  "type": "integer",
                                  "minimum": 0
                                },
                                "asset_id": {
                                  "type": "string"
                                },
                                "source_url": {
                                  "type": "string",
                                  "format": "uri"
                                },
                                "alt_text": {
                                  "type": "string"
                                }
                              },
                              "additionalProperties": false
                            }
                          }
                        },
                        "additionalProperties": true,
                        "example": {
                          "visibility": "public",
                          "spoiler_text": "Launch spoilers",
                          "language": "en",
                          "quoted_status_id": "123",
                          "poll": {
                            "options": [
                              "Yes",
                              "No"
                            ],
                            "expires_in": 86400
                          }
                        }
                      },
                      {
                        "title": "Dev.to settings",
                        "type": "object",
                        "properties": {
                          "title": {
                            "description": "Article title. Falls back to the first line of the caption.",
                            "type": "string"
                          },
                          "devto_title": {
                            "description": "Article title. Falls back to the first line of the caption. Alias for title.",
                            "type": "string"
                          },
                          "tags": {
                            "description": "Up to 4 tags (lowercase alphanumeric).",
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "devto_tags": {
                            "description": "Up to 4 tags (lowercase alphanumeric). Alias for tags.",
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "canonical_url": {
                            "description": "Canonical URL when cross-posting from your own blog.",
                            "type": "string"
                          },
                          "media_alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "media_accessibility": {
                            "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                            "type": "array",
                            "items": {
                              "type": "object",
                              "required": [
                                "index",
                                "alt_text"
                              ],
                              "properties": {
                                "index": {
                                  "type": "integer",
                                  "minimum": 0
                                },
                                "asset_id": {
                                  "type": "string"
                                },
                                "source_url": {
                                  "type": "string",
                                  "format": "uri"
                                },
                                "alt_text": {
                                  "type": "string"
                                }
                              },
                              "additionalProperties": false
                            }
                          }
                        },
                        "additionalProperties": true,
                        "example": {
                          "title": "How we ship 18 platforms",
                          "tags": [
                            "webdev",
                            "saas"
                          ]
                        }
                      },
                      {
                        "title": "Hashnode settings",
                        "type": "object",
                        "properties": {
                          "title": {
                            "description": "Post title. Falls back to the first line of the caption.",
                            "type": "string"
                          },
                          "hashnode_title": {
                            "description": "Post title. Falls back to the first line of the caption. Alias for title.",
                            "type": "string"
                          },
                          "tags": {
                            "description": "Up to 4 tags (lowercase alphanumeric).",
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "hashnode_tags": {
                            "description": "Up to 4 tags (lowercase alphanumeric). Alias for tags.",
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "publication_id": {
                            "description": "Target publication. Defaults to the account blog captured at connect time.",
                            "type": "string"
                          },
                          "media_alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "media_accessibility": {
                            "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                            "type": "array",
                            "items": {
                              "type": "object",
                              "required": [
                                "index",
                                "alt_text"
                              ],
                              "properties": {
                                "index": {
                                  "type": "integer",
                                  "minimum": 0
                                },
                                "asset_id": {
                                  "type": "string"
                                },
                                "source_url": {
                                  "type": "string",
                                  "format": "uri"
                                },
                                "alt_text": {
                                  "type": "string"
                                }
                              },
                              "additionalProperties": false
                            }
                          }
                        },
                        "additionalProperties": true,
                        "example": {
                          "title": "How we ship 18 platforms",
                          "tags": [
                            "webdev",
                            "saas"
                          ]
                        }
                      },
                      {
                        "title": "WordPress settings",
                        "type": "object",
                        "properties": {
                          "title": {
                            "description": "Post title. Falls back to the first line of the caption.",
                            "type": "string"
                          },
                          "wordpress_title": {
                            "description": "Post title. Falls back to the first line of the caption. Alias for title.",
                            "type": "string"
                          },
                          "media_alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "media_accessibility": {
                            "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                            "type": "array",
                            "items": {
                              "type": "object",
                              "required": [
                                "index",
                                "alt_text"
                              ],
                              "properties": {
                                "index": {
                                  "type": "integer",
                                  "minimum": 0
                                },
                                "asset_id": {
                                  "type": "string"
                                },
                                "source_url": {
                                  "type": "string",
                                  "format": "uri"
                                },
                                "alt_text": {
                                  "type": "string"
                                }
                              },
                              "additionalProperties": false
                            }
                          }
                        },
                        "additionalProperties": true,
                        "example": {
                          "title": "How we ship 18 platforms"
                        }
                      },
                      {
                        "title": "Lemmy settings",
                        "type": "object",
                        "properties": {
                          "community": {
                            "description": "Target community, e.g. technology or technology@lemmy.world.",
                            "type": "string"
                          },
                          "lemmy_community": {
                            "description": "Target community, e.g. technology or technology@lemmy.world. Alias for community.",
                            "type": "string"
                          },
                          "title": {
                            "description": "Post title. Falls back to the first line of the caption.",
                            "type": "string"
                          },
                          "lemmy_title": {
                            "description": "Post title. Falls back to the first line of the caption. Alias for title.",
                            "type": "string"
                          },
                          "url": {
                            "description": "Link post URL. Defaults to the first attached image.",
                            "type": "string"
                          },
                          "lemmy_url": {
                            "description": "Link post URL. Defaults to the first attached image. Alias for url.",
                            "type": "string"
                          },
                          "nsfw": {
                            "description": "Mark the post NSFW.",
                            "type": "boolean"
                          },
                          "media_alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "alt_texts": {
                            "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                            "type": "object",
                            "additionalProperties": true
                          },
                          "media_accessibility": {
                            "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                            "type": "array",
                            "items": {
                              "type": "object",
                              "required": [
                                "index",
                                "alt_text"
                              ],
                              "properties": {
                                "index": {
                                  "type": "integer",
                                  "minimum": 0
                                },
                                "asset_id": {
                                  "type": "string"
                                },
                                "source_url": {
                                  "type": "string",
                                  "format": "uri"
                                },
                                "alt_text": {
                                  "type": "string"
                                }
                              },
                              "additionalProperties": false
                            }
                          }
                        },
                        "required": [
                          "community"
                        ],
                        "additionalProperties": true,
                        "example": {
                          "community": "selfhosted@lemmy.world",
                          "title": "posterly now posts to Lemmy"
                        }
                      }
                    ],
                    "additionalProperties": true
                  },
                  "workspace_id": {
                    "type": "string",
                    "description": "Workspace ID from whoami."
                  },
                  "metadata": {
                    "type": "object",
                    "additionalProperties": true
                  }
                },
                "additionalProperties": false
              }
            },
            "confirm": {
              "type": "boolean",
              "description": "Must be true after the user explicitly confirms every post in the batch."
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "Create Posts Batch",
          "readOnlyHint": false,
          "destructiveHint": false,
          "idempotentHint": false,
          "openWorldHint": true
        }
      },
      {
        "name": "update_post",
        "description": "Update a scheduled or draft post. DESTRUCTIVE WRITE - overwrites the existing post's caption/media/schedule. Cannot edit published posts. Show the user a side-by-side of CURRENT vs PROPOSED before calling.",
        "inputSchema": {
          "type": "object",
          "required": [
            "post_id",
            "confirm"
          ],
          "properties": {
            "post_id": {
              "type": "integer"
            },
            "caption": {
              "type": "string"
            },
            "scheduled_at": {
              "type": "string",
              "description": "ISO 8601 UTC"
            },
            "media_url": {
              "type": "string",
              "format": "uri",
              "description": "Media URL. Posterly storage URLs are used as-is; third-party HTTP(S) URLs are copied into Posterly storage before the post is saved."
            },
            "media_urls": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "uri"
              },
              "description": "Media URLs. Posterly storage URLs are used as-is; third-party HTTP(S) URLs are copied into Posterly storage before the post is saved."
            },
            "post_type": {
              "type": "string",
              "enum": [
                "text",
                "image",
                "document",
                "video",
                "reel",
                "carousel",
                "story",
                "story_series",
                "x_thread",
                "threads_thread",
                "photo",
                "cover_photo",
                "post",
                "feed",
                "feed-post",
                "cover-photo",
                "photos",
                "stories",
                "reels"
              ],
              "description": "Optional post type. Omit for auto-detection from media."
            },
            "metadata": {
              "type": "object",
              "additionalProperties": true
            },
            "settings": {
              "type": "object",
              "description": "Platform-specific composer controls. Call list_platforms or get_platform_schema for the selected account before sending settings.",
              "oneOf": [
                {
                  "title": "Instagram settings",
                  "type": "object",
                  "properties": {
                    "__type": {
                      "description": "Instagram account type hint.",
                      "enum": [
                        "instagram",
                        "instagram-standalone"
                      ],
                      "type": "string"
                    },
                    "post_type": {
                      "description": "Instagram publishing format.",
                      "enum": [
                        "post",
                        "feed",
                        "story",
                        "reel",
                        "carousel"
                      ],
                      "type": "string"
                    },
                    "is_trial_reel": {
                      "description": "Request an Instagram Trial Reel when the account supports it.",
                      "type": "boolean"
                    },
                    "trial_reel": {
                      "description": "Request an Instagram Trial Reel when the account supports it. Alias for is_trial_reel.",
                      "type": "boolean"
                    },
                    "graduation_strategy": {
                      "description": "Trial Reel graduation strategy.",
                      "enum": [
                        "MANUAL",
                        "SS_PERFORMANCE"
                      ],
                      "type": "string"
                    },
                    "collaborators": {
                      "description": "Native co-author invitations. Meta-linked Instagram accounts only; feed images, Reels, and carousels; maximum 3; not Stories.",
                      "type": "array",
                      "items": {}
                    },
                    "user_tags": {
                      "description": "Native clickable media tags, not caption @mentions. Supported by eligible direct Instagram and Meta-linked connections; feed images, Reels/video, and Stories. Tags apply to each carousel child and the first Story in a Story Series.",
                      "type": "array",
                      "items": {}
                    },
                    "first_comment": {
                      "description": "First comment to publish after the post.",
                      "type": "string"
                    },
                    "reel_cover_url": {
                      "description": "Custom Reel cover image URL.",
                      "type": "string"
                    },
                    "cover_url": {
                      "description": "Custom Reel cover image URL. Alias for reel_cover_url.",
                      "type": "string"
                    },
                    "reel_thumb_offset": {
                      "description": "Video timestamp, in milliseconds, for a generated Reel thumbnail.",
                      "type": "number"
                    },
                    "thumb_offset": {
                      "description": "Video timestamp, in milliseconds, for a generated Reel thumbnail. Alias for reel_thumb_offset.",
                      "type": "number"
                    },
                    "is_ai_generated": {
                      "description": "Label the parent media container as AI-generated (is_ai_generated). For carousels, set this on the parent only, never on child slides.",
                      "type": "boolean"
                    },
                    "instagram_is_ai_generated": {
                      "description": "Label the parent media container as AI-generated (is_ai_generated). For carousels, set this on the parent only, never on child slides. Alias for is_ai_generated.",
                      "type": "boolean"
                    },
                    "ai_generated": {
                      "description": "Label the parent media container as AI-generated (is_ai_generated). For carousels, set this on the parent only, never on child slides. Alias for is_ai_generated.",
                      "type": "boolean"
                    },
                    "audio_id": {
                      "description": "Licensed Instagram audio ID for Reels (audio_configuration.audio_id). Meta-linked Facebook Login accounts only; hidden for Instagram Login.",
                      "type": "string"
                    },
                    "instagram_audio_id": {
                      "description": "Licensed Instagram audio ID for Reels (audio_configuration.audio_id). Meta-linked Facebook Login accounts only; hidden for Instagram Login. Alias for audio_id.",
                      "type": "string"
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "__type": "instagram",
                    "post_type": "reel",
                    "first_comment": "Full details in the caption.",
                    "is_ai_generated": true
                  }
                },
                {
                  "title": "Facebook settings",
                  "type": "object",
                  "properties": {
                    "post_type": {
                      "description": "Facebook publishing format. Reel uses the Graph Reels API and must be 90 seconds or shorter; use video for longer clips. A 90.0 second Reel is allowed.",
                      "enum": [
                        "post",
                        "feed",
                        "story",
                        "reel",
                        "cover_photo"
                      ],
                      "type": "string"
                    },
                    "text_format_preset_id": {
                      "description": "Styled text post background preset.",
                      "type": "string"
                    },
                    "background_preset_id": {
                      "description": "Styled text post background preset. Alias for text_format_preset_id.",
                      "type": "string"
                    },
                    "reel_cover_url": {
                      "description": "Custom Reel cover image URL.",
                      "type": "string"
                    },
                    "cover_url": {
                      "description": "Custom Reel cover image URL. Alias for reel_cover_url.",
                      "type": "string"
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "post_type": "reel",
                    "reel_cover_url": "https://example.com/cover.jpg"
                  }
                },
                {
                  "title": "TikTok settings",
                  "type": "object",
                  "properties": {
                    "privacy_level": {
                      "description": "TikTok direct-post privacy level from the creator info helper.",
                      "type": "string"
                    },
                    "allow_comment": {
                      "description": "Allow comments when direct posting.",
                      "type": "boolean"
                    },
                    "allow_duet": {
                      "description": "Allow duets when direct posting.",
                      "type": "boolean"
                    },
                    "allow_stitch": {
                      "description": "Allow stitches when direct posting.",
                      "type": "boolean"
                    },
                    "title": {
                      "description": "TikTok title/caption field.",
                      "type": "string"
                    },
                    "media_type": {
                      "description": "Set to PHOTO for TikTok photo posts or multi-photo slideshows.",
                      "enum": [
                        "PHOTO"
                      ],
                      "type": "string"
                    },
                    "photo_cover_index": {
                      "description": "Zero-based cover image index for TikTok photo posts.",
                      "type": "number"
                    },
                    "video_cover_timestamp_ms": {
                      "description": "Millisecond timestamp of the video frame to use as the cover (direct post only).",
                      "type": "number"
                    },
                    "cover_timestamp_ms": {
                      "description": "Millisecond timestamp of the video frame to use as the cover (direct post only). Alias for video_cover_timestamp_ms.",
                      "type": "number"
                    },
                    "auto_add_music": {
                      "description": "Ask TikTok to add recommended music to photo posts when direct posting.",
                      "type": "boolean"
                    },
                    "is_commercial_content": {
                      "description": "TikTok commercial content disclosure.",
                      "type": "boolean"
                    },
                    "is_your_brand": {
                      "description": "TikTok branded content: your own brand.",
                      "type": "boolean"
                    },
                    "is_branded_content": {
                      "description": "TikTok branded content: third-party brand.",
                      "type": "boolean"
                    },
                    "ai_generated": {
                      "description": "Label the post as AI-generated (TikTok is_aigc).",
                      "type": "boolean"
                    },
                    "ai_disclosure": {
                      "description": "Label the post as AI-generated (TikTok is_aigc). Alias for ai_generated.",
                      "type": "boolean"
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "privacy_level": "PUBLIC_TO_EVERYONE",
                    "media_type": "PHOTO",
                    "photo_cover_index": 0,
                    "auto_add_music": true,
                    "allow_comment": true,
                    "allow_duet": false,
                    "allow_stitch": false,
                    "video_cover_timestamp_ms": 1500
                  }
                },
                {
                  "title": "X settings",
                  "type": "object",
                  "properties": {
                    "reply_settings": {
                      "description": "Who can reply to the post.",
                      "enum": [
                        "everyone",
                        "following",
                        "mentionedUsers",
                        "subscribers",
                        "verified"
                      ],
                      "type": "string"
                    },
                    "x_reply_settings": {
                      "description": "Who can reply to the post. Alias for reply_settings.",
                      "enum": [
                        "everyone",
                        "following",
                        "mentionedUsers",
                        "subscribers",
                        "verified"
                      ],
                      "type": "string"
                    },
                    "poll": {
                      "description": "X poll settings: options and duration_minutes.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "x_poll": {
                      "description": "X poll settings: options and duration_minutes. Alias for poll.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "ai_generated": {
                      "description": "Label the post as AI-generated (X made_with_ai).",
                      "type": "boolean"
                    },
                    "ai_disclosure": {
                      "description": "Label the post as AI-generated (X made_with_ai). Alias for ai_generated.",
                      "type": "boolean"
                    },
                    "made_with_ai": {
                      "description": "Label the post as AI-generated (X made_with_ai). Alias for ai_generated.",
                      "type": "boolean"
                    },
                    "paid_partnership": {
                      "description": "Mark the post as a paid partnership (POST /2/tweets paid_partnership). Existing tweet.write.",
                      "type": "boolean"
                    },
                    "x_paid_partnership": {
                      "description": "Mark the post as a paid partnership (POST /2/tweets paid_partnership). Existing tweet.write. Alias for paid_partnership.",
                      "type": "boolean"
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "reply_settings": "following",
                    "poll": {
                      "options": [
                        "Yes",
                        "No"
                      ],
                      "duration_minutes": 1440
                    },
                    "paid_partnership": true
                  }
                },
                {
                  "title": "LinkedIn settings",
                  "type": "object",
                  "properties": {
                    "document_title": {
                      "description": "Title for a LinkedIn PDF/document post.",
                      "type": "string"
                    },
                    "linkedin_document_title": {
                      "description": "Title for a LinkedIn PDF/document post. Alias for document_title.",
                      "type": "string"
                    },
                    "document_filename": {
                      "description": "Filename for a LinkedIn document post.",
                      "type": "string"
                    },
                    "mentions": {
                      "description": "LinkedIn organization mention objects.",
                      "type": "array",
                      "items": {}
                    },
                    "linkedin_mentions": {
                      "description": "LinkedIn organization mention objects. Alias for mentions.",
                      "type": "array",
                      "items": {}
                    },
                    "poll": {
                      "description": "LinkedIn poll: { question, options (2-4), duration (ONE_DAY|THREE_DAYS|SEVEN_DAYS|FOURTEEN_DAYS) }. Mutually exclusive with media.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "linkedin_poll": {
                      "description": "LinkedIn poll: { question, options (2-4), duration (ONE_DAY|THREE_DAYS|SEVEN_DAYS|FOURTEEN_DAYS) }. Mutually exclusive with media. Alias for poll.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "thumbnail_url": {
                      "description": "Custom video thumbnail URL.",
                      "type": "string"
                    },
                    "content_call_to_action_label": {
                      "description": "LinkedIn contentCallToActionLabel, including BUY_NOW and SHOP_NOW (version 202504). Pair with content_landing_page.",
                      "enum": [
                        "APPLY",
                        "DOWNLOAD",
                        "VIEW_QUOTE",
                        "LEARN_MORE",
                        "SIGN_UP",
                        "SUBSCRIBE",
                        "REGISTER",
                        "JOIN",
                        "ATTEND",
                        "REQUEST_DEMO",
                        "SEE_MORE",
                        "BUY_NOW",
                        "SHOP_NOW"
                      ],
                      "type": "string"
                    },
                    "cta_label": {
                      "description": "LinkedIn contentCallToActionLabel, including BUY_NOW and SHOP_NOW (version 202504). Pair with content_landing_page. Alias for content_call_to_action_label.",
                      "enum": [
                        "APPLY",
                        "DOWNLOAD",
                        "VIEW_QUOTE",
                        "LEARN_MORE",
                        "SIGN_UP",
                        "SUBSCRIBE",
                        "REGISTER",
                        "JOIN",
                        "ATTEND",
                        "REQUEST_DEMO",
                        "SEE_MORE",
                        "BUY_NOW",
                        "SHOP_NOW"
                      ],
                      "type": "string"
                    },
                    "linkedin_cta_label": {
                      "description": "LinkedIn contentCallToActionLabel, including BUY_NOW and SHOP_NOW (version 202504). Pair with content_landing_page. Alias for content_call_to_action_label.",
                      "enum": [
                        "APPLY",
                        "DOWNLOAD",
                        "VIEW_QUOTE",
                        "LEARN_MORE",
                        "SIGN_UP",
                        "SUBSCRIBE",
                        "REGISTER",
                        "JOIN",
                        "ATTEND",
                        "REQUEST_DEMO",
                        "SEE_MORE",
                        "BUY_NOW",
                        "SHOP_NOW"
                      ],
                      "type": "string"
                    },
                    "content_landing_page": {
                      "description": "Landing page URL sent as contentLandingPage with the LinkedIn call to action.",
                      "type": "string"
                    },
                    "cta_url": {
                      "description": "Landing page URL sent as contentLandingPage with the LinkedIn call to action. Alias for content_landing_page.",
                      "type": "string"
                    },
                    "linkedin_cta_url": {
                      "description": "Landing page URL sent as contentLandingPage with the LinkedIn call to action. Alias for content_landing_page.",
                      "type": "string"
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "document_title": "Launch plan",
                    "mentions": [
                      {
                        "display_name": "posterly",
                        "urn": "urn:li:organization:123"
                      }
                    ],
                    "poll": {
                      "question": "Which feature next?",
                      "options": [
                        "Polls",
                        "Analytics"
                      ],
                      "duration": "THREE_DAYS"
                    },
                    "content_call_to_action_label": "BUY_NOW",
                    "content_landing_page": "https://www.poster.ly"
                  }
                },
                {
                  "title": "YouTube settings",
                  "type": "object",
                  "properties": {
                    "title": {
                      "description": "YouTube video title.",
                      "type": "string"
                    },
                    "youtube_title": {
                      "description": "YouTube video title. Alias for title.",
                      "type": "string"
                    },
                    "thumbnail_url": {
                      "description": "Custom YouTube thumbnail URL.",
                      "type": "string"
                    },
                    "privacy_status": {
                      "description": "YouTube video visibility.",
                      "enum": [
                        "public",
                        "unlisted",
                        "private"
                      ],
                      "type": "string"
                    },
                    "privacy": {
                      "description": "YouTube video visibility. Alias for privacy_status.",
                      "enum": [
                        "public",
                        "unlisted",
                        "private"
                      ],
                      "type": "string"
                    },
                    "made_for_kids": {
                      "description": "YouTube made-for-kids declaration.",
                      "type": "boolean"
                    },
                    "tags": {
                      "description": "YouTube tags.",
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "category_id": {
                      "description": "YouTube category ID.",
                      "type": "string"
                    },
                    "notify_subscribers": {
                      "description": "Notify subscribers when the video publishes (default true).",
                      "type": "boolean"
                    },
                    "add_shorts_hashtag": {
                      "description": "Append #Shorts to the description for Shorts-feed eligibility (vertical clips).",
                      "type": "boolean"
                    },
                    "ai_generated": {
                      "description": "Label the video as containing AI/synthetic media (containsSyntheticMedia).",
                      "type": "boolean"
                    },
                    "ai_disclosure": {
                      "description": "Label the video as containing AI/synthetic media (containsSyntheticMedia). Alias for ai_generated.",
                      "type": "boolean"
                    },
                    "brand_partner": {
                      "description": "Optional YouTube brandPartner channel ID (UC…) or handle (@…). Added to videos.insert part=brandPartner when set.",
                      "type": "string"
                    },
                    "brandPartner": {
                      "description": "Optional YouTube brandPartner channel ID (UC…) or handle (@…). Added to videos.insert part=brandPartner when set. Alias for brand_partner.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "title"
                  ],
                  "additionalProperties": true,
                  "example": {
                    "title": "Launch walkthrough",
                    "privacy_status": "unlisted",
                    "notify_subscribers": false,
                    "add_shorts_hashtag": true,
                    "brand_partner": "@brand"
                  }
                },
                {
                  "title": "Pinterest settings",
                  "type": "object",
                  "properties": {
                    "board_id": {
                      "description": "Pinterest board ID from the pinterest.boards helper.",
                      "type": "string"
                    },
                    "pinterest_board_id": {
                      "description": "Pinterest board ID from the pinterest.boards helper. Alias for board_id.",
                      "type": "string"
                    },
                    "title": {
                      "description": "Pinterest Pin title.",
                      "type": "string"
                    },
                    "link": {
                      "description": "Destination URL for the Pin.",
                      "type": "string"
                    },
                    "destination_url": {
                      "description": "Destination URL for the Pin. Alias for link.",
                      "type": "string"
                    },
                    "cover_image_url": {
                      "description": "Required for video Pins: a stored, probe-verified JPEG or PNG cover URL (20 MiB maximum).",
                      "type": "string"
                    },
                    "video_cover_url": {
                      "description": "Required for video Pins: a stored, probe-verified JPEG or PNG cover URL (20 MiB maximum). Alias for cover_image_url.",
                      "type": "string"
                    },
                    "pinterest_cover_image_url": {
                      "description": "Required for video Pins: a stored, probe-verified JPEG or PNG cover URL (20 MiB maximum). Alias for cover_image_url.",
                      "type": "string"
                    },
                    "ai_generated": {
                      "description": "Label the Pin as AI-modified (ai_disclosures).",
                      "type": "boolean"
                    },
                    "ai_disclosure": {
                      "description": "Label the Pin as AI-modified (ai_disclosures). Alias for ai_generated.",
                      "type": "boolean"
                    },
                    "product_tags": {
                      "description": "Optional product tags on POST /v5/pins (product_id, optional x/y). Existing pins:write. Pin note is not written.",
                      "type": "array",
                      "items": {}
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "required": [
                    "board_id"
                  ],
                  "additionalProperties": true,
                  "example": {
                    "board_id": "123456789",
                    "title": "Launch ideas",
                    "link": "https://www.poster.ly",
                    "cover_image_url": "https://assets.poster.ly/users/123/pinterest-video-covers/cover.jpg",
                    "product_tags": [
                      {
                        "product_id": "123"
                      }
                    ]
                  }
                },
                {
                  "title": "Threads settings",
                  "type": "object",
                  "properties": {
                    "reply_control": {
                      "description": "Threads reply control setting.",
                      "enum": [
                        "everyone",
                        "accounts_you_follow",
                        "mentioned_only",
                        "followers_only",
                        "parent_post_author_only"
                      ],
                      "type": "string"
                    },
                    "threads_reply_control": {
                      "description": "Threads reply control setting. Alias for reply_control.",
                      "enum": [
                        "everyone",
                        "accounts_you_follow",
                        "mentioned_only",
                        "followers_only",
                        "parent_post_author_only"
                      ],
                      "type": "string"
                    },
                    "poll": {
                      "description": "Threads poll: { options (2-4) }. Text-only, fixed 24h duration.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "threads_poll": {
                      "description": "Threads poll: { options (2-4) }. Text-only, fixed 24h duration. Alias for poll.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "topic_tag": {
                      "description": "A single Threads topic tag (1-50 chars, no periods/ampersands).",
                      "type": "string"
                    },
                    "threads_topic_tag": {
                      "description": "A single Threads topic tag (1-50 chars, no periods/ampersands). Alias for topic_tag.",
                      "type": "string"
                    },
                    "text_attachment": {
                      "description": "Long-form Threads text attachment.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "threads_text_attachment": {
                      "description": "Long-form Threads text attachment. Alias for text_attachment.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "share_to_instagram": {
                      "description": "Also share the published post to the Instagram account linked to the Threads profile as a Story (dark card). Requires Instagram sharing enabled for the Threads profile in the Threads app.",
                      "type": "boolean"
                    },
                    "threads_share_to_instagram": {
                      "description": "Also share the published post to the Instagram account linked to the Threads profile as a Story (dark card). Requires Instagram sharing enabled for the Threads profile in the Threads app. Alias for share_to_instagram.",
                      "type": "boolean"
                    },
                    "is_ghost_post": {
                      "description": "Publish as a Threads ghost post. Text-only.",
                      "type": "boolean"
                    },
                    "threads_is_ghost_post": {
                      "description": "Publish as a Threads ghost post. Text-only. Alias for is_ghost_post.",
                      "type": "boolean"
                    },
                    "is_spoiler": {
                      "description": "Mark the Threads post as a spoiler (full-caption text entity and/or is_spoiler_media).",
                      "type": "boolean"
                    },
                    "threads_is_spoiler": {
                      "description": "Mark the Threads post as a spoiler (full-caption text entity and/or is_spoiler_media). Alias for is_spoiler.",
                      "type": "boolean"
                    },
                    "is_spoiler_media": {
                      "description": "Set is_spoiler_media on the Threads container when media is attached.",
                      "type": "boolean"
                    },
                    "threads_is_spoiler_media": {
                      "description": "Set is_spoiler_media on the Threads container when media is attached. Alias for is_spoiler_media.",
                      "type": "boolean"
                    },
                    "text_entities": {
                      "description": "Threads text_entities, for example spoiler ranges with entity_type, offset, and length.",
                      "type": "array",
                      "items": {}
                    },
                    "threads_text_entities": {
                      "description": "Threads text_entities, for example spoiler ranges with entity_type, offset, and length. Alias for text_entities.",
                      "type": "array",
                      "items": {}
                    },
                    "enable_reply_approvals": {
                      "description": "Require approval before replies appear (enable_reply_approvals).",
                      "type": "boolean"
                    },
                    "threads_enable_reply_approvals": {
                      "description": "Require approval before replies appear (enable_reply_approvals). Alias for enable_reply_approvals.",
                      "type": "boolean"
                    },
                    "gif_attachment": {
                      "description": "GIPHY gif_attachment: { gif_id, provider: \"GIPHY\" }. Tenor is not supported.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "threads_gif_attachment": {
                      "description": "GIPHY gif_attachment: { gif_id, provider: \"GIPHY\" }. Tenor is not supported. Alias for gif_attachment.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "reply_control": "everyone",
                    "poll": {
                      "options": [
                        "Polls",
                        "Analytics"
                      ]
                    },
                    "topic_tag": "producthunt",
                    "is_ghost_post": false,
                    "enable_reply_approvals": true
                  }
                },
                {
                  "title": "Google Business settings",
                  "type": "object",
                  "properties": {
                    "post_type": {
                      "description": "Google Business Profile post type.",
                      "enum": [
                        "STANDARD",
                        "EVENT",
                        "OFFER"
                      ],
                      "type": "string"
                    },
                    "topic_type": {
                      "description": "Google Business Profile post type. Alias for post_type.",
                      "enum": [
                        "STANDARD",
                        "EVENT",
                        "OFFER"
                      ],
                      "type": "string"
                    },
                    "event": {
                      "description": "Event title and start/end date/time.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "offer": {
                      "description": "Offer coupon, redeem URL, and terms.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "cta": {
                      "description": "CTA type and URL.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "recurrence": {
                      "description": "EVENT/OFFER recurrenceInfo: { type: DAILY|WEEKLY|MONTHLY, series_end_time? }. Keeps one-off scheduledTime.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "recurrenceInfo": {
                      "description": "EVENT/OFFER recurrenceInfo: { type: DAILY|WEEKLY|MONTHLY, series_end_time? }. Keeps one-off scheduledTime. Alias for recurrence.",
                      "type": "object",
                      "additionalProperties": true
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "post_type": "EVENT",
                    "event": {
                      "title": "Launch night",
                      "start_date": "2026-09-01"
                    },
                    "recurrence": {
                      "type": "WEEKLY",
                      "series_end_time": "2026-12-01T00:00:00Z"
                    },
                    "cta": {
                      "type": "LEARN_MORE",
                      "url": "https://www.poster.ly"
                    }
                  }
                },
                {
                  "title": "Telegram settings",
                  "type": "object",
                  "properties": {
                    "parse_mode": {
                      "description": "Telegram caption parse mode when supported.",
                      "enum": [
                        "HTML",
                        "MarkdownV2"
                      ],
                      "type": "string"
                    },
                    "disable_web_page_preview": {
                      "description": "Disable link previews for text posts.",
                      "type": "boolean"
                    },
                    "poll": {
                      "description": "Telegram native poll: { question, options (2-10), allows_multiple_answers? }.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "telegram_poll": {
                      "description": "Telegram native poll: { question, options (2-10), allows_multiple_answers? }. Alias for poll.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "buttons": {
                      "description": "Inline CTA buttons: [{ text, url }] (up to 3).",
                      "type": "array",
                      "items": {}
                    },
                    "telegram_buttons": {
                      "description": "Inline CTA buttons: [{ text, url }] (up to 3). Alias for buttons.",
                      "type": "array",
                      "items": {}
                    },
                    "video_cover_url": {
                      "description": "Cover image URL for sendVideo (Bot API cover).",
                      "type": "string"
                    },
                    "cover_url": {
                      "description": "Cover image URL for sendVideo (Bot API cover). Alias for video_cover_url.",
                      "type": "string"
                    },
                    "telegram_video_cover_url": {
                      "description": "Cover image URL for sendVideo (Bot API cover). Alias for video_cover_url.",
                      "type": "string"
                    },
                    "start_timestamp": {
                      "description": "Video start timestamp in seconds for sendVideo (Bot API start_timestamp).",
                      "type": "number"
                    },
                    "telegram_start_timestamp": {
                      "description": "Video start timestamp in seconds for sendVideo (Bot API start_timestamp). Alias for start_timestamp.",
                      "type": "number"
                    },
                    "is_live_photo": {
                      "description": "Send as sendLivePhoto when both a still image and a video are attached.",
                      "type": "boolean"
                    },
                    "telegram_is_live_photo": {
                      "description": "Send as sendLivePhoto when both a still image and a video are attached. Alias for is_live_photo.",
                      "type": "boolean"
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "poll": {
                      "question": "Which feature next?",
                      "options": [
                        "Polls",
                        "Analytics"
                      ]
                    },
                    "buttons": [
                      {
                        "text": "Read more",
                        "url": "https://www.poster.ly"
                      }
                    ],
                    "video_cover_url": "https://example.com/cover.jpg"
                  }
                },
                {
                  "title": "Bluesky settings",
                  "type": "object",
                  "properties": {
                    "langs": {
                      "description": "Language tags for the Bluesky post.",
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "content_label": {
                      "description": "Self-applied content warning (tap-to-reveal).",
                      "enum": [
                        "sexual",
                        "nudity",
                        "porn",
                        "graphic-media"
                      ],
                      "type": "string"
                    },
                    "content_warning": {
                      "description": "Self-applied content warning (tap-to-reveal). Alias for content_label.",
                      "enum": [
                        "sexual",
                        "nudity",
                        "porn",
                        "graphic-media"
                      ],
                      "type": "string"
                    },
                    "tags": {
                      "description": "Up to 8 hidden discovery tags (separate from in-text hashtags).",
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "bluesky_tags": {
                      "description": "Up to 8 hidden discovery tags (separate from in-text hashtags). Alias for tags.",
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "quote_url": {
                      "description": "A Bluesky post URL (or AT-URI) to quote.",
                      "type": "string"
                    },
                    "quote": {
                      "description": "A Bluesky post URL (or AT-URI) to quote. Alias for quote_url.",
                      "type": "string"
                    },
                    "bluesky_quote_url": {
                      "description": "A Bluesky post URL (or AT-URI) to quote. Alias for quote_url.",
                      "type": "string"
                    },
                    "disable_quotes": {
                      "description": "Prevent others from quote-posting this post (postgate).",
                      "type": "boolean"
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "langs": [
                      "en"
                    ],
                    "tags": [
                      "producthunt",
                      "launch"
                    ],
                    "quote_url": "https://bsky.app/profile/poster.ly/post/abc123"
                  }
                },
                {
                  "title": "Discord settings",
                  "type": "object",
                  "properties": {
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "media_alt_texts": {
                      "https://example.com/chart.png": "Q2 revenue chart"
                    }
                  }
                },
                {
                  "title": "Slack settings",
                  "type": "object",
                  "properties": {
                    "markdown": {
                      "description": "Send the caption as a Block Kit markdown block on chat.postMessage.",
                      "type": "boolean"
                    },
                    "slack_markdown": {
                      "description": "Send the caption as a Block Kit markdown block on chat.postMessage. Alias for markdown.",
                      "type": "boolean"
                    },
                    "blocks": {
                      "description": "Optional Block Kit blocks (markdown, card, or carousel) passed to chat.postMessage. File upload still uses getUploadURLExternal.",
                      "type": "array",
                      "items": {}
                    },
                    "slack_blocks": {
                      "description": "Optional Block Kit blocks (markdown, card, or carousel) passed to chat.postMessage. File upload still uses getUploadURLExternal. Alias for blocks.",
                      "type": "array",
                      "items": {}
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "markdown": true
                  }
                },
                {
                  "title": "Mastodon settings",
                  "type": "object",
                  "properties": {
                    "visibility": {
                      "description": "Status visibility (private means followers only).",
                      "enum": [
                        "public",
                        "unlisted",
                        "private"
                      ],
                      "type": "string"
                    },
                    "mastodon_visibility": {
                      "description": "Status visibility (private means followers only). Alias for visibility.",
                      "enum": [
                        "public",
                        "unlisted",
                        "private"
                      ],
                      "type": "string"
                    },
                    "spoiler_text": {
                      "description": "Content warning shown before the post is revealed (marks media sensitive).",
                      "type": "string"
                    },
                    "content_warning": {
                      "description": "Content warning shown before the post is revealed (marks media sensitive). Alias for spoiler_text.",
                      "type": "string"
                    },
                    "mastodon_spoiler_text": {
                      "description": "Content warning shown before the post is revealed (marks media sensitive). Alias for spoiler_text.",
                      "type": "string"
                    },
                    "language": {
                      "description": "ISO 639 language code for the status.",
                      "type": "string"
                    },
                    "mastodon_language": {
                      "description": "ISO 639 language code for the status. Alias for language.",
                      "type": "string"
                    },
                    "quoted_status_id": {
                      "description": "Mastodon status ID to quote (4.5+ quoted_status_id).",
                      "type": "string"
                    },
                    "quote_id": {
                      "description": "Mastodon status ID to quote (4.5+ quoted_status_id). Alias for quoted_status_id.",
                      "type": "string"
                    },
                    "mastodon_quoted_status_id": {
                      "description": "Mastodon status ID to quote (4.5+ quoted_status_id). Alias for quoted_status_id.",
                      "type": "string"
                    },
                    "poll": {
                      "description": "Mastodon poll: { options (2-4), expires_in seconds, multiple? }. Media and a poll can be combined on Mastodon 4.6+.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "mastodon_poll": {
                      "description": "Mastodon poll: { options (2-4), expires_in seconds, multiple? }. Media and a poll can be combined on Mastodon 4.6+. Alias for poll.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "visibility": "public",
                    "spoiler_text": "Launch spoilers",
                    "language": "en",
                    "quoted_status_id": "123",
                    "poll": {
                      "options": [
                        "Yes",
                        "No"
                      ],
                      "expires_in": 86400
                    }
                  }
                },
                {
                  "title": "Dev.to settings",
                  "type": "object",
                  "properties": {
                    "title": {
                      "description": "Article title. Falls back to the first line of the caption.",
                      "type": "string"
                    },
                    "devto_title": {
                      "description": "Article title. Falls back to the first line of the caption. Alias for title.",
                      "type": "string"
                    },
                    "tags": {
                      "description": "Up to 4 tags (lowercase alphanumeric).",
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "devto_tags": {
                      "description": "Up to 4 tags (lowercase alphanumeric). Alias for tags.",
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "canonical_url": {
                      "description": "Canonical URL when cross-posting from your own blog.",
                      "type": "string"
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "title": "How we ship 18 platforms",
                    "tags": [
                      "webdev",
                      "saas"
                    ]
                  }
                },
                {
                  "title": "Hashnode settings",
                  "type": "object",
                  "properties": {
                    "title": {
                      "description": "Post title. Falls back to the first line of the caption.",
                      "type": "string"
                    },
                    "hashnode_title": {
                      "description": "Post title. Falls back to the first line of the caption. Alias for title.",
                      "type": "string"
                    },
                    "tags": {
                      "description": "Up to 4 tags (lowercase alphanumeric).",
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "hashnode_tags": {
                      "description": "Up to 4 tags (lowercase alphanumeric). Alias for tags.",
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "publication_id": {
                      "description": "Target publication. Defaults to the account blog captured at connect time.",
                      "type": "string"
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "title": "How we ship 18 platforms",
                    "tags": [
                      "webdev",
                      "saas"
                    ]
                  }
                },
                {
                  "title": "WordPress settings",
                  "type": "object",
                  "properties": {
                    "title": {
                      "description": "Post title. Falls back to the first line of the caption.",
                      "type": "string"
                    },
                    "wordpress_title": {
                      "description": "Post title. Falls back to the first line of the caption. Alias for title.",
                      "type": "string"
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "title": "How we ship 18 platforms"
                  }
                },
                {
                  "title": "Lemmy settings",
                  "type": "object",
                  "properties": {
                    "community": {
                      "description": "Target community, e.g. technology or technology@lemmy.world.",
                      "type": "string"
                    },
                    "lemmy_community": {
                      "description": "Target community, e.g. technology or technology@lemmy.world. Alias for community.",
                      "type": "string"
                    },
                    "title": {
                      "description": "Post title. Falls back to the first line of the caption.",
                      "type": "string"
                    },
                    "lemmy_title": {
                      "description": "Post title. Falls back to the first line of the caption. Alias for title.",
                      "type": "string"
                    },
                    "url": {
                      "description": "Link post URL. Defaults to the first attached image.",
                      "type": "string"
                    },
                    "lemmy_url": {
                      "description": "Link post URL. Defaults to the first attached image. Alias for url.",
                      "type": "string"
                    },
                    "nsfw": {
                      "description": "Mark the post NSFW.",
                      "type": "boolean"
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "required": [
                    "community"
                  ],
                  "additionalProperties": true,
                  "example": {
                    "community": "selfhosted@lemmy.world",
                    "title": "posterly now posts to Lemmy"
                  }
                }
              ],
              "additionalProperties": true
            },
            "platform_settings": {
              "type": "object",
              "description": "Platform-specific composer controls. Call list_platforms or get_platform_schema for the selected account before sending settings.",
              "oneOf": [
                {
                  "title": "Instagram settings",
                  "type": "object",
                  "properties": {
                    "__type": {
                      "description": "Instagram account type hint.",
                      "enum": [
                        "instagram",
                        "instagram-standalone"
                      ],
                      "type": "string"
                    },
                    "post_type": {
                      "description": "Instagram publishing format.",
                      "enum": [
                        "post",
                        "feed",
                        "story",
                        "reel",
                        "carousel"
                      ],
                      "type": "string"
                    },
                    "is_trial_reel": {
                      "description": "Request an Instagram Trial Reel when the account supports it.",
                      "type": "boolean"
                    },
                    "trial_reel": {
                      "description": "Request an Instagram Trial Reel when the account supports it. Alias for is_trial_reel.",
                      "type": "boolean"
                    },
                    "graduation_strategy": {
                      "description": "Trial Reel graduation strategy.",
                      "enum": [
                        "MANUAL",
                        "SS_PERFORMANCE"
                      ],
                      "type": "string"
                    },
                    "collaborators": {
                      "description": "Native co-author invitations. Meta-linked Instagram accounts only; feed images, Reels, and carousels; maximum 3; not Stories.",
                      "type": "array",
                      "items": {}
                    },
                    "user_tags": {
                      "description": "Native clickable media tags, not caption @mentions. Supported by eligible direct Instagram and Meta-linked connections; feed images, Reels/video, and Stories. Tags apply to each carousel child and the first Story in a Story Series.",
                      "type": "array",
                      "items": {}
                    },
                    "first_comment": {
                      "description": "First comment to publish after the post.",
                      "type": "string"
                    },
                    "reel_cover_url": {
                      "description": "Custom Reel cover image URL.",
                      "type": "string"
                    },
                    "cover_url": {
                      "description": "Custom Reel cover image URL. Alias for reel_cover_url.",
                      "type": "string"
                    },
                    "reel_thumb_offset": {
                      "description": "Video timestamp, in milliseconds, for a generated Reel thumbnail.",
                      "type": "number"
                    },
                    "thumb_offset": {
                      "description": "Video timestamp, in milliseconds, for a generated Reel thumbnail. Alias for reel_thumb_offset.",
                      "type": "number"
                    },
                    "is_ai_generated": {
                      "description": "Label the parent media container as AI-generated (is_ai_generated). For carousels, set this on the parent only, never on child slides.",
                      "type": "boolean"
                    },
                    "instagram_is_ai_generated": {
                      "description": "Label the parent media container as AI-generated (is_ai_generated). For carousels, set this on the parent only, never on child slides. Alias for is_ai_generated.",
                      "type": "boolean"
                    },
                    "ai_generated": {
                      "description": "Label the parent media container as AI-generated (is_ai_generated). For carousels, set this on the parent only, never on child slides. Alias for is_ai_generated.",
                      "type": "boolean"
                    },
                    "audio_id": {
                      "description": "Licensed Instagram audio ID for Reels (audio_configuration.audio_id). Meta-linked Facebook Login accounts only; hidden for Instagram Login.",
                      "type": "string"
                    },
                    "instagram_audio_id": {
                      "description": "Licensed Instagram audio ID for Reels (audio_configuration.audio_id). Meta-linked Facebook Login accounts only; hidden for Instagram Login. Alias for audio_id.",
                      "type": "string"
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "__type": "instagram",
                    "post_type": "reel",
                    "first_comment": "Full details in the caption.",
                    "is_ai_generated": true
                  }
                },
                {
                  "title": "Facebook settings",
                  "type": "object",
                  "properties": {
                    "post_type": {
                      "description": "Facebook publishing format. Reel uses the Graph Reels API and must be 90 seconds or shorter; use video for longer clips. A 90.0 second Reel is allowed.",
                      "enum": [
                        "post",
                        "feed",
                        "story",
                        "reel",
                        "cover_photo"
                      ],
                      "type": "string"
                    },
                    "text_format_preset_id": {
                      "description": "Styled text post background preset.",
                      "type": "string"
                    },
                    "background_preset_id": {
                      "description": "Styled text post background preset. Alias for text_format_preset_id.",
                      "type": "string"
                    },
                    "reel_cover_url": {
                      "description": "Custom Reel cover image URL.",
                      "type": "string"
                    },
                    "cover_url": {
                      "description": "Custom Reel cover image URL. Alias for reel_cover_url.",
                      "type": "string"
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "post_type": "reel",
                    "reel_cover_url": "https://example.com/cover.jpg"
                  }
                },
                {
                  "title": "TikTok settings",
                  "type": "object",
                  "properties": {
                    "privacy_level": {
                      "description": "TikTok direct-post privacy level from the creator info helper.",
                      "type": "string"
                    },
                    "allow_comment": {
                      "description": "Allow comments when direct posting.",
                      "type": "boolean"
                    },
                    "allow_duet": {
                      "description": "Allow duets when direct posting.",
                      "type": "boolean"
                    },
                    "allow_stitch": {
                      "description": "Allow stitches when direct posting.",
                      "type": "boolean"
                    },
                    "title": {
                      "description": "TikTok title/caption field.",
                      "type": "string"
                    },
                    "media_type": {
                      "description": "Set to PHOTO for TikTok photo posts or multi-photo slideshows.",
                      "enum": [
                        "PHOTO"
                      ],
                      "type": "string"
                    },
                    "photo_cover_index": {
                      "description": "Zero-based cover image index for TikTok photo posts.",
                      "type": "number"
                    },
                    "video_cover_timestamp_ms": {
                      "description": "Millisecond timestamp of the video frame to use as the cover (direct post only).",
                      "type": "number"
                    },
                    "cover_timestamp_ms": {
                      "description": "Millisecond timestamp of the video frame to use as the cover (direct post only). Alias for video_cover_timestamp_ms.",
                      "type": "number"
                    },
                    "auto_add_music": {
                      "description": "Ask TikTok to add recommended music to photo posts when direct posting.",
                      "type": "boolean"
                    },
                    "is_commercial_content": {
                      "description": "TikTok commercial content disclosure.",
                      "type": "boolean"
                    },
                    "is_your_brand": {
                      "description": "TikTok branded content: your own brand.",
                      "type": "boolean"
                    },
                    "is_branded_content": {
                      "description": "TikTok branded content: third-party brand.",
                      "type": "boolean"
                    },
                    "ai_generated": {
                      "description": "Label the post as AI-generated (TikTok is_aigc).",
                      "type": "boolean"
                    },
                    "ai_disclosure": {
                      "description": "Label the post as AI-generated (TikTok is_aigc). Alias for ai_generated.",
                      "type": "boolean"
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "privacy_level": "PUBLIC_TO_EVERYONE",
                    "media_type": "PHOTO",
                    "photo_cover_index": 0,
                    "auto_add_music": true,
                    "allow_comment": true,
                    "allow_duet": false,
                    "allow_stitch": false,
                    "video_cover_timestamp_ms": 1500
                  }
                },
                {
                  "title": "X settings",
                  "type": "object",
                  "properties": {
                    "reply_settings": {
                      "description": "Who can reply to the post.",
                      "enum": [
                        "everyone",
                        "following",
                        "mentionedUsers",
                        "subscribers",
                        "verified"
                      ],
                      "type": "string"
                    },
                    "x_reply_settings": {
                      "description": "Who can reply to the post. Alias for reply_settings.",
                      "enum": [
                        "everyone",
                        "following",
                        "mentionedUsers",
                        "subscribers",
                        "verified"
                      ],
                      "type": "string"
                    },
                    "poll": {
                      "description": "X poll settings: options and duration_minutes.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "x_poll": {
                      "description": "X poll settings: options and duration_minutes. Alias for poll.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "ai_generated": {
                      "description": "Label the post as AI-generated (X made_with_ai).",
                      "type": "boolean"
                    },
                    "ai_disclosure": {
                      "description": "Label the post as AI-generated (X made_with_ai). Alias for ai_generated.",
                      "type": "boolean"
                    },
                    "made_with_ai": {
                      "description": "Label the post as AI-generated (X made_with_ai). Alias for ai_generated.",
                      "type": "boolean"
                    },
                    "paid_partnership": {
                      "description": "Mark the post as a paid partnership (POST /2/tweets paid_partnership). Existing tweet.write.",
                      "type": "boolean"
                    },
                    "x_paid_partnership": {
                      "description": "Mark the post as a paid partnership (POST /2/tweets paid_partnership). Existing tweet.write. Alias for paid_partnership.",
                      "type": "boolean"
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "reply_settings": "following",
                    "poll": {
                      "options": [
                        "Yes",
                        "No"
                      ],
                      "duration_minutes": 1440
                    },
                    "paid_partnership": true
                  }
                },
                {
                  "title": "LinkedIn settings",
                  "type": "object",
                  "properties": {
                    "document_title": {
                      "description": "Title for a LinkedIn PDF/document post.",
                      "type": "string"
                    },
                    "linkedin_document_title": {
                      "description": "Title for a LinkedIn PDF/document post. Alias for document_title.",
                      "type": "string"
                    },
                    "document_filename": {
                      "description": "Filename for a LinkedIn document post.",
                      "type": "string"
                    },
                    "mentions": {
                      "description": "LinkedIn organization mention objects.",
                      "type": "array",
                      "items": {}
                    },
                    "linkedin_mentions": {
                      "description": "LinkedIn organization mention objects. Alias for mentions.",
                      "type": "array",
                      "items": {}
                    },
                    "poll": {
                      "description": "LinkedIn poll: { question, options (2-4), duration (ONE_DAY|THREE_DAYS|SEVEN_DAYS|FOURTEEN_DAYS) }. Mutually exclusive with media.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "linkedin_poll": {
                      "description": "LinkedIn poll: { question, options (2-4), duration (ONE_DAY|THREE_DAYS|SEVEN_DAYS|FOURTEEN_DAYS) }. Mutually exclusive with media. Alias for poll.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "thumbnail_url": {
                      "description": "Custom video thumbnail URL.",
                      "type": "string"
                    },
                    "content_call_to_action_label": {
                      "description": "LinkedIn contentCallToActionLabel, including BUY_NOW and SHOP_NOW (version 202504). Pair with content_landing_page.",
                      "enum": [
                        "APPLY",
                        "DOWNLOAD",
                        "VIEW_QUOTE",
                        "LEARN_MORE",
                        "SIGN_UP",
                        "SUBSCRIBE",
                        "REGISTER",
                        "JOIN",
                        "ATTEND",
                        "REQUEST_DEMO",
                        "SEE_MORE",
                        "BUY_NOW",
                        "SHOP_NOW"
                      ],
                      "type": "string"
                    },
                    "cta_label": {
                      "description": "LinkedIn contentCallToActionLabel, including BUY_NOW and SHOP_NOW (version 202504). Pair with content_landing_page. Alias for content_call_to_action_label.",
                      "enum": [
                        "APPLY",
                        "DOWNLOAD",
                        "VIEW_QUOTE",
                        "LEARN_MORE",
                        "SIGN_UP",
                        "SUBSCRIBE",
                        "REGISTER",
                        "JOIN",
                        "ATTEND",
                        "REQUEST_DEMO",
                        "SEE_MORE",
                        "BUY_NOW",
                        "SHOP_NOW"
                      ],
                      "type": "string"
                    },
                    "linkedin_cta_label": {
                      "description": "LinkedIn contentCallToActionLabel, including BUY_NOW and SHOP_NOW (version 202504). Pair with content_landing_page. Alias for content_call_to_action_label.",
                      "enum": [
                        "APPLY",
                        "DOWNLOAD",
                        "VIEW_QUOTE",
                        "LEARN_MORE",
                        "SIGN_UP",
                        "SUBSCRIBE",
                        "REGISTER",
                        "JOIN",
                        "ATTEND",
                        "REQUEST_DEMO",
                        "SEE_MORE",
                        "BUY_NOW",
                        "SHOP_NOW"
                      ],
                      "type": "string"
                    },
                    "content_landing_page": {
                      "description": "Landing page URL sent as contentLandingPage with the LinkedIn call to action.",
                      "type": "string"
                    },
                    "cta_url": {
                      "description": "Landing page URL sent as contentLandingPage with the LinkedIn call to action. Alias for content_landing_page.",
                      "type": "string"
                    },
                    "linkedin_cta_url": {
                      "description": "Landing page URL sent as contentLandingPage with the LinkedIn call to action. Alias for content_landing_page.",
                      "type": "string"
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "document_title": "Launch plan",
                    "mentions": [
                      {
                        "display_name": "posterly",
                        "urn": "urn:li:organization:123"
                      }
                    ],
                    "poll": {
                      "question": "Which feature next?",
                      "options": [
                        "Polls",
                        "Analytics"
                      ],
                      "duration": "THREE_DAYS"
                    },
                    "content_call_to_action_label": "BUY_NOW",
                    "content_landing_page": "https://www.poster.ly"
                  }
                },
                {
                  "title": "YouTube settings",
                  "type": "object",
                  "properties": {
                    "title": {
                      "description": "YouTube video title.",
                      "type": "string"
                    },
                    "youtube_title": {
                      "description": "YouTube video title. Alias for title.",
                      "type": "string"
                    },
                    "thumbnail_url": {
                      "description": "Custom YouTube thumbnail URL.",
                      "type": "string"
                    },
                    "privacy_status": {
                      "description": "YouTube video visibility.",
                      "enum": [
                        "public",
                        "unlisted",
                        "private"
                      ],
                      "type": "string"
                    },
                    "privacy": {
                      "description": "YouTube video visibility. Alias for privacy_status.",
                      "enum": [
                        "public",
                        "unlisted",
                        "private"
                      ],
                      "type": "string"
                    },
                    "made_for_kids": {
                      "description": "YouTube made-for-kids declaration.",
                      "type": "boolean"
                    },
                    "tags": {
                      "description": "YouTube tags.",
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "category_id": {
                      "description": "YouTube category ID.",
                      "type": "string"
                    },
                    "notify_subscribers": {
                      "description": "Notify subscribers when the video publishes (default true).",
                      "type": "boolean"
                    },
                    "add_shorts_hashtag": {
                      "description": "Append #Shorts to the description for Shorts-feed eligibility (vertical clips).",
                      "type": "boolean"
                    },
                    "ai_generated": {
                      "description": "Label the video as containing AI/synthetic media (containsSyntheticMedia).",
                      "type": "boolean"
                    },
                    "ai_disclosure": {
                      "description": "Label the video as containing AI/synthetic media (containsSyntheticMedia). Alias for ai_generated.",
                      "type": "boolean"
                    },
                    "brand_partner": {
                      "description": "Optional YouTube brandPartner channel ID (UC…) or handle (@…). Added to videos.insert part=brandPartner when set.",
                      "type": "string"
                    },
                    "brandPartner": {
                      "description": "Optional YouTube brandPartner channel ID (UC…) or handle (@…). Added to videos.insert part=brandPartner when set. Alias for brand_partner.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "title"
                  ],
                  "additionalProperties": true,
                  "example": {
                    "title": "Launch walkthrough",
                    "privacy_status": "unlisted",
                    "notify_subscribers": false,
                    "add_shorts_hashtag": true,
                    "brand_partner": "@brand"
                  }
                },
                {
                  "title": "Pinterest settings",
                  "type": "object",
                  "properties": {
                    "board_id": {
                      "description": "Pinterest board ID from the pinterest.boards helper.",
                      "type": "string"
                    },
                    "pinterest_board_id": {
                      "description": "Pinterest board ID from the pinterest.boards helper. Alias for board_id.",
                      "type": "string"
                    },
                    "title": {
                      "description": "Pinterest Pin title.",
                      "type": "string"
                    },
                    "link": {
                      "description": "Destination URL for the Pin.",
                      "type": "string"
                    },
                    "destination_url": {
                      "description": "Destination URL for the Pin. Alias for link.",
                      "type": "string"
                    },
                    "cover_image_url": {
                      "description": "Required for video Pins: a stored, probe-verified JPEG or PNG cover URL (20 MiB maximum).",
                      "type": "string"
                    },
                    "video_cover_url": {
                      "description": "Required for video Pins: a stored, probe-verified JPEG or PNG cover URL (20 MiB maximum). Alias for cover_image_url.",
                      "type": "string"
                    },
                    "pinterest_cover_image_url": {
                      "description": "Required for video Pins: a stored, probe-verified JPEG or PNG cover URL (20 MiB maximum). Alias for cover_image_url.",
                      "type": "string"
                    },
                    "ai_generated": {
                      "description": "Label the Pin as AI-modified (ai_disclosures).",
                      "type": "boolean"
                    },
                    "ai_disclosure": {
                      "description": "Label the Pin as AI-modified (ai_disclosures). Alias for ai_generated.",
                      "type": "boolean"
                    },
                    "product_tags": {
                      "description": "Optional product tags on POST /v5/pins (product_id, optional x/y). Existing pins:write. Pin note is not written.",
                      "type": "array",
                      "items": {}
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "required": [
                    "board_id"
                  ],
                  "additionalProperties": true,
                  "example": {
                    "board_id": "123456789",
                    "title": "Launch ideas",
                    "link": "https://www.poster.ly",
                    "cover_image_url": "https://assets.poster.ly/users/123/pinterest-video-covers/cover.jpg",
                    "product_tags": [
                      {
                        "product_id": "123"
                      }
                    ]
                  }
                },
                {
                  "title": "Threads settings",
                  "type": "object",
                  "properties": {
                    "reply_control": {
                      "description": "Threads reply control setting.",
                      "enum": [
                        "everyone",
                        "accounts_you_follow",
                        "mentioned_only",
                        "followers_only",
                        "parent_post_author_only"
                      ],
                      "type": "string"
                    },
                    "threads_reply_control": {
                      "description": "Threads reply control setting. Alias for reply_control.",
                      "enum": [
                        "everyone",
                        "accounts_you_follow",
                        "mentioned_only",
                        "followers_only",
                        "parent_post_author_only"
                      ],
                      "type": "string"
                    },
                    "poll": {
                      "description": "Threads poll: { options (2-4) }. Text-only, fixed 24h duration.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "threads_poll": {
                      "description": "Threads poll: { options (2-4) }. Text-only, fixed 24h duration. Alias for poll.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "topic_tag": {
                      "description": "A single Threads topic tag (1-50 chars, no periods/ampersands).",
                      "type": "string"
                    },
                    "threads_topic_tag": {
                      "description": "A single Threads topic tag (1-50 chars, no periods/ampersands). Alias for topic_tag.",
                      "type": "string"
                    },
                    "text_attachment": {
                      "description": "Long-form Threads text attachment.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "threads_text_attachment": {
                      "description": "Long-form Threads text attachment. Alias for text_attachment.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "share_to_instagram": {
                      "description": "Also share the published post to the Instagram account linked to the Threads profile as a Story (dark card). Requires Instagram sharing enabled for the Threads profile in the Threads app.",
                      "type": "boolean"
                    },
                    "threads_share_to_instagram": {
                      "description": "Also share the published post to the Instagram account linked to the Threads profile as a Story (dark card). Requires Instagram sharing enabled for the Threads profile in the Threads app. Alias for share_to_instagram.",
                      "type": "boolean"
                    },
                    "is_ghost_post": {
                      "description": "Publish as a Threads ghost post. Text-only.",
                      "type": "boolean"
                    },
                    "threads_is_ghost_post": {
                      "description": "Publish as a Threads ghost post. Text-only. Alias for is_ghost_post.",
                      "type": "boolean"
                    },
                    "is_spoiler": {
                      "description": "Mark the Threads post as a spoiler (full-caption text entity and/or is_spoiler_media).",
                      "type": "boolean"
                    },
                    "threads_is_spoiler": {
                      "description": "Mark the Threads post as a spoiler (full-caption text entity and/or is_spoiler_media). Alias for is_spoiler.",
                      "type": "boolean"
                    },
                    "is_spoiler_media": {
                      "description": "Set is_spoiler_media on the Threads container when media is attached.",
                      "type": "boolean"
                    },
                    "threads_is_spoiler_media": {
                      "description": "Set is_spoiler_media on the Threads container when media is attached. Alias for is_spoiler_media.",
                      "type": "boolean"
                    },
                    "text_entities": {
                      "description": "Threads text_entities, for example spoiler ranges with entity_type, offset, and length.",
                      "type": "array",
                      "items": {}
                    },
                    "threads_text_entities": {
                      "description": "Threads text_entities, for example spoiler ranges with entity_type, offset, and length. Alias for text_entities.",
                      "type": "array",
                      "items": {}
                    },
                    "enable_reply_approvals": {
                      "description": "Require approval before replies appear (enable_reply_approvals).",
                      "type": "boolean"
                    },
                    "threads_enable_reply_approvals": {
                      "description": "Require approval before replies appear (enable_reply_approvals). Alias for enable_reply_approvals.",
                      "type": "boolean"
                    },
                    "gif_attachment": {
                      "description": "GIPHY gif_attachment: { gif_id, provider: \"GIPHY\" }. Tenor is not supported.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "threads_gif_attachment": {
                      "description": "GIPHY gif_attachment: { gif_id, provider: \"GIPHY\" }. Tenor is not supported. Alias for gif_attachment.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "reply_control": "everyone",
                    "poll": {
                      "options": [
                        "Polls",
                        "Analytics"
                      ]
                    },
                    "topic_tag": "producthunt",
                    "is_ghost_post": false,
                    "enable_reply_approvals": true
                  }
                },
                {
                  "title": "Google Business settings",
                  "type": "object",
                  "properties": {
                    "post_type": {
                      "description": "Google Business Profile post type.",
                      "enum": [
                        "STANDARD",
                        "EVENT",
                        "OFFER"
                      ],
                      "type": "string"
                    },
                    "topic_type": {
                      "description": "Google Business Profile post type. Alias for post_type.",
                      "enum": [
                        "STANDARD",
                        "EVENT",
                        "OFFER"
                      ],
                      "type": "string"
                    },
                    "event": {
                      "description": "Event title and start/end date/time.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "offer": {
                      "description": "Offer coupon, redeem URL, and terms.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "cta": {
                      "description": "CTA type and URL.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "recurrence": {
                      "description": "EVENT/OFFER recurrenceInfo: { type: DAILY|WEEKLY|MONTHLY, series_end_time? }. Keeps one-off scheduledTime.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "recurrenceInfo": {
                      "description": "EVENT/OFFER recurrenceInfo: { type: DAILY|WEEKLY|MONTHLY, series_end_time? }. Keeps one-off scheduledTime. Alias for recurrence.",
                      "type": "object",
                      "additionalProperties": true
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "post_type": "EVENT",
                    "event": {
                      "title": "Launch night",
                      "start_date": "2026-09-01"
                    },
                    "recurrence": {
                      "type": "WEEKLY",
                      "series_end_time": "2026-12-01T00:00:00Z"
                    },
                    "cta": {
                      "type": "LEARN_MORE",
                      "url": "https://www.poster.ly"
                    }
                  }
                },
                {
                  "title": "Telegram settings",
                  "type": "object",
                  "properties": {
                    "parse_mode": {
                      "description": "Telegram caption parse mode when supported.",
                      "enum": [
                        "HTML",
                        "MarkdownV2"
                      ],
                      "type": "string"
                    },
                    "disable_web_page_preview": {
                      "description": "Disable link previews for text posts.",
                      "type": "boolean"
                    },
                    "poll": {
                      "description": "Telegram native poll: { question, options (2-10), allows_multiple_answers? }.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "telegram_poll": {
                      "description": "Telegram native poll: { question, options (2-10), allows_multiple_answers? }. Alias for poll.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "buttons": {
                      "description": "Inline CTA buttons: [{ text, url }] (up to 3).",
                      "type": "array",
                      "items": {}
                    },
                    "telegram_buttons": {
                      "description": "Inline CTA buttons: [{ text, url }] (up to 3). Alias for buttons.",
                      "type": "array",
                      "items": {}
                    },
                    "video_cover_url": {
                      "description": "Cover image URL for sendVideo (Bot API cover).",
                      "type": "string"
                    },
                    "cover_url": {
                      "description": "Cover image URL for sendVideo (Bot API cover). Alias for video_cover_url.",
                      "type": "string"
                    },
                    "telegram_video_cover_url": {
                      "description": "Cover image URL for sendVideo (Bot API cover). Alias for video_cover_url.",
                      "type": "string"
                    },
                    "start_timestamp": {
                      "description": "Video start timestamp in seconds for sendVideo (Bot API start_timestamp).",
                      "type": "number"
                    },
                    "telegram_start_timestamp": {
                      "description": "Video start timestamp in seconds for sendVideo (Bot API start_timestamp). Alias for start_timestamp.",
                      "type": "number"
                    },
                    "is_live_photo": {
                      "description": "Send as sendLivePhoto when both a still image and a video are attached.",
                      "type": "boolean"
                    },
                    "telegram_is_live_photo": {
                      "description": "Send as sendLivePhoto when both a still image and a video are attached. Alias for is_live_photo.",
                      "type": "boolean"
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "poll": {
                      "question": "Which feature next?",
                      "options": [
                        "Polls",
                        "Analytics"
                      ]
                    },
                    "buttons": [
                      {
                        "text": "Read more",
                        "url": "https://www.poster.ly"
                      }
                    ],
                    "video_cover_url": "https://example.com/cover.jpg"
                  }
                },
                {
                  "title": "Bluesky settings",
                  "type": "object",
                  "properties": {
                    "langs": {
                      "description": "Language tags for the Bluesky post.",
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "content_label": {
                      "description": "Self-applied content warning (tap-to-reveal).",
                      "enum": [
                        "sexual",
                        "nudity",
                        "porn",
                        "graphic-media"
                      ],
                      "type": "string"
                    },
                    "content_warning": {
                      "description": "Self-applied content warning (tap-to-reveal). Alias for content_label.",
                      "enum": [
                        "sexual",
                        "nudity",
                        "porn",
                        "graphic-media"
                      ],
                      "type": "string"
                    },
                    "tags": {
                      "description": "Up to 8 hidden discovery tags (separate from in-text hashtags).",
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "bluesky_tags": {
                      "description": "Up to 8 hidden discovery tags (separate from in-text hashtags). Alias for tags.",
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "quote_url": {
                      "description": "A Bluesky post URL (or AT-URI) to quote.",
                      "type": "string"
                    },
                    "quote": {
                      "description": "A Bluesky post URL (or AT-URI) to quote. Alias for quote_url.",
                      "type": "string"
                    },
                    "bluesky_quote_url": {
                      "description": "A Bluesky post URL (or AT-URI) to quote. Alias for quote_url.",
                      "type": "string"
                    },
                    "disable_quotes": {
                      "description": "Prevent others from quote-posting this post (postgate).",
                      "type": "boolean"
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "langs": [
                      "en"
                    ],
                    "tags": [
                      "producthunt",
                      "launch"
                    ],
                    "quote_url": "https://bsky.app/profile/poster.ly/post/abc123"
                  }
                },
                {
                  "title": "Discord settings",
                  "type": "object",
                  "properties": {
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "media_alt_texts": {
                      "https://example.com/chart.png": "Q2 revenue chart"
                    }
                  }
                },
                {
                  "title": "Slack settings",
                  "type": "object",
                  "properties": {
                    "markdown": {
                      "description": "Send the caption as a Block Kit markdown block on chat.postMessage.",
                      "type": "boolean"
                    },
                    "slack_markdown": {
                      "description": "Send the caption as a Block Kit markdown block on chat.postMessage. Alias for markdown.",
                      "type": "boolean"
                    },
                    "blocks": {
                      "description": "Optional Block Kit blocks (markdown, card, or carousel) passed to chat.postMessage. File upload still uses getUploadURLExternal.",
                      "type": "array",
                      "items": {}
                    },
                    "slack_blocks": {
                      "description": "Optional Block Kit blocks (markdown, card, or carousel) passed to chat.postMessage. File upload still uses getUploadURLExternal. Alias for blocks.",
                      "type": "array",
                      "items": {}
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "markdown": true
                  }
                },
                {
                  "title": "Mastodon settings",
                  "type": "object",
                  "properties": {
                    "visibility": {
                      "description": "Status visibility (private means followers only).",
                      "enum": [
                        "public",
                        "unlisted",
                        "private"
                      ],
                      "type": "string"
                    },
                    "mastodon_visibility": {
                      "description": "Status visibility (private means followers only). Alias for visibility.",
                      "enum": [
                        "public",
                        "unlisted",
                        "private"
                      ],
                      "type": "string"
                    },
                    "spoiler_text": {
                      "description": "Content warning shown before the post is revealed (marks media sensitive).",
                      "type": "string"
                    },
                    "content_warning": {
                      "description": "Content warning shown before the post is revealed (marks media sensitive). Alias for spoiler_text.",
                      "type": "string"
                    },
                    "mastodon_spoiler_text": {
                      "description": "Content warning shown before the post is revealed (marks media sensitive). Alias for spoiler_text.",
                      "type": "string"
                    },
                    "language": {
                      "description": "ISO 639 language code for the status.",
                      "type": "string"
                    },
                    "mastodon_language": {
                      "description": "ISO 639 language code for the status. Alias for language.",
                      "type": "string"
                    },
                    "quoted_status_id": {
                      "description": "Mastodon status ID to quote (4.5+ quoted_status_id).",
                      "type": "string"
                    },
                    "quote_id": {
                      "description": "Mastodon status ID to quote (4.5+ quoted_status_id). Alias for quoted_status_id.",
                      "type": "string"
                    },
                    "mastodon_quoted_status_id": {
                      "description": "Mastodon status ID to quote (4.5+ quoted_status_id). Alias for quoted_status_id.",
                      "type": "string"
                    },
                    "poll": {
                      "description": "Mastodon poll: { options (2-4), expires_in seconds, multiple? }. Media and a poll can be combined on Mastodon 4.6+.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "mastodon_poll": {
                      "description": "Mastodon poll: { options (2-4), expires_in seconds, multiple? }. Media and a poll can be combined on Mastodon 4.6+. Alias for poll.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "visibility": "public",
                    "spoiler_text": "Launch spoilers",
                    "language": "en",
                    "quoted_status_id": "123",
                    "poll": {
                      "options": [
                        "Yes",
                        "No"
                      ],
                      "expires_in": 86400
                    }
                  }
                },
                {
                  "title": "Dev.to settings",
                  "type": "object",
                  "properties": {
                    "title": {
                      "description": "Article title. Falls back to the first line of the caption.",
                      "type": "string"
                    },
                    "devto_title": {
                      "description": "Article title. Falls back to the first line of the caption. Alias for title.",
                      "type": "string"
                    },
                    "tags": {
                      "description": "Up to 4 tags (lowercase alphanumeric).",
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "devto_tags": {
                      "description": "Up to 4 tags (lowercase alphanumeric). Alias for tags.",
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "canonical_url": {
                      "description": "Canonical URL when cross-posting from your own blog.",
                      "type": "string"
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "title": "How we ship 18 platforms",
                    "tags": [
                      "webdev",
                      "saas"
                    ]
                  }
                },
                {
                  "title": "Hashnode settings",
                  "type": "object",
                  "properties": {
                    "title": {
                      "description": "Post title. Falls back to the first line of the caption.",
                      "type": "string"
                    },
                    "hashnode_title": {
                      "description": "Post title. Falls back to the first line of the caption. Alias for title.",
                      "type": "string"
                    },
                    "tags": {
                      "description": "Up to 4 tags (lowercase alphanumeric).",
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "hashnode_tags": {
                      "description": "Up to 4 tags (lowercase alphanumeric). Alias for tags.",
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "publication_id": {
                      "description": "Target publication. Defaults to the account blog captured at connect time.",
                      "type": "string"
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "title": "How we ship 18 platforms",
                    "tags": [
                      "webdev",
                      "saas"
                    ]
                  }
                },
                {
                  "title": "WordPress settings",
                  "type": "object",
                  "properties": {
                    "title": {
                      "description": "Post title. Falls back to the first line of the caption.",
                      "type": "string"
                    },
                    "wordpress_title": {
                      "description": "Post title. Falls back to the first line of the caption. Alias for title.",
                      "type": "string"
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "additionalProperties": true,
                  "example": {
                    "title": "How we ship 18 platforms"
                  }
                },
                {
                  "title": "Lemmy settings",
                  "type": "object",
                  "properties": {
                    "community": {
                      "description": "Target community, e.g. technology or technology@lemmy.world.",
                      "type": "string"
                    },
                    "lemmy_community": {
                      "description": "Target community, e.g. technology or technology@lemmy.world. Alias for community.",
                      "type": "string"
                    },
                    "title": {
                      "description": "Post title. Falls back to the first line of the caption.",
                      "type": "string"
                    },
                    "lemmy_title": {
                      "description": "Post title. Falls back to the first line of the caption. Alias for title.",
                      "type": "string"
                    },
                    "url": {
                      "description": "Link post URL. Defaults to the first attached image.",
                      "type": "string"
                    },
                    "lemmy_url": {
                      "description": "Link post URL. Defaults to the first attached image. Alias for url.",
                      "type": "string"
                    },
                    "nsfw": {
                      "description": "Mark the post NSFW.",
                      "type": "boolean"
                    },
                    "media_alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "alt_texts": {
                      "description": "Legacy map of source media URLs to alt text. Still accepted for backwards compatibility. Alias for media_alt_texts.",
                      "type": "object",
                      "additionalProperties": true
                    },
                    "media_accessibility": {
                      "description": "Ordered media accessibility entries: { index, asset_id?, source_url?, alt_text }. Preferred because identity survives platform media preparation.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "index",
                          "alt_text"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "asset_id": {
                            "type": "string"
                          },
                          "source_url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "alt_text": {
                            "type": "string"
                          }
                        },
                        "additionalProperties": false
                      }
                    }
                  },
                  "required": [
                    "community"
                  ],
                  "additionalProperties": true,
                  "example": {
                    "community": "selfhosted@lemmy.world",
                    "title": "posterly now posts to Lemmy"
                  }
                }
              ],
              "additionalProperties": true
            },
            "reel_cover_url": {
              "type": "string",
              "format": "uri"
            },
            "reel_cover_method": {
              "type": "string"
            },
            "reel_thumb_offset": {
              "type": "number",
              "minimum": 0
            },
            "confirm": {
              "type": "boolean",
              "description": "Must be true after the user explicitly confirms the proposed post update."
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "Update Post",
          "readOnlyHint": false,
          "destructiveHint": true,
          "idempotentHint": true,
          "openWorldHint": false
        }
      },
      {
        "name": "update_post_status",
        "description": "Pause, resume/schedule, or move a post back to draft. DESTRUCTIVE WRITE: changes whether content will publish. Always fetch with get_post first, show the current status and proposed status/scheduled_at, and get explicit confirmation before calling.",
        "inputSchema": {
          "type": "object",
          "required": [
            "post_id",
            "status",
            "confirm"
          ],
          "properties": {
            "post_id": {
              "type": "integer"
            },
            "status": {
              "type": "string",
              "enum": [
                "scheduled",
                "paused",
                "draft"
              ]
            },
            "scheduled_at": {
              "type": "string",
              "description": "ISO 8601 UTC datetime. Required when scheduling a draft; optional when resuming a paused future post."
            },
            "confirm": {
              "type": "boolean",
              "description": "Must be true after the user explicitly confirms the status change."
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "Update Post Status",
          "readOnlyHint": false,
          "destructiveHint": true,
          "idempotentHint": true,
          "openWorldHint": false
        }
      },
      {
        "name": "update_post_release_id",
        "description": "Set or repair an external release_id and optional group_id on a post. WRITE: call get_post first, show the target post and release/group IDs, then pass confirm=true only after explicit confirmation.",
        "inputSchema": {
          "type": "object",
          "required": [
            "post_id",
            "release_id",
            "confirm"
          ],
          "properties": {
            "post_id": {
              "type": "integer"
            },
            "release_id": {
              "type": "string",
              "minLength": 1,
              "maxLength": 160
            },
            "group_id": {
              "type": "string",
              "minLength": 1,
              "maxLength": 160
            },
            "confirm": {
              "type": "boolean",
              "description": "Must be true after the user explicitly confirms the release/group metadata update."
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "Update Post Release Id",
          "readOnlyHint": false,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false
        }
      },
      {
        "name": "delete_post",
        "description": "Delete a scheduled or draft post. DESTRUCTIVE and IRREVERSIBLE. Cannot delete published posts. Always fetch with get_post first and confirm what will be deleted before calling.",
        "inputSchema": {
          "type": "object",
          "required": [
            "post_id",
            "confirm"
          ],
          "properties": {
            "post_id": {
              "type": "integer"
            },
            "confirm": {
              "type": "boolean",
              "description": "Must be true after the user explicitly confirms the post deletion."
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "Delete Post",
          "readOnlyHint": false,
          "destructiveHint": true,
          "idempotentHint": true,
          "openWorldHint": false
        }
      },
      {
        "name": "delete_post_group",
        "description": "Delete every draft/scheduled/failed/paused post matching a caller-defined group_id, post_group_id, api_group_id, or release_id. DESTRUCTIVE: inspect the group first, list affected posts, and pass confirm=true only after explicit confirmation.",
        "inputSchema": {
          "type": "object",
          "required": [
            "group_id",
            "confirm"
          ],
          "properties": {
            "group_id": {
              "type": "string",
              "minLength": 1,
              "maxLength": 160
            },
            "confirm": {
              "type": "boolean",
              "description": "Must be true after the user explicitly confirms group deletion."
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "Delete Post Group",
          "readOnlyHint": false,
          "destructiveHint": true,
          "idempotentHint": true,
          "openWorldHint": false
        }
      },
      {
        "name": "get_x_posting_quota",
        "description": "Get managed X posting quota, usage, remaining posts, URL-blocking status, and add-on plan info for a workspace.",
        "inputSchema": {
          "type": "object",
          "properties": {
            "workspace_id": {
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "Get X Posting Quota",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": true
        }
      },
      {
        "name": "upload_media",
        "description": "Upload a small image or video to posterly storage via base64. Returns a URL usable with create_post. Supports JPEG, PNG, GIF, WebP, MP4, MOV, WebM. Keep decoded files <=5MB on this relay path; for larger files, use create_signed_upload and PUT the raw bytes to the returned upload_url. Counts against the user's storage quota but does not publish anywhere - that's create_post's job.",
        "inputSchema": {
          "type": "object",
          "required": [
            "filename",
            "base64_data"
          ],
          "properties": {
            "base64_data": {
              "type": "string",
              "description": "Base64-encoded file data. The HTTP MCP transport requires base64 (no filesystem access)."
            },
            "filename": {
              "type": "string",
              "description": "Filename with extension, e.g. photo.jpg"
            },
            "content_type": {
              "type": "string",
              "description": "MIME type (auto-detected from filename if omitted)"
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "Upload Media",
          "readOnlyHint": false,
          "destructiveHint": false,
          "idempotentHint": false,
          "openWorldHint": false
        }
      },
      {
        "name": "upload_media_from_url",
        "description": "Fetch an image or video from a public HTTPS URL into posterly storage. Returns a URL usable with create_post. SSRF protections block localhost/private IP targets.",
        "inputSchema": {
          "type": "object",
          "required": [
            "url"
          ],
          "properties": {
            "url": {
              "type": "string",
              "format": "uri"
            },
            "filename": {
              "type": "string"
            },
            "content_type": {
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "Upload Media From Url",
          "readOnlyHint": false,
          "destructiveHint": false,
          "idempotentHint": false,
          "openWorldHint": true
        }
      },
      {
        "name": "create_signed_upload",
        "description": "Create a signed upload URL for a larger image or video. PUT the raw bytes to the returned upload_url (object storage) with the returned headers, then pass public_url to create_post.",
        "inputSchema": {
          "type": "object",
          "required": [
            "filename",
            "content_type",
            "size"
          ],
          "properties": {
            "filename": {
              "type": "string"
            },
            "content_type": {
              "type": "string"
            },
            "size": {
              "type": "integer",
              "minimum": 1
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "Create Signed Upload",
          "readOnlyHint": false,
          "destructiveHint": false,
          "idempotentHint": false,
          "openWorldHint": true
        }
      },
      {
        "name": "create_media_drop",
        "description": "Create a human drop page so ChatGPT or Claude users can upload a laptop file without dashboard login. Returns drop_url (https://www.poster.ly/drop/<token>). Send that URL to the user, wait, then call list_media. This is not the chat paperclip and not create_signed_upload.",
        "inputSchema": {
          "type": "object",
          "properties": {
            "filename": {
              "type": "string",
              "description": "Optional filename hint, e.g. launch-video.mp4"
            },
            "max_files": {
              "type": "integer",
              "minimum": 1,
              "maximum": 10
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "Create Media Drop",
          "readOnlyHint": false,
          "destructiveHint": false,
          "idempotentHint": false,
          "openWorldHint": true
        }
      },
      {
        "name": "list_media",
        "description": "List the newest media assets for the authenticated user. After create_media_drop, pass drop_session_id to see files uploaded on /drop/<token>. Use public_url with validate_post / create_post.",
        "inputSchema": {
          "type": "object",
          "properties": {
            "limit": {
              "type": "integer",
              "minimum": 1,
              "maximum": 50,
              "default": 10
            },
            "drop_session_id": {
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "List Media",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false
        }
      },
      {
        "name": "get_video_options",
        "description": "List read-only Google Veo and xAI Grok video generation options, input modes, durations, resolutions, aspect ratios, and credit-cost estimates. Does not generate video or spend credits.",
        "inputSchema": {
          "type": "object",
          "properties": {},
          "additionalProperties": false
        },
        "annotations": {
          "title": "Get Video Options",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false
        }
      },
      {
        "name": "run_video_function",
        "description": "Run a read-only Google Veo or xAI Grok video helper function before generation. Does not generate video or spend credits.",
        "inputSchema": {
          "type": "object",
          "required": [
            "identifier",
            "functionName"
          ],
          "properties": {
            "identifier": {
              "type": "string",
              "enum": [
                "google_veo",
                "veo3",
                "xai_grok",
                "grok_imagine"
              ],
              "description": "Video generator identifier from get_video_options."
            },
            "functionName": {
              "type": "string",
              "enum": [
                "list_input_modes",
                "estimate_cost",
                "validate_request"
              ],
              "description": "Helper function name from get_video_options.tools."
            },
            "params": {
              "type": "object",
              "additionalProperties": true,
              "description": "Function parameters. estimate_cost accepts model, duration_seconds, resolution, output, and xAI input_image_count. validate_request accepts a generate_video-style payload."
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "Run Video Function",
          "readOnlyHint": false,
          "destructiveHint": false,
          "idempotentHint": false,
          "openWorldHint": true
        }
      },
      {
        "name": "generate_video",
        "description": "Queue an AI video job with Google Veo 3.1 or xAI Grok Imagine Video 1.5. COSTS CREDITS - confirm provider, prompt, duration, resolution, aspect ratio, audio choice, and credit cost with the user before calling. Poll get_video_job for status and final video_url.",
        "inputSchema": {
          "type": "object",
          "required": [
            "prompt",
            "confirm"
          ],
          "properties": {
            "provider": {
              "type": "string",
              "enum": [
                "google",
                "xai"
              ],
              "default": "google"
            },
            "prompt": {
              "type": "string",
              "minLength": 5,
              "maxLength": 4000
            },
            "negative_prompt": {
              "type": "string",
              "maxLength": 500
            },
            "aspect_ratio": {
              "type": "string",
              "enum": [
                "1:1",
                "16:9",
                "9:16",
                "4:3",
                "3:4",
                "3:2",
                "2:3"
              ],
              "default": "16:9"
            },
            "duration_seconds": {
              "type": "integer",
              "minimum": 1,
              "maximum": 15,
              "default": 8
            },
            "resolution": {
              "type": "string",
              "enum": [
                "480p",
                "720p",
                "1080p"
              ],
              "default": "720p"
            },
            "model": {
              "type": "string",
              "enum": [
                "lite",
                "fast",
                "standard"
              ],
              "default": "fast"
            },
            "image_url": {
              "type": "string",
              "format": "uri"
            },
            "end_image_url": {
              "type": "string",
              "format": "uri"
            },
            "reference_images": {
              "type": "array",
              "maxItems": 3,
              "items": {
                "type": "object",
                "required": [
                  "url",
                  "type"
                ],
                "properties": {
                  "url": {
                    "type": "string",
                    "format": "uri"
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "character",
                      "object",
                      "scene"
                    ]
                  }
                },
                "additionalProperties": false
              }
            },
            "generate_audio": {
              "type": "boolean",
              "default": true,
              "description": "Google can disable generated audio. xAI Grok includes audio and requires this to remain true."
            },
            "source_video_url": {
              "type": "string",
              "format": "uri"
            },
            "confirm": {
              "type": "boolean",
              "description": "Must be true after the user explicitly confirms prompt, model, duration, resolution, and credit cost."
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "Generate Video",
          "readOnlyHint": false,
          "destructiveHint": false,
          "idempotentHint": false,
          "openWorldHint": true
        }
      },
      {
        "name": "get_video_job",
        "description": "Get one AI video job by ID, or list recent video jobs when job_id is omitted. Use after generate_video to poll for completed video_url.",
        "inputSchema": {
          "type": "object",
          "properties": {
            "job_id": {
              "type": "string"
            },
            "status": {
              "type": "string",
              "enum": [
                "pending",
                "processing",
                "completed",
                "failed",
                "dismissed"
              ]
            },
            "limit": {
              "type": "integer",
              "minimum": 1,
              "maximum": 50,
              "default": 10
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "Get Video Job",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": true
        }
      },
      {
        "name": "generate_captions",
        "description": "Generate or adapt AI caption suggestions for one or more social platforms. Uses AI Caption Assist quota and returns options only; it does not create, draft, schedule, or publish posts.",
        "inputSchema": {
          "type": "object",
          "required": [
            "platforms"
          ],
          "properties": {
            "platforms": {
              "type": "array",
              "minItems": 1,
              "maxItems": 9,
              "items": {
                "type": "string",
                "enum": [
                  "instagram",
                  "facebook",
                  "tiktok",
                  "twitter",
                  "threads",
                  "linkedin",
                  "youtube",
                  "pinterest",
                  "google_business"
                ]
              }
            },
            "brief": {
              "type": "string",
              "maxLength": 1200
            },
            "tone": {
              "type": "string",
              "maxLength": 60
            },
            "allow_emojis": {
              "type": "boolean",
              "default": true
            },
            "hashtag_strategy": {
              "type": "string",
              "enum": [
                "none",
                "smart",
                "minimal",
                "aggressive"
              ],
              "default": "smart"
            },
            "count": {
              "type": "integer",
              "minimum": 1,
              "maximum": 5,
              "default": 3
            },
            "mode": {
              "type": "string",
              "enum": [
                "generate",
                "adapt"
              ],
              "default": "generate"
            },
            "source_caption": {
              "type": "string",
              "maxLength": 4000
            },
            "source_platform": {
              "type": "string",
              "enum": [
                "instagram",
                "facebook",
                "tiktok",
                "twitter",
                "threads",
                "linkedin",
                "youtube",
                "pinterest",
                "google_business"
              ]
            },
            "preserve_links": {
              "type": "boolean",
              "default": true
            },
            "preserve_mentions": {
              "type": "boolean",
              "default": true
            },
            "preserve_call_to_action": {
              "type": "boolean",
              "default": true
            },
            "social_account_id": {
              "type": "string"
            },
            "workspace_id": {
              "type": "string"
            },
            "manual_brand_voice": {
              "type": "object",
              "required": [
                "summary"
              ],
              "properties": {
                "summary": {
                  "type": "string",
                  "minLength": 10,
                  "maxLength": 500
                },
                "traits": {
                  "type": "array",
                  "maxItems": 10,
                  "items": {
                    "type": "string"
                  }
                },
                "style_guidelines": {
                  "type": "array",
                  "maxItems": 10,
                  "items": {
                    "type": "string"
                  }
                }
              },
              "additionalProperties": true
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "Generate Captions",
          "readOnlyHint": false,
          "destructiveHint": false,
          "idempotentHint": false,
          "openWorldHint": true
        }
      },
      {
        "name": "generate_image",
        "description": "Generate an AI image via posterly using Nano Banana (Gemini) or Grok Imagine Image 2.0 (xAI). Returns a URL usable with create_post. COSTS CREDITS - confirm subject + style + aspect_ratio + provider with the user before calling.",
        "inputSchema": {
          "type": "object",
          "required": [
            "prompt",
            "confirm"
          ],
          "properties": {
            "prompt": {
              "type": "string",
              "minLength": 5,
              "maxLength": 4000
            },
            "aspect_ratio": {
              "type": "string",
              "enum": [
                "1:1",
                "9:16",
                "4:5",
                "3:4",
                "2:3",
                "1:4",
                "1:8",
                "21:9",
                "16:9",
                "4:3",
                "3:2",
                "4:1",
                "8:1",
                "5:4"
              ],
              "default": "1:1"
            },
            "style": {
              "type": "string",
              "enum": [
                "photographic",
                "illustration",
                "minimal",
                "vibrant",
                "professional",
                "youtube_thumbnail",
                "reel_cover",
                "review_background"
              ],
              "default": "photographic"
            },
            "variations": {
              "type": "integer",
              "minimum": 1,
              "maximum": 4,
              "default": 1
            },
            "provider": {
              "type": "string",
              "enum": [
                "google",
                "xai"
              ],
              "default": "google",
              "description": "google for Nano Banana or xai for Grok Imagine Image 2.0."
            },
            "model": {
              "type": "string",
              "enum": [
                "lite",
                "flash",
                "pro"
              ],
              "default": "flash",
              "description": "Google-only: lite (8 credits, 1K only), flash (15 at 1K), or pro (30 at 1K). Ignored for xAI."
            },
            "resolution": {
              "type": "string",
              "enum": [
                "512",
                "1K",
                "2K",
                "4K"
              ],
              "default": "1K",
              "description": "xAI supports 1K/2K only. Google flash bills 10/15/23/35 for 512/1K/2K/4K; pro bills 30 at 1K-2K and 55 at 4K."
            },
            "quality": {
              "type": "string",
              "enum": [
                "low",
                "medium"
              ],
              "default": "medium",
              "description": "xAI only. Low costs 9/14 credits at 1K/2K; medium costs 14/18 credits."
            },
            "confirm": {
              "type": "boolean",
              "description": "Must be true after the user explicitly confirms subject, style, aspect ratio, and credit use."
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "Generate Image",
          "readOnlyHint": false,
          "destructiveHint": false,
          "idempotentHint": false,
          "openWorldHint": true
        }
      },
      {
        "name": "get_account_analytics",
        "description": "Get daily analytics snapshots and a period summary for a connected social account. Supports Instagram, Facebook Pages, LinkedIn, Google Business Profile, Pinterest, YouTube, and Threads. Uses API-provided display_metrics for platform-native dashboard labels. presentation controls output: compact for Telegram/mobile, table for Markdown clients, json for custom chart/card renderers.",
        "inputSchema": {
          "type": "object",
          "required": [
            "account_id"
          ],
          "properties": {
            "account_id": {
              "type": "integer",
              "description": "Social account ID (from list_accounts)"
            },
            "from": {
              "type": "string",
              "description": "ISO date, default 30 days ago"
            },
            "to": {
              "type": "string",
              "description": "ISO date, default today"
            },
            "presentation": {
              "type": "string",
              "enum": [
                "compact",
                "table",
                "json"
              ],
              "default": "compact",
              "description": "Output style: compact bullets, Markdown table, or raw JSON for client-side chart/card rendering."
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "Get Account Analytics",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": true
        }
      },
      {
        "name": "get_post_analytics",
        "description": "Get per-post engagement metrics (likes, comments/replies, reach, impressions/views, saves, shares, reposts, quotes, plays) for a connected account. Supports Instagram, Facebook Pages, LinkedIn, Google Business Profile, Pinterest, YouTube, and Threads. Most recent posts first. presentation controls output: compact for Telegram/mobile, table for Markdown clients, json for custom chart/card renderers.",
        "inputSchema": {
          "type": "object",
          "required": [
            "account_id"
          ],
          "properties": {
            "account_id": {
              "type": "integer"
            },
            "from": {
              "type": "string",
              "description": "ISO date, default 30 days ago"
            },
            "to": {
              "type": "string",
              "description": "ISO date, default today"
            },
            "limit": {
              "type": "integer",
              "minimum": 1,
              "maximum": 200,
              "default": 50
            },
            "offset": {
              "type": "integer",
              "minimum": 0
            },
            "presentation": {
              "type": "string",
              "enum": [
                "compact",
                "table",
                "json"
              ],
              "default": "compact",
              "description": "Output style: compact bullets, Markdown table, or raw JSON for client-side chart/card rendering."
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "Get Post Analytics",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": true
        }
      },
      {
        "name": "list_google_business_reviews",
        "description": "List Google Business Profile reviews for one location/account or every accessible GBP location. Pages through all reviews Google has (not just the first 50), returns the full untruncated review text with its date, and reports each location's total review count. Supports rating and unanswered-only filters plus limit/offset paging.",
        "inputSchema": {
          "type": "object",
          "properties": {
            "workspace_id": {
              "type": "string"
            },
            "account_id": {
              "type": "integer",
              "description": "Google Business social account ID from list_accounts."
            },
            "location_id": {
              "type": "string",
              "description": "Google Business numeric location id (the location_id/platform_user_id from list_accounts, e.g. \"197940849675145390\"). NOT the ChIJ... Place ID returned by get_google_business_review_link. Prefer account_id."
            },
            "rating": {
              "type": "integer",
              "minimum": 1,
              "maximum": 5
            },
            "unanswered": {
              "type": "boolean",
              "default": false
            },
            "limit": {
              "type": "integer",
              "minimum": 1,
              "maximum": 1000,
              "default": 200,
              "description": "Maximum reviews to return in this call. Every returned review is listed in full."
            },
            "offset": {
              "type": "integer",
              "minimum": 0,
              "description": "Skip this many reviews before returning results. Use with limit to page through a location with more reviews than one call returns."
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "List Google Business Reviews",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": true
        }
      },
      {
        "name": "get_google_business_review_link",
        "description": "Get the direct public Google review link for a connected Google Business Profile location. Requires account_id or location_id. Returns reviewLink plus the Google Place ID (ChIJ...); that Place ID is output only and must NOT be passed back as location_id to other tools.",
        "inputSchema": {
          "type": "object",
          "properties": {
            "workspace_id": {
              "type": "string"
            },
            "account_id": {
              "type": "integer",
              "description": "Google Business social account ID from list_accounts."
            },
            "location_id": {
              "type": "string",
              "description": "Google Business numeric location id (the location_id/platform_user_id from list_accounts, e.g. \"197940849675145390\"). NOT the ChIJ... Place ID returned by get_google_business_review_link. Prefer account_id."
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "Get Google Business Review Link",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": true
        }
      },
      {
        "name": "audit_google_business_profile",
        "description": "Run a live local-profile audit for a connected Google Business Profile location, including completeness, categories, media, attributes, reviews, and recommendations.",
        "inputSchema": {
          "type": "object",
          "properties": {
            "workspace_id": {
              "type": "string"
            },
            "account_id": {
              "type": "integer",
              "description": "Google Business social account ID from list_accounts."
            },
            "location_id": {
              "type": "string",
              "description": "Google Business numeric location id (the location_id/platform_user_id from list_accounts, e.g. \"197940849675145390\"). NOT the ChIJ... Place ID returned by get_google_business_review_link. Prefer account_id."
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "Audit Google Business Profile",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": true
        }
      },
      {
        "name": "suggest_google_business_review_reply",
        "description": "Generate short, brand-aware AI reply suggestions for a Google review. Uses the AI Caption Assist allowance; does not post the reply.",
        "inputSchema": {
          "type": "object",
          "required": [
            "star_rating"
          ],
          "properties": {
            "workspace_id": {
              "type": "string"
            },
            "account_id": {
              "type": "integer",
              "description": "Optional Google Business social account ID for brand voice context."
            },
            "location_id": {
              "type": "string"
            },
            "review_text": {
              "type": "string"
            },
            "star_rating": {
              "type": "number",
              "minimum": 1,
              "maximum": 5
            },
            "reviewer_name": {
              "type": "string"
            },
            "business_name": {
              "type": "string"
            },
            "tone": {
              "type": "string",
              "enum": [
                "professional",
                "friendly",
                "apologetic"
              ],
              "default": "professional"
            },
            "count": {
              "type": "integer",
              "minimum": 1,
              "maximum": 5,
              "default": 3
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "Suggest Google Business Review Reply",
          "readOnlyHint": false,
          "destructiveHint": false,
          "idempotentHint": false,
          "openWorldHint": true
        }
      },
      {
        "name": "reply_google_business_review",
        "description": "Post or update the owner reply on a Google Business Profile review. WRITE: show the review, location, and exact reply text to the user, then pass confirm=true only after explicit confirmation.",
        "inputSchema": {
          "type": "object",
          "required": [
            "review_name",
            "comment",
            "confirm"
          ],
          "properties": {
            "workspace_id": {
              "type": "string"
            },
            "account_id": {
              "type": "integer",
              "description": "Google Business social account ID from list_accounts."
            },
            "location_id": {
              "type": "string"
            },
            "review_name": {
              "type": "string",
              "description": "Full Google review resource name."
            },
            "comment": {
              "type": "string",
              "minLength": 1,
              "maxLength": 4096
            },
            "confirm": {
              "type": "boolean",
              "description": "Must be true after explicit user confirmation."
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "Reply Google Business Review",
          "readOnlyHint": false,
          "destructiveHint": true,
          "idempotentHint": true,
          "openWorldHint": true
        }
      },
      {
        "name": "delete_google_business_review_reply",
        "description": "Delete the owner reply from a Google Business Profile review. DESTRUCTIVE: confirm the review and location with the user, then pass confirm=true only after explicit confirmation.",
        "inputSchema": {
          "type": "object",
          "required": [
            "review_name",
            "confirm"
          ],
          "properties": {
            "workspace_id": {
              "type": "string"
            },
            "account_id": {
              "type": "integer",
              "description": "Google Business social account ID from list_accounts."
            },
            "location_id": {
              "type": "string"
            },
            "review_name": {
              "type": "string",
              "description": "Full Google review resource name."
            },
            "confirm": {
              "type": "boolean",
              "description": "Must be true after explicit user confirmation."
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "Delete Google Business Review Reply",
          "readOnlyHint": false,
          "destructiveHint": true,
          "idempotentHint": true,
          "openWorldHint": true
        }
      },
      {
        "name": "list_google_business_media",
        "description": "List the photos and videos on a Google Business Profile gallery (the media shown on Maps and Search) for one location/account or every accessible GBP location. This is separate from media attached to a post. Returns each item's resource name, category, format, and attribution.",
        "inputSchema": {
          "type": "object",
          "properties": {
            "workspace_id": {
              "type": "string",
              "description": "Filter to a workspace ID from whoami."
            },
            "account_id": {
              "type": "integer",
              "description": "Google Business social account ID from list_accounts."
            },
            "location_id": {
              "type": "string",
              "description": "Google Business numeric location id (the location_id/platform_user_id from list_accounts, e.g. \"197940849675145390\"). NOT the ChIJ... Place ID returned by get_google_business_review_link. Prefer account_id."
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "List Google Business Media",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": true
        }
      },
      {
        "name": "add_google_business_media",
        "description": "Add a photo or video to a Google Business Profile gallery (the media shown on Maps and Search). Provide a public https source_url first by uploading via upload_media_from_url or upload_media. COVER and PROFILE are single-slot and replace the existing one. WRITE: show the location, category, and media URL to the user, then pass confirm=true only after explicit confirmation.",
        "inputSchema": {
          "type": "object",
          "required": [
            "source_url",
            "category",
            "confirm"
          ],
          "properties": {
            "workspace_id": {
              "type": "string",
              "description": "Filter to a workspace ID from whoami."
            },
            "account_id": {
              "type": "integer",
              "description": "Google Business social account ID from list_accounts."
            },
            "location_id": {
              "type": "string",
              "description": "Google Business numeric location id (the location_id/platform_user_id from list_accounts, e.g. \"197940849675145390\"). NOT the ChIJ... Place ID returned by get_google_business_review_link. Prefer account_id."
            },
            "source_url": {
              "type": "string",
              "format": "uri",
              "description": "Public https URL of the photo or video (from upload_media / upload_media_from_url)."
            },
            "category": {
              "type": "string",
              "enum": [
                "COVER",
                "PROFILE",
                "LOGO",
                "EXTERIOR",
                "INTERIOR",
                "PRODUCT",
                "AT_WORK",
                "FOOD_AND_DRINK",
                "MENU",
                "COMMON_AREA",
                "ROOMS",
                "TEAMS",
                "ADDITIONAL"
              ],
              "description": "Which gallery category to add the media to."
            },
            "media_format": {
              "type": "string",
              "enum": [
                "PHOTO",
                "VIDEO"
              ],
              "description": "Defaults to PHOTO. Use VIDEO for videos (Google caps profile videos at 30s / 75MB)."
            },
            "confirm": {
              "type": "boolean",
              "description": "Must be true after explicit user confirmation."
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "Add Google Business Media",
          "readOnlyHint": false,
          "destructiveHint": false,
          "idempotentHint": false,
          "openWorldHint": true
        }
      },
      {
        "name": "delete_google_business_media",
        "description": "Remove a photo or video from a Google Business Profile gallery. Get media_name from list_google_business_media. This permanently deletes the item from the public profile. DESTRUCTIVE: show the exact media item and location to the user, then pass confirm=true only after explicit confirmation.",
        "inputSchema": {
          "type": "object",
          "required": [
            "media_name",
            "confirm"
          ],
          "properties": {
            "workspace_id": {
              "type": "string",
              "description": "Filter to a workspace ID from whoami."
            },
            "account_id": {
              "type": "integer",
              "description": "Google Business social account ID from list_accounts."
            },
            "location_id": {
              "type": "string",
              "description": "Google Business numeric location id (the location_id/platform_user_id from list_accounts, e.g. \"197940849675145390\"). NOT the ChIJ... Place ID returned by get_google_business_review_link. Prefer account_id."
            },
            "media_name": {
              "type": "string",
              "minLength": 1,
              "description": "Full media resource name from list_google_business_media (accounts/.../locations/.../media/...)."
            },
            "confirm": {
              "type": "boolean",
              "description": "Must be true after explicit user confirmation."
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "Delete Google Business Media",
          "readOnlyHint": false,
          "destructiveHint": true,
          "idempotentHint": true,
          "openWorldHint": true
        }
      },
      {
        "name": "list_conversations",
        "description": "List social inbox DM conversations for Instagram and Facebook Page inboxes. Filter by account, platform, unread/starred/archived, or search. Requires a Pro plan or higher plus posts:read. Threads has no DMs.",
        "inputSchema": {
          "type": "object",
          "properties": {
            "workspace_id": {
              "type": "string",
              "description": "Filter to a workspace ID from whoami."
            },
            "account_id": {
              "type": "integer",
              "description": "Social account ID from list_accounts."
            },
            "platform": {
              "type": "string",
              "enum": [
                "instagram",
                "facebook",
                "threads"
              ],
              "description": "instagram or facebook. Threads has no DMs."
            },
            "filter": {
              "type": "string",
              "enum": [
                "all",
                "unread",
                "starred",
                "archived"
              ],
              "description": "Conversation filter. Defaults to all (excludes archived)."
            },
            "search": {
              "type": "string",
              "description": "Search participant username or last message preview."
            },
            "limit": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "description": "Number of conversations to return. Default 50, max 100."
            },
            "offset": {
              "type": "integer",
              "minimum": 0,
              "description": "Skip this many conversations before returning results."
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "List Conversations",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false
        }
      },
      {
        "name": "get_conversation",
        "description": "Get one social inbox DM conversation and its messages. Instagram and Facebook Page DMs only. Requires a Pro plan or higher plus posts:read.",
        "inputSchema": {
          "type": "object",
          "required": [
            "conversation_id"
          ],
          "properties": {
            "conversation_id": {
              "type": "string",
              "minLength": 1,
              "description": "Conversation ID from list_conversations."
            },
            "workspace_id": {
              "type": "string",
              "description": "Filter to a workspace ID from whoami."
            },
            "limit": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "description": "Maximum messages to return. Default 50, max 100."
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "Get Conversation",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false
        }
      },
      {
        "name": "send_message",
        "description": "Send a DM reply in an Instagram or Facebook Page inbox conversation. WRITE: posts to the social network. Honor the 24-hour messaging window. Threads has no DMs. Requires a Pro plan or higher plus posts:write. Pass confirm=true only after explicit user confirmation.",
        "inputSchema": {
          "type": "object",
          "required": [
            "conversation_id",
            "content",
            "confirm"
          ],
          "properties": {
            "conversation_id": {
              "type": "string",
              "minLength": 1,
              "description": "Conversation ID from list_conversations."
            },
            "content": {
              "type": "string",
              "minLength": 1,
              "description": "Message text to send."
            },
            "workspace_id": {
              "type": "string",
              "description": "Workspace ID from whoami."
            },
            "confirm": {
              "type": "boolean",
              "description": "Must be true after explicit user confirmation."
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "Send Message",
          "readOnlyHint": false,
          "destructiveHint": false,
          "idempotentHint": false,
          "openWorldHint": true
        }
      },
      {
        "name": "list_comments",
        "description": "List social inbox comments and replies for Instagram, Facebook Pages, and Threads. Filter by account, platform, unread/flagged, or search. Requires a Pro plan or higher plus posts:read.",
        "inputSchema": {
          "type": "object",
          "properties": {
            "workspace_id": {
              "type": "string",
              "description": "Filter to a workspace ID from whoami."
            },
            "account_id": {
              "type": "integer",
              "description": "Social account ID from list_accounts."
            },
            "platform": {
              "type": "string",
              "enum": [
                "instagram",
                "facebook",
                "threads"
              ],
              "description": "instagram, facebook, or threads."
            },
            "filter": {
              "type": "string",
              "enum": [
                "all",
                "unread",
                "flagged"
              ],
              "description": "Comment filter. Defaults to all."
            },
            "search": {
              "type": "string",
              "description": "Search comment content or author username."
            },
            "limit": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "description": "Number of comments to return. Default 50, max 100."
            },
            "offset": {
              "type": "integer",
              "minimum": 0,
              "description": "Skip this many comments before returning results."
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "List Comments",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false
        }
      },
      {
        "name": "get_comment",
        "description": "Get one social inbox comment and its replies. Instagram, Facebook Page, and Threads comments. Requires a Pro plan or higher plus posts:read.",
        "inputSchema": {
          "type": "object",
          "required": [
            "comment_id"
          ],
          "properties": {
            "comment_id": {
              "type": "string",
              "minLength": 1,
              "description": "Comment ID from list_comments."
            },
            "workspace_id": {
              "type": "string",
              "description": "Filter to a workspace ID from whoami."
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "Get Comment",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false
        }
      },
      {
        "name": "reply_to_comment",
        "description": "Reply to an Instagram, Facebook Page, or Threads inbox comment. WRITE: posts to the social network. Facebook has no private comment replies. Threads has no DMs, so only public replies. Instagram supports public or private. Requires a Pro plan or higher plus posts:write. Pass confirm=true only after explicit user confirmation.",
        "inputSchema": {
          "type": "object",
          "required": [
            "comment_id",
            "content",
            "confirm"
          ],
          "properties": {
            "comment_id": {
              "type": "string",
              "minLength": 1,
              "description": "Comment ID from list_comments."
            },
            "content": {
              "type": "string",
              "minLength": 1,
              "description": "Reply text to post."
            },
            "type": {
              "type": "string",
              "enum": [
                "public",
                "private"
              ],
              "description": "public (default) or private. Private is Instagram only."
            },
            "workspace_id": {
              "type": "string",
              "description": "Workspace ID from whoami."
            },
            "confirm": {
              "type": "boolean",
              "description": "Must be true after explicit user confirmation."
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "Reply To Comment",
          "readOnlyHint": false,
          "destructiveHint": false,
          "idempotentHint": false,
          "openWorldHint": true
        }
      },
      {
        "name": "update_comment",
        "description": "Update an inbox comment: hide/unhide it on the platform, or mark it read/unread. Hide is reversible and does not delete the comment. Requires a Pro plan or higher plus posts:write.",
        "inputSchema": {
          "type": "object",
          "required": [
            "comment_id"
          ],
          "properties": {
            "comment_id": {
              "type": "string",
              "minLength": 1,
              "description": "Comment ID from list_comments."
            },
            "is_hidden": {
              "type": "boolean",
              "description": "Hide or unhide the comment on Instagram, Facebook, or Threads."
            },
            "is_read": {
              "type": "boolean",
              "description": "Mark the comment read or unread in posterly."
            },
            "workspace_id": {
              "type": "string",
              "description": "Workspace ID from whoami."
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "Update Comment",
          "readOnlyHint": false,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": true
        }
      },
      {
        "name": "delete_comment",
        "description": "Delete an Instagram or Facebook Page inbox comment. DESTRUCTIVE and IRREVERSIBLE. Threads replies cannot be deleted; hide them with update_comment instead. Requires a Pro plan or higher, posts:write, and admin workspace access. Fetch with get_comment first and pass confirm=true only after explicit user confirmation.",
        "inputSchema": {
          "type": "object",
          "required": [
            "comment_id",
            "confirm"
          ],
          "properties": {
            "comment_id": {
              "type": "string",
              "minLength": 1,
              "description": "Comment ID from list_comments or get_comment."
            },
            "workspace_id": {
              "type": "string",
              "description": "Workspace ID from whoami."
            },
            "confirm": {
              "type": "boolean",
              "description": "Must be true after the user explicitly confirms the comment deletion."
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "Delete Comment",
          "readOnlyHint": false,
          "destructiveHint": true,
          "idempotentHint": true,
          "openWorldHint": true
        }
      },
      {
        "name": "sync_inbox",
        "description": "Pull the latest Instagram, Facebook Page, or Threads inbox data for one connected account. Honors a 30-second cooldown. Threads syncs replies only (no DMs). Requires a Pro plan or higher plus posts:write.",
        "inputSchema": {
          "type": "object",
          "required": [
            "account_id"
          ],
          "properties": {
            "account_id": {
              "type": "integer",
              "description": "Social account ID from list_accounts."
            },
            "sync_type": {
              "type": "string",
              "enum": [
                "all",
                "dm",
                "comments"
              ],
              "description": "What to sync. Defaults to all. Threads is comments-only."
            },
            "workspace_id": {
              "type": "string",
              "description": "Workspace ID from whoami."
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "Sync Inbox",
          "readOnlyHint": false,
          "destructiveHint": false,
          "idempotentHint": false,
          "openWorldHint": true
        }
      },
      {
        "name": "list_activity",
        "description": "List recent activity and publish events for posts, including status changes, publish attempts, failures, and retries. Use this as the agent notifications feed.",
        "inputSchema": {
          "type": "object",
          "properties": {
            "workspace_id": {
              "type": "string"
            },
            "post_id": {
              "type": "integer"
            },
            "since": {
              "type": "string",
              "description": "ISO datetime. Return events created at or after this time."
            },
            "type": {
              "type": "string",
              "enum": [
                "all",
                "activity",
                "publish"
              ],
              "default": "all"
            },
            "limit": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 50
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "List Activity",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false
        }
      },
      {
        "name": "list_webhooks",
        "description": "List API webhook subscriptions, their event filters, active state, and most recent delivery status.",
        "inputSchema": {
          "type": "object",
          "properties": {
            "workspace_id": {
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "List Webhooks",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false
        }
      },
      {
        "name": "create_webhook",
        "description": "Create a webhook subscription for post/account/analytics events. WRITE WITH OUTBOUND SIDE EFFECTS: show the user the target URL, workspace, events, and active state, then get explicit confirmation before calling. The response includes the signing secret once.",
        "inputSchema": {
          "type": "object",
          "required": [
            "url",
            "confirm"
          ],
          "properties": {
            "url": {
              "type": "string",
              "format": "uri"
            },
            "events": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "webhook.test",
                  "post.created",
                  "post.updated",
                  "post.deleted",
                  "post.publishing",
                  "post.published",
                  "post.failed",
                  "account.disconnected",
                  "analytics.synced"
                ]
              }
            },
            "workspace_id": {
              "type": "string"
            },
            "description": {
              "type": "string",
              "maxLength": 240
            },
            "is_active": {
              "type": "boolean",
              "default": true
            },
            "confirm": {
              "type": "boolean",
              "description": "Must be true after the user explicitly confirms webhook creation."
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "Create Webhook",
          "readOnlyHint": false,
          "destructiveHint": false,
          "idempotentHint": false,
          "openWorldHint": true
        }
      },
      {
        "name": "update_webhook",
        "description": "Update a webhook URL, events, workspace, description, or active state. WRITE WITH OUTBOUND SIDE EFFECTS: list the current webhook first and get explicit confirmation before calling.",
        "inputSchema": {
          "type": "object",
          "required": [
            "webhook_id",
            "confirm"
          ],
          "properties": {
            "webhook_id": {
              "type": "string"
            },
            "url": {
              "type": "string",
              "format": "uri"
            },
            "events": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "webhook.test",
                  "post.created",
                  "post.updated",
                  "post.deleted",
                  "post.publishing",
                  "post.published",
                  "post.failed",
                  "account.disconnected",
                  "analytics.synced"
                ]
              }
            },
            "workspace_id": {
              "type": [
                "string",
                "null"
              ]
            },
            "description": {
              "type": [
                "string",
                "null"
              ],
              "maxLength": 240
            },
            "is_active": {
              "type": "boolean"
            },
            "confirm": {
              "type": "boolean",
              "description": "Must be true after the user explicitly confirms the webhook update."
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "Update Webhook",
          "readOnlyHint": false,
          "destructiveHint": true,
          "idempotentHint": true,
          "openWorldHint": true
        }
      },
      {
        "name": "delete_webhook",
        "description": "Delete a webhook subscription. DESTRUCTIVE: list the webhook first, show the user its URL/events/workspace, and get explicit confirmation before calling.",
        "inputSchema": {
          "type": "object",
          "required": [
            "webhook_id",
            "confirm"
          ],
          "properties": {
            "webhook_id": {
              "type": "string"
            },
            "confirm": {
              "type": "boolean",
              "description": "Must be true after the user explicitly confirms webhook deletion."
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "Delete Webhook",
          "readOnlyHint": false,
          "destructiveHint": true,
          "idempotentHint": true,
          "openWorldHint": true
        }
      },
      {
        "name": "test_webhook",
        "description": "Send a signed webhook.test delivery to a webhook URL. OUTBOUND SIDE EFFECT: get explicit confirmation before sending a test request.",
        "inputSchema": {
          "type": "object",
          "required": [
            "webhook_id",
            "confirm"
          ],
          "properties": {
            "webhook_id": {
              "type": "string"
            },
            "confirm": {
              "type": "boolean",
              "description": "Must be true after the user explicitly confirms the test delivery."
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "Test Webhook",
          "readOnlyHint": false,
          "destructiveHint": false,
          "idempotentHint": false,
          "openWorldHint": true
        }
      },
      {
        "name": "get_credits",
        "description": "Get the authenticated user's posterly AI credit balance: what is available to spend now, how much of the monthly included allowance is left, purchased pack balance, plan tier, and when the included pool next resets. Credits are a shared WORKSPACE wallet, so this reports the balance the caller can actually spend, not a personal figure. Read-only, spends nothing. Requires the billing:read scope.",
        "inputSchema": {
          "type": "object",
          "properties": {},
          "additionalProperties": false
        },
        "annotations": {
          "title": "Get Credits",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": true
        }
      },
      {
        "name": "get_subscription",
        "description": "Get the authenticated user's posterly subscription: status, tier, cancel-at-period-end, current period end, trial end, and pause state. Read-only. Requires the billing:read scope.",
        "inputSchema": {
          "type": "object",
          "properties": {},
          "additionalProperties": false
        },
        "annotations": {
          "title": "Get Subscription",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": true
        }
      },
      {
        "name": "cancel_subscription",
        "description": "Cancel the authenticated user's posterly subscription. DESTRUCTIVE billing action; requires the billing:write scope. ALWAYS ask the user why they are cancelling FIRST and pass their answer as `reason` (one of the allowed values). By default the subscription is set to cancel at the end of the current period; pass immediate=true only if the user explicitly wants it cancelled right now. Only call after the user explicitly confirms.",
        "inputSchema": {
          "type": "object",
          "required": [
            "confirm",
            "reason"
          ],
          "properties": {
            "reason": {
              "type": "string",
              "enum": [
                "too_expensive",
                "not_using",
                "missing_features",
                "technical_issues",
                "switching_service",
                "temporary_break",
                "other"
              ],
              "description": "Why the user is cancelling. Ask the user before calling; do not guess."
            },
            "feedback": {
              "type": "string",
              "maxLength": 2000,
              "description": "Optional free-text detail the user gave about why they are cancelling."
            },
            "immediate": {
              "type": "boolean",
              "description": "Cancel immediately instead of at period end. Defaults to false (cancel at period end)."
            },
            "confirm": {
              "type": "boolean",
              "const": true,
              "description": "Must be true after the user explicitly confirms the cancellation."
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "Cancel Subscription",
          "readOnlyHint": false,
          "destructiveHint": true,
          "idempotentHint": true,
          "openWorldHint": true
        }
      },
      {
        "name": "pause_subscription",
        "description": "Pause the authenticated user's posterly subscription for 30 days (one pause allowed per 90-day cooldown). Billing action; requires the billing:write scope. Only call after the user explicitly confirms.",
        "inputSchema": {
          "type": "object",
          "required": [
            "confirm"
          ],
          "properties": {
            "confirm": {
              "type": "boolean",
              "const": true,
              "description": "Must be true after the user explicitly confirms pausing the subscription."
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "Pause Subscription",
          "readOnlyHint": false,
          "destructiveHint": true,
          "idempotentHint": true,
          "openWorldHint": true
        }
      },
      {
        "name": "resume_subscription",
        "description": "Resume the authenticated user's paused posterly subscription, restoring active billing. Requires the billing:write scope.",
        "inputSchema": {
          "type": "object",
          "properties": {},
          "additionalProperties": false
        },
        "annotations": {
          "title": "Resume Subscription",
          "readOnlyHint": false,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": true
        }
      },
      {
        "name": "downgrade_subscription",
        "description": "Downgrade the authenticated user's posterly subscription one tier (or to an explicit lower `tier`) at the next renewal with no proration. Billing action; requires the billing:write scope. Only call after the user explicitly confirms.",
        "inputSchema": {
          "type": "object",
          "required": [
            "confirm"
          ],
          "properties": {
            "tier": {
              "type": "string",
              "enum": [
                "starter",
                "pro",
                "power_user",
                "agency"
              ],
              "description": "Optional explicit target tier. Omit to drop one tier automatically."
            },
            "confirm": {
              "type": "boolean",
              "const": true,
              "description": "Must be true after the user explicitly confirms the downgrade."
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "Downgrade Subscription",
          "readOnlyHint": false,
          "destructiveHint": true,
          "idempotentHint": true,
          "openWorldHint": true
        }
      },
      {
        "name": "get_updates",
        "description": "Get the latest posterly product updates and news from the updates feed: new features, improvements, and fixes. Requires an active posterly subscription.",
        "inputSchema": {
          "type": "object",
          "properties": {
            "limit": {
              "type": "integer",
              "minimum": 1,
              "maximum": 50,
              "default": 10,
              "description": "Number of updates to return. Default 10, max 50."
            },
            "since": {
              "type": "string",
              "description": "ISO date. Return updates published on or after this date."
            },
            "include_content": {
              "type": "boolean",
              "default": false,
              "description": "Include the full markdown body of each update. Defaults to false."
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "title": "Get Updates",
          "readOnlyHint": true,
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false
        }
      }
    ],
    "resources": false,
    "prompts": false,
    "sampling": false
  },
  "media_uploads": {
    "stdio": "Local stdio clients can use upload_media with file_path; larger files are uploaded through signed upload automatically.",
    "http": "Hosted HTTP MCP tool calls are JSON-only. upload_media accepts base64 for small files up to 5MB decoded. For larger media, use upload_media_from_url for public direct URLs or create_signed_upload from clients that can PUT raw bytes to upload_url."
  },
  "rate_limits": {
    "scope": "per_api_key",
    "posts_create_per_hour": 100,
    "media_write_per_hour": 120,
    "read_requests_per_hour": 300
  },
  "legal": {
    "terms": "https://www.poster.ly/terms",
    "privacy": "https://www.poster.ly/privacy",
    "fair_usage": "https://www.poster.ly/fair-usage"
  }
}