dopost Media API

Upload, list, and delete media assets used in posts.

Work with this as data

Every API 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 apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • 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 API
curl "https://apis.io/api/v1/apis/dopost-co-media-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

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

Get an API key

Free tier, no email required.

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

OpenAPI Specification

dopost-co-media-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: dopost Social Scheduler Media API
  version: v1
  summary: REST API for scheduling and publishing posts across Instagram, Facebook, TikTok, Pinterest, X, and YouTube.
  description: 'Hand-authored OpenAPI 3.1 specification for the dopost Social Media Scheduler API,

    derived from public documentation at https://dopost.co/docs/api as of 2026-05-27.


    Authentication uses an API key passed via the `x-api-key` header. API key generation

    happens inside the dopost web app.


    All endpoints are mounted under `/api/v1/` and return `application/json`.


    NOTE: Per-network publish options (Instagram, Facebook, TikTok, Pinterest, X, YouTube)

    are referenced in the dopost docs but the exact field-level schemas for each network

    are not enumerated in the public docs visible to anonymous users. They are modeled here

    as `additionalProperties: true` containers so spec consumers do not lose data, and the

    review notes (review.yml) flag these as `reconciled: false`.

    '
  contact:
    name: dopost
    url: https://dopost.co/
  license:
    name: Proprietary
    url: https://dopost.co/
servers:
- url: https://dopost.co
  description: Production
security:
- ApiKeyAuth: []
tags:
- name: Media
  description: Upload, list, and delete media assets used in posts.
paths:
  /api/v1/media:
    post:
      tags:
      - Media
      operationId: uploadMedia
      summary: Initiate a media upload
      description: 'First step of the dopost media upload workflow: request a presigned URL by

        declaring the file you intend to upload. The response includes a `mediaId`

        and an upload `url` to PUT the file bytes to. Documented as a three-step

        flow (request presigned URL, upload file, finalize).

        '
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - fileName
              - contentType
              - sizeInBytes
              properties:
                fileName:
                  type: string
                  description: Original file name.
                contentType:
                  type: string
                  description: MIME type of the file.
                sizeInBytes:
                  type: integer
                  format: int64
                  minimum: 1
                  description: File size in bytes.
            examples:
              image:
                value:
                  fileName: launch.jpg
                  contentType: image/jpeg
                  sizeInBytes: 204800
      responses:
        '200':
          description: Presigned upload created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MediaAsset'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '422':
          $ref: '#/components/responses/Unprocessable'
    get:
      tags:
      - Media
      operationId: listMedia
      summary: List media assets
      description: Retrieve media files from your workspace with cursor-based pagination.
      parameters:
      - name: cursor
        in: query
        required: false
        schema:
          type: string
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          minimum: 1
          maximum: 100
      responses:
        '200':
          description: Paginated media list
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MediaList'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /api/v1/media/{mediaId}:
    delete:
      tags:
      - Media
      operationId: deleteMedia
      summary: Delete a media asset
      parameters:
      - name: mediaId
        in: path
        required: true
        schema:
          type: string
      responses:
        '204':
          description: Media deleted
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  responses:
    NotFound:
      description: Resource not found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Unprocessable:
      description: Validation failed against platform constraints (character/media limits, schedule window, etc).
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Unauthorized:
      description: Missing or invalid API key.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  schemas:
    MediaList:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/MediaAsset'
        nextCursor:
          type:
          - string
          - 'null'
    MediaAsset:
      type: object
      properties:
        mediaId:
          type: string
        url:
          type: string
          format: uri
          description: Presigned URL to PUT the file bytes to (during initial upload) or the public/CDN URL once finalized.
        type:
          type: string
          description: Media type classification (e.g. image, video).
        fileName:
          type: string
        contentType:
          type: string
        sizeInBytes:
          type: integer
          format: int64
        createdAt:
          type: string
          format: date-time
    Error:
      type: object
      required:
      - message
      properties:
        code:
          type: string
        message:
          type: string
        details:
          type: object
          additionalProperties: true
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: Workspace API key issued from the dopost web app.