Chirpie API

Chirpie REST API at https://chirpie.ai/api/v1 (chirpie_sk_ API keys) for creating, scheduling, editing and deleting posts and threads, uploading media, managing connected social accounts, comments and post analytics across X, Bluesky, LinkedIn, Threads, Mastodon, Instagram, Facebook and Telegram. No published OpenAPI was found (chirpie.ai/openapi.json, /api/v1/openapi.json and similar return 404; api-catalog lists only docs and health); contract generated from the documentation by API Evangelist (2026-11-03), 11 operations, not the provider's own document.

GitHub OpenAPI

Operations 11

POST /api/v1/accounts POST /api/v1/accounts #
PUT /api/v1/accounts/x/keys PUT /api/v1/accounts/x/keys #
GET /api/v1/analytics/posts/{postid} GET /api/v1/analytics/posts/{postId} #
POST /api/v1/keys POST /api/v1/keys #
POST /api/v1/media POST /api/v1/media #
GET /api/v1/posts GET /api/v1/posts #
POST /api/v1/posts POST /api/v1/posts #
PATCH /api/v1/posts/{draftid} PATCH /api/v1/posts/{draftId} #
GET /api/v1/posts/{postid}/comments GET /api/v1/posts/{postId}/comments #
POST /api/v1/posts/{postid}/comments/{commentid}/reply POST /api/v1/posts/{postId}/comments/{commentId}/reply #
POST /api/v1/threads POST /api/v1/threads #

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/chirpie-ai:chirpie-ai-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

chirpie-ai-openapi-generated.yml Raw ↑
openapi: 3.1.0
info:
  title: Chirpie API
  version: '2026-11-03'
  description: 'GENERATED FROM DOCUMENTATION by API Evangelist on 2026-11-03: 15 operation(s)
    read from 40 public documentation page(s) (each operation names its page in x-source).
    This is not the provider''s published contract; Chirpie has published no machine-readable
    contract that the pipeline could find. Engine: anthropic.'
  x-evidence-tiers:
    code-example: 16
    documentation: -1
    pages-with-code: 36
    pages-read: 40
  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: anthropic
  x-sources:
  - https://chirpie.ai/docs/api/media
  - https://chirpie.ai/docs/api/posts
  - https://chirpie.ai/docs/api/keys.md
  - https://chirpie.ai/docs/api/threads
  - https://chirpie.ai/docs/api/accounts
  - https://chirpie.ai/docs/api/comments
  - https://chirpie.ai/docs/api/media.md
  - https://chirpie.ai/docs/api/posts.md
  - https://chirpie.ai/docs/api/analytics
  - https://chirpie.ai/docs/api/threads.md
  - https://chirpie.ai/docs/api/accounts.md
  - https://chirpie.ai/docs/api/comments.md
  - https://chirpie.ai/docs/api/analytics.md
  - https://chirpie.ai/alternatives/twitter-api
  - https://chirpie.ai/docs/errors
  - https://chirpie.ai/docs/x-byo-keys
  - https://chirpie.ai/docs/platforms/x
  - https://chirpie.ai/docs/authentication
  - https://chirpie.ai/docs/platforms/x.md
  - https://chirpie.ai/docs/platforms/tiktok
  - https://chirpie.ai/docs/platforms/bluesky
  - https://chirpie.ai/docs/platforms/threads
  - https://chirpie.ai/docs/platforms/youtube
  - https://chirpie.ai/docs/platforms/linkedin
  - https://chirpie.ai/docs/platforms/mastodon
  - https://chirpie.ai/docs/platforms/telegram
  - https://chirpie.ai/docs/platforms/instagram
  - https://chirpie.ai/docs/platforms/pinterest
  - https://chirpie.ai/docs/platforms/tiktok.md
  - https://chirpie.ai/docs/platforms/bluesky.md
  - https://chirpie.ai/docs/platforms/threads.md
  - https://chirpie.ai/docs/platforms/youtube.md
  - https://chirpie.ai/docs/platforms/linkedin.md
  - https://chirpie.ai/docs/platforms/mastodon.md
  - https://chirpie.ai/docs/platforms/telegram.md
  - https://chirpie.ai/docs/platforms/instagram.md
  - https://chirpie.ai/docs/platforms/pinterest.md
  - https://chirpie.ai/docs/platforms/google-business-profile
  - https://chirpie.ai/docs/platforms/google-business-profile.md
  - https://chirpie.ai/docs/guides/build-a-telegram-announcement-bot-with-the-sdk
  x-repair-note: '2026-11-03: generator ran without a model (sandbox blocked engine
    credentials); removed third-party X API path /2/tweets and example-instance paths,
    and corrected servers from api.x.com to the base the provider documents. No operations
    added.'
