postlake-dev · Schema

PlatformCapabilities

What one platform supports: limits, media rules, and every platformOptions field with its valid values.

CompanySocial MediaAPIAI AgentsMCPSaaSAutomationPublishing

Properties

Name Type Description
platform object
displayName string
connectionAvailability object Public rollout status and connection eligibility for the authenticated account. Capability support and rollout availability are separate. Buying credits or a plan does not grant rollout access.
maxChars integer
charsByPostType object
title object
media object
postsPerDay integer
postsPerDayScope string account is that connected social user. app is the whole PostLake project (YouTube uploads).
asyncPublish boolean
options array
notes array
pendingReview object Capabilities that are built and tested but waiting on a platform permission. Keyed like the flags (reads.comments, messages). Absent or empty when nothing is waiting.
firstComment boolean A comment can be posted under the post in the same call.
deletePost boolean A published post can be retracted through the API.
thread boolean A chain of posts can be published as one.
replyToComment boolean
hideComments boolean A reply on your own post can be hidden and unhidden.
editProfile boolean
messages boolean Direct messages can be read and sent.
engages array Which actions POST /v1/engagements accepts on this network.
reads object Which of your own surfaces can be read.
discovers object Which parts of the public network can be searched, so an agent can look before it speaks.
variants array Where a network can be connected in more than one way, the ways it offers. What a connection can do depends on HOW it was made, not only on which network it is: an Instagram account connected through
View JSON Schema on GitHub

JSON Schema

