Blotato Posts API

Publish, schedule, and track posts.

OpenAPI Specification

blotato-posts-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Blotato Accounts Posts API
  description: The Blotato API lets you upload media, publish and schedule posts to social platforms (Twitter/X, Instagram, LinkedIn, Facebook, TikTok, Pinterest, Threads, Bluesky, YouTube), generate AI videos and visuals from templates, and retrieve connected accounts. All requests are authenticated with a blotato-api-key header.
  termsOfService: https://www.blotato.com/terms
  contact:
    name: Blotato Support
    url: https://help.blotato.com
  version: '2.0'
servers:
- url: https://backend.blotato.com/v2
  description: Blotato REST API v2
security:
- blotatoApiKey: []
tags:
- name: Posts
  description: Publish, schedule, and track posts.
paths:
  /posts:
    post:
      operationId: publishPost
      tags:
      - Posts
      summary: Publish a post
      description: Publishes or schedules a post to a connected social account. Returns a postSubmissionId; poll GET /posts/{postSubmissionId} to track status.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PublishPostRequest'
      responses:
        '201':
          description: Post submission accepted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublishPostResponse'
        '401':
          description: Missing or invalid API key.
        '422':
          description: Validation error.
        '429':
          description: Rate limit exceeded.
        '500':
          description: Server error.
  /posts/{postSubmissionId}:
    get:
      operationId: getPostStatus
      tags:
      - Posts
      summary: Get post status
      description: Returns the publishing status for a post submission.
      parameters:
      - name: postSubmissionId
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Post submission status.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostStatusResponse'
        '401':
          description: Missing or invalid API key.
        '404':
          description: Post submission not found.
components:
  schemas:
    PublishPostResponse:
      type: object
      properties:
        postSubmissionId:
          type: string
          description: Identifier used to poll publishing status.
    PostTarget:
      type: object
      required:
      - targetType
      description: Platform-specific target. The targetType selects the platform; some platforms require additional fields (for example linkedin/facebook pageId, pinterest boardId, youtube title/privacyStatus, tiktok privacy and content-disclosure flags).
      properties:
        targetType:
          type: string
          enum:
          - twitter
          - instagram
          - linkedin
          - facebook
          - tiktok
          - pinterest
          - threads
          - bluesky
          - youtube
          - webhook
        pageId:
          type: string
          description: Required for linkedin and facebook page targets.
        boardId:
          type: string
          description: Required for pinterest targets.
        mediaType:
          type: string
          description: Optional content variant, for example reel or story.
        title:
          type: string
          description: Title (youtube, pinterest).
        privacyStatus:
          type: string
          description: Required for youtube targets.
        privacyLevel:
          type: string
          description: Required for tiktok targets.
        url:
          type: string
          description: Required for webhook targets.
    Slot:
      type: object
      required:
      - id
      - time
      properties:
        id:
          type: string
        time:
          type: string
    PublishPostRequest:
      type: object
      required:
      - post
      properties:
        post:
          $ref: '#/components/schemas/Post'
        scheduledTime:
          type: string
          format: date-time
          description: ISO 8601 time at which to publish the post (optional).
        useNextFreeSlot:
          type: boolean
          description: Publish at the next free scheduling slot (optional).
        slot:
          $ref: '#/components/schemas/Slot'
    Post:
      type: object
      required:
      - accountId
      - content
      - target
      properties:
        accountId:
          type: string
          description: The connected account id, from GET /users/me/accounts.
        content:
          $ref: '#/components/schemas/PostContent'
        target:
          $ref: '#/components/schemas/PostTarget'
    PostStatusResponse:
      type: object
      properties:
        postSubmissionId:
          type: string
        status:
          type: string
          description: Current publishing status of the submission.
    PostContent:
      type: object
      required:
      - text
      - mediaUrls
      - platform
      properties:
        text:
          type: string
          description: The post text/caption.
        mediaUrls:
          type: array
          maxItems: 20
          items:
            type: string
          description: Hosted media URLs (for example from POST /media).
        platform:
          type: string
          description: The destination platform for this content.
          enum:
          - twitter
          - instagram
          - linkedin
          - facebook
          - tiktok
          - pinterest
          - threads
          - bluesky
          - youtube
          - other
        additionalPosts:
          type: array
          maxItems: 10
          description: Additional posts for threads/carousels.
          items:
            type: object
            required:
            - text
            - mediaUrls
            properties:
              text:
                type: string
              mediaUrls:
                type: array
                maxItems: 20
                items:
                  type: string
  securitySchemes:
    blotatoApiKey:
      type: apiKey
      in: header
      name: blotato-api-key
      description: API key generated in Blotato Settings > API. Sent in the blotato-api-key header on every request. Keys may include trailing '=' padding that must be preserved.