servers:
- url: https://chirpie.ai
  description: Chirpie REST API; paths carry the /api/v1 prefix. Base https://chirpie.ai/api/v1
    stated in https://chirpie.ai/llms.txt and https://chirpie.ai/.well-known/api-catalog.
paths:
  /api/v1/accounts:
    post:
      operationId: post_api_v1_accounts
      tags:
      - Api
      summary: POST /api/v1/accounts
      x-source: https://chirpie.ai/docs/platforms/x
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostApiV1AccountsRequest'
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -X POST https://chirpie.ai/api/v1/accounts  -H \"Authorization:\
          \ Bearer chirpie_sk_YOUR_KEY\"  -H \"Content-Type: application/json\"  -d\
          \ '{ \"platform\": \"x\" }' \n From the terminal, chirpie accounts connect-x\
          \ . From an agent, ask it to \"connect my X account\" and it calls chirpie_connect_x\
          \ and hands you the link. Chirpie stores the tokens encrypted and refreshes\
          \ them before they expire. \n Post from c"
  /api/v1/accounts/x/keys:
    put:
      operationId: put_api_v1_accounts_x_keys
      tags:
      - Api
      summary: PUT /api/v1/accounts/x/keys
      x-source: https://chirpie.ai/docs/x-byo-keys
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PutApiV1AccountsXKeysRequest'
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -X PUT https://chirpie.ai/api/v1/accounts/x/keys  -H \"Authorization:\
          \ Bearer $CHIRPIE_API_KEY \"  -H \"Content-Type: application/json\"  -d\
          \ '{ \n \"client_id\": \"YOUR_CLIENT_ID\", \n \"client_secret\": \"YOUR_CLIENT_SECRET\"\
          , \n \"label\": \"Acme social app\" \n }' See the Accounts API reference\
          \ for the full endpoint set. \n 5. Reconnect your X account \n Adding keys\
          \ does not move accounts that are already connec"
  /api/v1/analytics/posts/{postid}:
    get:
      operationId: get_api_v1_analytics_posts_postid
      tags:
      - Api
      summary: GET /api/v1/analytics/posts/{postId}
      x-source: https://chirpie.ai/docs/api/analytics
      parameters:
      - name: postid
        in: path
        required: true
        schema:
          type: string
      - name: refresh
        in: query
        required: false
        schema:
          type: string
      responses:
        '200':
          description: Success (shape read from the example response on the page)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetApiV1AnalyticsPostsPostidResponse'
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl \"https://chirpie.ai/api/v1/analytics/posts/POST_ID?refresh=true\"\
          \  -H \"Authorization: Bearer chirpie_sk_YOUR_KEY\" \n A forced refresh\
          \ is allowed once per post every 5 minutes , on every platform. Past\nthat\
          \ floor the request returns 429 analytics_refresh_rate_limited , carrying\n\
          \ Retry-After in seconds: \n { \n \"error\" : { \n \"code\" : \"analytics_refresh_rate_limited\"\
          \ , \n \"message\" : \"This post's met"
  /api/v1/keys:
    post:
      operationId: post_api_v1_keys
      tags:
      - Api
      summary: POST /api/v1/keys
      x-source: https://chirpie.ai/docs/authentication
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostApiV1KeysRequest'
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -X POST https://chirpie.ai/api/v1/keys  -H \"Authorization:\
          \ Bearer chirpie_sk_YOUR_KEY\"  -H \"Content-Type: application/json\"  -d\
          \ '{ \"name\": \"My New Key\" }' \n Key Management \n Action Endpoint Create\
          \ POST /api/v1/keys List GET /api/v1/keys Revoke DELETE /api/v1/keys?id=KEY_ID\
          \ \n You can have up to 25 active API keys per account, and each key expires\
          \ 90 days after it is created. Revoked keys stop "
  /api/v1/media:
    post:
      operationId: post_api_v1_media
      tags:
      - Api
      summary: POST /api/v1/media
      x-source: https://chirpie.ai/docs/api/media
      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://chirpie.ai/api/v1/media  -H \"Authorization:\
          \ Bearer chirpie_sk_YOUR_KEY\"  -F \"file=@./screenshot.png\" \n Response\
          \ 201 Created \n { \n \"data\" : { \n \"id\" : \"7c3f1a2b-4d5e-6f70-8192-a3b4c5d6e7f8\"\
          \ , \n \"url\" : \"https://blob.chirpie.ai/media/.../7c3f1a2b.png\" , \n\
          \ \"mime_type\" : \"image/png\" , \n \"media_type\" : \"image\" , \n \"\
          bytes\" : 184320 , \n \"width\" : 1200 , \n \"height\" : 630 , \n \"filename"
  /api/v1/posts:
    get:
      operationId: get_api_v1_posts
      tags:
      - Api
      summary: GET /api/v1/posts
      x-source: https://chirpie.ai/docs/api/posts
      parameters:
      - name: status
        in: query
        required: false
        schema:
          type: string
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl \"https://chirpie.ai/api/v1/posts?status=draft\"  -H \"Authorization:\
          \ Bearer chirpie_sk_YOUR_KEY\" \n Ask for them by name. A listing with neither\
          \ status nor group_id is the\nrecord of what has been sent, queued or tried,\
          \ so drafts are left out of it.\n ?status=draft is how you read them back,\
          \ and ?group_id=… returns everything\none request created, drafts included.\
          \ \n Drafts never enter the scheduler"
    post:
      operationId: post_api_v1_posts
      tags:
      - Api
      summary: POST /api/v1/posts
      x-source: https://chirpie.ai/docs/api/media
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostApiV1PostsRequest'
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -X POST https://chirpie.ai/api/v1/posts  -H \"Authorization:\
          \ Bearer chirpie_sk_YOUR_KEY\"  -H \"Content-Type: application/json\"  -d\
          \ '{ \n \"account_id\": \"550e8400-e29b-41d4-a716-446655440000\", \n \"\
          text\": \"Shipping new features today!\", \n \"media\": [ \n { \"id\": \"\
          7c3f1a2b-4d5e-6f70-8192-a3b4c5d6e7f8\", \"alt\": \"The new dashboard\" }\
          \ \n ] \n }' \n Error Responses \n Status Code Condition 400 bad_request\
          \ Two me"
  /api/v1/posts/{draftid}:
    patch:
      operationId: patch_api_v1_posts_draftid
      tags:
      - Api
      summary: PATCH /api/v1/posts/{draftId}
      x-source: https://chirpie.ai/docs/api/posts
      parameters:
      - name: draftid
        in: path
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchApiV1PostsDraftidRequest'
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: 'curl -X PATCH https://chirpie.ai/api/v1/posts/DRAFT_ID  -H "Authorization:
          Bearer chirpie_sk_YOUR_KEY"  -H "Content-Type: application/json"  -d ''{"schedule_at":
          "2027-04-01T14:00:00Z"}'' '
  /api/v1/posts/{postid}/comments:
    get:
      operationId: get_api_v1_posts_postid_comments
      tags:
      - Api
      summary: GET /api/v1/posts/{postId}/comments
      x-source: https://chirpie.ai/docs/api/comments
      parameters:
      - name: postid
        in: path
        required: true
        schema:
          type: string
      - name: limit
        in: query
        required: false
        schema:
          type: string
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: 'curl "https://chirpie.ai/api/v1/posts/POST_ID/comments?limit=50"  -H
          "Authorization: Bearer chirpie_sk_YOUR_KEY" '
  /api/v1/posts/{postid}/comments/{commentid}/reply:
    post:
      operationId: post_api_v1_posts_postid_comments_commentid_reply
      tags:
      - Api
      summary: POST /api/v1/posts/{postId}/comments/{commentId}/reply
      x-source: https://chirpie.ai/docs/api/comments
      parameters:
      - name: postid
        in: path
        required: true
        schema:
          type: string
      - name: commentid
        in: path
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostApiV1PostsPostidCommentsCommentidReplyRequest'
      responses:
        '201':
          description: Success (shape read from the example response on the page)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostApiV1PostsPostidCommentsCommentidReplyResponse'
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -X POST https://chirpie.ai/api/v1/posts/POST_ID/comments/COMMENT_ID/reply\
          \  -H \"Authorization: Bearer chirpie_sk_YOUR_KEY\"  -H \"Content-Type:\
          \ application/json\"  -d '{ \"text\": \"Yes, pass schedule_at and we will\
          \ queue it.\" }' \n Response 201 Created \n The reply, in the same shape\
          \ as a listed comment, with own: true . The comment it answers\ncomes back\
          \ from the next listing with replied: true . \n A"
  /api/v1/threads:
    post:
      operationId: post_api_v1_threads
      tags:
      - Api
      summary: POST /api/v1/threads
      x-source: https://chirpie.ai/docs/api/threads
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostApiV1ThreadsRequest'
      responses:
        '201':
          description: Success (shape read from the example response on the page)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostApiV1ThreadsResponse'
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -X POST https://chirpie.ai/api/v1/threads  -H \"Authorization:\
          \ Bearer chirpie_sk_YOUR_KEY\"  -H \"Content-Type: application/json\"  -d\
          \ '{ \n \"account_id\": \"550e8400-e29b-41d4-a716-446655440000\", \n \"\
          posts\": [ \n { \"text\": \"We rebuilt scheduling this week.\" }, \n { \"\
          text\": \"Queued posts now publish within five minutes of their time.\"\
          \ } \n ], \n \"first_comment\": \"Full write-up: https://example.com/blog/s"
