Botdoor API

Botdoor API as documented publicly: 22 operations. Contract generated from the documentation by API Evangelist (2026-11-03); not the provider's own document.

Operations 22

GET /accounts List connected social accounts #
GET /api/v1/accounts GET /api/v1/accounts #
POST /api/v1/claim-link POST /api/v1/claim-link #
GET /api/v1/connect/instagram GET /api/v1/connect/instagram #
POST /api/v1/media POST /api/v1/media #
GET /api/v1/posts List recent posts #
GET /api/v1/posts/5e7a… GET /api/v1/posts/5e7a… #
POST /claim-link Email a fresh claim link (unclaimed workspaces) #
GET /connect/{platform} Get a browser URL to connect an account #
POST /media Upload images and videos to Botdoor by multipart or base64 JSON. Size limits, types, previews and errors. #
GET /media/{id}/preview GET /media/{id}/preview returns a JPEG about 480 px wide (`404 preview_not_found` if there is none). #
GET /posts List recent posts #
POST /posts Create, schedule or dry-run a post #
DELETE /posts/{id} Delete a post that never went out #
GET /posts/{id} Get one post and its per-account status #
POST /posts/{id}/approve Approve a waiting post (people only) #
POST /posts/{id}/cancel Cancel before it goes out #
POST /posts/{id}/first-comment/retry Retry a failed first comment #
POST /posts/{id}/reject Reject a waiting post (key or person) #
POST /posts/{id}/reschedule Change the scheduled time #
POST /posts/{id}/retry Post actions #
POST /signup Create a Free workspace for your human (no auth) #

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/botdoor-co:botdoor-co-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

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.

OpenAPI Specification

botdoor-co-openapi-generated.yml Raw ↑
openapi: 3.1.0
info:
  title: Botdoor API
  version: '2026-11-03'
  description: 'GENERATED FROM DOCUMENTATION by API Evangelist on 2026-11-03: 22 operation(s) read from 8 public documentation page(s) (each operation
    names its page in x-source). This is not the provider''s published contract; Botdoor has published no machine-readable contract that the pipeline
    could find. Engine: local.'
  x-evidence-tiers:
    code-example: 5
    documentation: 17
    pages-with-code: 7
    pages-read: 8
  x-generated-from: documentation
  x-provenance: generated
  x-authored-by: API Evangelist
  x-generated: '2026-11-03'
  x-generator: generate-contract-from-docs.py
  x-engine: local
  x-sources:
  - https://docs.botdoor.co/api/media.md
  - https://docs.botdoor.co/api/overview
  - https://docs.botdoor.co/api/connect.md
  - https://docs.botdoor.co/api/accounts.md
  - https://docs.botdoor.co/api/overview.md
  - https://docs.botdoor.co/api/claim-link.md
  - https://docs.botdoor.co/api/posts-read.md
  - https://docs.botdoor.co/api/post-actions.md