postlake-dev-platform-capabilities-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/postlake-dev/json-schema/postlake-dev-platform-capabilities-schema.json",
  "title": "PlatformCapabilities",
  "description": "What one platform supports: limits, media rules, and every platformOptions field with its valid values.",
  "x-generated": "2026-10-31",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/postlake-dev-openapi.json#/components/schemas/PlatformCapabilities",
  "type": "object",
  "properties": {
    "platform": {
      "$ref": "#/$defs/Platform"
    },
    "displayName": {
      "type": "string"
    },
    "connectionAvailability": {
      "type": "object",
      "description": "Public rollout status and connection eligibility for the authenticated account. Capability support and rollout availability are separate. Buying credits or a plan does not grant rollout access.",
      "properties": {
        "status": {
          "type": "string",
          "enum": [
            "public",
            "limited"
          ]
        },
        "reason": {
          "type": [
            "string",
            "null"
          ],
          "enum": [
            "provider_app_review",
            "not_publicly_available",
            null
          ]
        },
        "accountCanConnect": {
          "type": "boolean"
        },
        "purchaseUnlocksAccess": {
          "type": "boolean",
          "const": false
        }
      },
      "required": [
        "status",
        "reason",
        "accountCanConnect",
        "purchaseUnlocksAccess"
      ]
    },
    "maxChars": {
      "type": "integer"
    },
    "charsByPostType": {
      "type": "object",
      "properties": {
        "video": {
          "type": "integer"
        },
        "image": {
          "type": "integer"
        }
      }
    },
    "title": {
      "type": "object",
      "properties": {
        "maxChars": {
          "type": "integer"
        },
        "appliesTo": {
          "type": "string"
        }
      }
    },
    "media": {
      "type": "object",
      "properties": {
        "required": {
          "type": "boolean"
        },
        "videoRequired": {
          "type": "boolean"
        },
        "maxImages": {
          "type": "integer"
        },
        "maxVideos": {
          "type": "integer"
        },
        "imageTypes": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "videoTypes": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "maxImageBytes": {
          "type": "integer"
        },
        "maxVideoBytes": {
          "type": "integer"
        },
        "maxVideoSeconds": {
          "type": "integer"
        }
      }
    },
    "postsPerDay": {
      "type": "integer"
    },
    "postsPerDayScope": {
      "type": "string",
      "enum": [
        "account",
        "app"
      ],
      "description": "account is that connected social user. app is the whole PostLake project (YouTube uploads)."
    },
    "asyncPublish": {
      "type": "boolean"
    },
    "options": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "type": {
            "type": "string",
            "enum": [
              "string",
              "boolean",
              "enum",
              "number"
            ]
          },
          "label": {
            "type": "string"
          },
          "values": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "default": {},
          "appliesTo": {
            "type": "string"
          },
          "maxLength": {
            "type": "integer"
          },
          "description": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "label"
        ]
      }
    },
    "notes": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "pendingReview": {
      "type": "object",
      "additionalProperties": {
        "type": "string"
      },
      "description": "Capabilities that are built and tested but waiting on a platform permission. Keyed like the flags (reads.comments, messages). Absent or empty when nothing is waiting."
    },
    "firstComment": {
      "type": "boolean",
      "description": "A comment can be posted under the post in the same call."
    },
    "deletePost": {
      "type": "boolean",
      "description": "A published post can be retracted through the API."
    },
    "thread": {
      "type": "boolean",
      "description": "A chain of posts can be published as one."
    },
    "replyToComment": {
      "type": "boolean"
    },
    "hideComments": {
      "type": "boolean",
      "description": "A reply on your own post can be hidden and unhidden."
    },
    "editProfile": {
      "type": "boolean"
    },
    "messages": {
      "type": "boolean",
      "description": "Direct messages can be read and sent."
    },
    "engages": {
      "type": "array",
      "description": "Which actions POST /v1/engagements accepts on this network.",
      "items": {
        "type": "string",
        "enum": [
          "like",
          "unlike",
          "repost",
          "unrepost",
          "follow",
          "unfollow",
          "block",
          "unblock",
          "mute",
          "unmute"
        ]
      }
    },
    "reads": {
      "type": "object",
      "description": "Which of your own surfaces can be read.",
      "properties": {
        "notifications": {
          "type": "boolean"
        },
        "comments": {
          "type": "boolean"
        },
        "followers": {
          "type": "boolean"
        },
        "following": {
          "type": "boolean"
        }
      }
    },
    "discovers": {
      "type": "object",
      "description": "Which parts of the public network can be searched, so an agent can look before it speaks.",
      "properties": {
        "posts": {
          "type": "boolean"
        },
        "profiles": {
          "type": "boolean"
        },
        "profilePosts": {
          "type": "boolean"
        },
        "places": {
          "type": "boolean"
        },
        "creators": {
          "type": "boolean",
          "description": "Find creators through the network's creator marketplace."
        }
      }
    },
    "variants": {
      "type": "array",
      "description": "Where a network can be connected in more than one way, the ways it offers. What a connection can do depends on HOW it was made, not only on which network it is: an Instagram account connected through Facebook can search, look people up and read insights, while the same account connected directly cannot. Absent when a network has only one way in.",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Pass as `variant` when creating a connect link."
          },
          "label": {
            "type": "string",
            "description": "What to call this choice to a person."
          },
          "requires": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "What the person must already have for this way to work."
          },
          "then": {
            "type": "string",
            "description": "What happens next when they choose it."
          },
          "summary": {
            "type": "string",
            "description": "What this way of connecting can do, in one line."
          },
          "available": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Features available through this connection, suitable for a user-facing comparison."
          },
          "unavailable": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Features unavailable through this connection."
          },
          "conditions": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Optional account setup the user can complete to enable specific features."
          },
          "only": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Capabilities this way unlocks that the others do not."
          },
          "note": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "label"
        ]
      }
    }
  },
  "required": [
    "platform",
    "displayName",
    "maxChars",
    "media",
    "options"
  ],
  "$defs": {
    "Platform": {
      "type": "string",
      "enum": [
        "bluesky",
        "threads",
        "x",
        "linkedin",
        "instagram",
        "tiktok",
        "facebook",
        "youtube",
        "pinterest"
      ]
    }
  }
}

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/postlake-dev-platform-capabilities"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.