components:
  schemas:
    Post2TweetsRequest:
      type: object
      properties:
        text:
          type: string
    PostApiV1AccountsRequest:
      type: object
      properties:
        platform:
          type: string
    PutApiV1AccountsXKeysRequest:
      type: object
      properties:
        client_id:
          type: string
        client_secret:
          type: string
        label:
          type: string
    GetApiV1AnalyticsPostsPostidResponse:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
            message:
              type: string
    PostApiV1KeysRequest:
      type: object
      properties:
        name:
          type: string
    PostApiV1MediaResponse:
      type: object
      properties:
        data:
          type: object
          properties:
            id:
              type: string
            url:
              type: string
            mime_type:
              type: string
            media_type:
              type: string
            bytes:
              type: integer
            width:
              type: integer
            height:
              type: integer
            filename:
              type: string
            created_at:
              type: string
              format: date-time
            expires_at:
              type: string
              format: date-time
    PostApiV1PostsRequest:
      type: object
      properties:
        account_id:
          type: string
        text:
          type: string
        media:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
              alt:
                type: string
    PostApiV1PostsA1B2C3D4FirstCommentResponse:
      type: object
      properties:
        data:
          type: object
          properties:
            id:
              type: string
            platform:
              type: string
            status:
              type: string
            first_comment:
              type: object
              properties:
                text:
                  type: string
                status:
                  type: string
                comment_id:
                  type: string
                error:
                  type:
                  - string
                  - 'null'
    PostApiV1PostsA1B2C3D4HideResponse:
      type: object
      properties:
        data:
          type: object
          properties:
            id:
              type: string
            hidden:
              type: boolean
            hidden_ids:
              type: array
              items:
                type: string
    PatchApiV1PostsDraftidRequest:
      type: object
      properties:
        schedule_at:
          type: string
          format: date-time
    PostApiV1PostsPostidCommentsCommentidReplyRequest:
      type: object
      properties:
        text:
          type: string
    PostApiV1PostsPostidCommentsCommentidReplyResponse:
      type: object
      properties:
        data:
          type: object
          properties:
            id:
              type: string
            deleted:
              type: boolean
    PostApiV1ThreadsRequest:
      type: object
      properties:
        account_id:
          type: string
        posts:
          type: array
          items:
            type: object
            properties:
              text:
                type: string
        first_comment:
          type: string
    PostApiV1ThreadsResponse:
      type: object
      properties:
        data:
          type: object
          properties:
            id:
              type: string
            platform:
              type: string
            account_id:
              type: string
            posts:
              type: array
              items:
                type: object
                properties:
                  id:
                    type: string
                  text:
                    type: string
                  platform_post_id:
                    type: string
                  platform_post_url:
                    type: string
                  status:
                    type: string
                  thread_order:
                    type: integer
                  created_at:
                    type: string
                    format: date-time
            status:
              type: string
            scheduled_at:
              type:
              - string
              - 'null'
            group_id:
              type:
              - string
              - 'null'
            created_at:
              type: string
              format: date-time
  securitySchemes:
    bearer:
      type: http
      scheme: bearer
security:
- bearer: []
tags:
- name: '2'
- name: Api