servers:
- url: https://botdoor.co
paths:
  /accounts:
    get:
      operationId: get_accounts
      tags:
      - Accounts
      summary: List connected social accounts
      x-source: https://docs.botdoor.co/api/overview
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /api/v1/accounts:
    get:
      operationId: get_api_v1_accounts
      tags:
      - Api
      summary: GET /api/v1/accounts
      x-source: https://docs.botdoor.co/api/overview
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl https://botdoor.co/api/v1/accounts -H \" Authorization: Bearer $BOTDOOR_KEY \" \n Keys start with bd_ and are shown once.\
          \ Create them under API keys in the app, or get one from sign-up . A missing or wrong key returns 401 unauthorized with WWW-Authenticate:\
          \ Bearer . The same endpoints also accept a signed-in browser session, which is how the web app calls them. Approving and bulk approve\
          \ or reje"
  /api/v1/claim-link:
    post:
      operationId: post_api_v1_claim_link
      tags:
      - Api
      summary: POST /api/v1/claim-link
      x-source: https://docs.botdoor.co/api/claim-link.md
      responses:
        '201':
          description: Success (shape read from the example response on the page)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostApiV1ClaimLinkResponse'
      x-evidence:
        kind: code-example
        language: curl
        snippet: 'curl -X POST https://botdoor.co/api/v1/claim-link -H "Authorization: Bearer $BOTDOOR_KEY"

          ```'
  /api/v1/connect/instagram:
    get:
      operationId: get_api_v1_connect_instagram
      tags:
      - Api
      summary: GET /api/v1/connect/instagram
      x-source: https://docs.botdoor.co/api/connect.md
      responses:
        '200':
          description: Success (shape read from the example response on the page)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetApiV1ConnectInstagramResponse'
      x-evidence:
        kind: code-example
        language: curl
        snippet: 'curl "https://botdoor.co/api/v1/connect/instagram" -H "Authorization: Bearer $BOTDOOR_KEY"

          ```'
  /api/v1/media:
    post:
      operationId: post_api_v1_media
      tags:
      - Api
      summary: POST /api/v1/media
      x-source: https://docs.botdoor.co/api/media.md
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostApiV1MediaRequest'
      responses:
        '201':
          description: Success (shape read from the example response on the page)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostApiV1MediaResponse'
      x-evidence:
        kind: code-example
        language: curl
        snippet: 'curl -X POST https://botdoor.co/api/v1/media -H "Authorization: Bearer $BOTDOOR_KEY" -H "Content-Type: application/json"  -d
          ''{"filename": "launch.png", "contentType": "image/png", "dataBase64": "iVBORw0KGgo…"}''

          ```'
  /api/v1/posts:
    get:
      operationId: get_api_v1_posts
      tags:
      - Api
      summary: List recent posts
      x-source: https://docs.botdoor.co/api/overview
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /api/v1/posts/5e7a…:
    get:
      operationId: get_api_v1_posts_5e7a
      tags:
      - Api
      summary: GET /api/v1/posts/5e7a…
      x-source: https://docs.botdoor.co/api/posts-read.md
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: 'curl https://botdoor.co/api/v1/posts/5e7a… -H "Authorization: Bearer $BOTDOOR_KEY"

          ```'
  /claim-link:
    post:
      operationId: post_claim_link
      tags:
      - Claim Link
      summary: Email a fresh claim link (unclaimed workspaces)
      x-source: https://docs.botdoor.co/api/overview
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /connect/{platform}:
    get:
      operationId: get_connect_platform
      tags:
      - Connect
      summary: Get a browser URL to connect an account
      x-source: https://docs.botdoor.co/api/overview
      parameters:
      - name: platform
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /media:
    post:
      operationId: post_media
      tags:
      - Media
      summary: Upload images and videos to Botdoor by multipart or base64 JSON. Size limits, types, previews and errors.
      x-source: https://docs.botdoor.co/api/media.md
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostMediaRequest'
      responses:
        '201':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostMediaResponse'
      x-evidence:
        kind: documentation
  /media/{id}/preview:
    get:
      operationId: get_media_id_preview
      tags:
      - Media
      summary: GET /media/{id}/preview returns a JPEG about 480 px wide (`404 preview_not_found` if there is none).
      x-source: https://docs.botdoor.co/api/media.md
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetMediaIdPreviewResponse'
      x-evidence:
        kind: documentation
  /posts:
    get:
      operationId: get_posts
      tags:
      - Posts
      summary: List recent posts
      x-source: https://docs.botdoor.co/api/overview
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
    post:
      operationId: post_posts
      tags:
      - Posts
      summary: Create, schedule or dry-run a post
      x-source: https://docs.botdoor.co/api/overview
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /posts/{id}:
    delete:
      operationId: delete_posts_id
      tags:
      - Posts
      summary: Delete a post that never went out
      x-source: https://docs.botdoor.co/api/overview
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
    get:
      operationId: get_posts_id
      tags:
      - Posts
      summary: Get one post and its per-account status
      x-source: https://docs.botdoor.co/api/overview
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /posts/{id}/approve:
    post:
      operationId: post_posts_id_approve
      tags:
      - Posts
      summary: Approve a waiting post (people only)
      x-source: https://docs.botdoor.co/api/overview
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /posts/{id}/cancel:
    post:
      operationId: post_posts_id_cancel
      tags:
      - Posts
      summary: Cancel before it goes out
      x-source: https://docs.botdoor.co/api/overview
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /posts/{id}/first-comment/retry:
    post:
      operationId: post_posts_id_first_comment_retry
      tags:
      - Posts
      summary: Retry a failed first comment
      x-source: https://docs.botdoor.co/api/overview
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /posts/{id}/reject:
    post:
      operationId: post_posts_id_reject
      tags:
      - Posts
      summary: Reject a waiting post (key or person)
      x-source: https://docs.botdoor.co/api/overview
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /posts/{id}/reschedule:
    post:
      operationId: post_posts_id_reschedule
      tags:
      - Posts
      summary: Change the scheduled time
      x-source: https://docs.botdoor.co/api/overview
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /posts/{id}/retry:
    post:
      operationId: post_posts_id_retry
      tags:
      - Posts
      summary: Post actions
      description: Retries a failed post. Returns the post object.
      x-source: https://docs.botdoor.co/api/post-actions.md
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostPostsIdRetryResponse'
      x-evidence:
        kind: documentation
  /signup:
    post:
      operationId: post_signup
      tags:
      - Signup
      summary: Create a Free workspace for your human (no auth)
      x-source: https://docs.botdoor.co/api/overview
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
components:
  schemas:
    PostApiV1ClaimLinkResponse:
      type: object
      properties:
        claimSent:
          type: boolean
        claimExpiresAt:
          type: string
          format: date-time
        delivery:
          type: string
    GetApiV1ConnectInstagramResponse:
      type: object
      properties:
        platform:
          type: string
        url:
          type: string
        redirectUrl:
          type: string
        hint:
          type: string
    PostApiV1MediaRequest:
      type: object
      properties:
        filename:
          type: string
        contentType:
          type: string
        dataBase64:
          type: string
    PostApiV1MediaResponse:
      type: object
      properties:
        media:
          type: object
          properties:
            id:
              type: string
            type:
              type: string
            filename:
              type: string
            sizeBytes:
              type: integer
            width:
              type: integer
            height:
              type: integer
            durationMs:
              type: integer
            url:
              type: string
            previewUrl:
              type: string
    PostMediaRequest:
      type: object
      properties:
        file:
          type: string
          description: File to upload (multipart form).
        filename:
          type: string
          description: Name of the file when using JSON body.
        contentType:
          type: string
          description: MIME type of the file when using JSON body.
        dataBase64:
          type: string
          description: Base64‑encoded file content when using JSON body.
      required:
      - file
      - filename
      - contentType
      - dataBase64
    PostMediaResponse:
      type: object
      properties:
        media.id:
          type: string
          description: Identifier of the uploaded media.
        media.type:
          type: string
          description: Media type (e.g., video, image).
        media.filename:
          type: string
          description: Original filename.
        media.sizeBytes:
          type: integer
          description: Size in bytes.
        media.width:
          type: integer
          description: Width in pixels (if applicable).
        media.height:
          type: integer
          description: Height in pixels (if applicable).
        media.durationMs:
          type: integer
          description: Duration in milliseconds for video.
        media.url:
          type: string
          description: URL to access the media.
        media.previewUrl:
          type: string
          description: URL to fetch a preview image.
    GetMediaIdPreviewResponse:
      type: object
      properties:
        body:
          type: string
          description: JPEG preview image.
    PostPostsIdRetryResponse:
      type: object
      properties:
        post:
          type: object
  securitySchemes:
    bearer:
      type: http
      scheme: bearer
security:
- bearer: []
tags:
- name: Accounts
- name: Api
- name: Claim Link
- name: Connect
- name: Media
- name: Posts
- name: Signup