Buy Me a Coffee Extras API

Extras purchases (shop items and rewards). BETA.

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/buymeacoffee-extras-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

buymeacoffee-extras-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Buy Me a Coffee Extras API
  description: 'The Buy Me a Coffee API is a read-only REST interface that gives a creator programmatic access to their own account data on Buy Me a Coffee - a creator-support platform for tips, memberships, and shop purchases. Authentication uses a personal access Bearer token created self-serve in the Developer Dashboard (log in with a regular Buy Me a Coffee account, then Create New Token; a read-only option is available). Add `Authorization: Bearer <token>` to every request. The API returns paginated collections (Laravel-style pagination with current_page, per_page, next_page_url, total, etc.) and exposes one-time supporters, memberships/subscriptions, and Extras purchases.

    NOTE ON MODELING: Buy Me a Coffee does not publish a machine-readable OpenAPI document publicly (the reference sits behind the Developer Dashboard login). The collection endpoints and query parameters here (/subscriptions with status, /supporters, /extras, all paginated) are confirmed from the developer docs, community wrappers, and the Microsoft Power Platform connector. The single-resource by-ID paths (/subscriptions/{id}, /supporters/{id}, /extras/{id}) are honestly modeled from the documented "get by ID" operations; the exact URL templates are inferred, not quoted verbatim, and are marked with x-endpoint-modeled.'
  version: '1.0'
  contact:
    name: Buy Me a Coffee
    url: https://developers.buymeacoffee.com/
servers:
- url: https://developers.buymeacoffee.com/api/v1
  description: Buy Me a Coffee API v1
security:
- bearerAuth: []
tags:
- name: Extras
  description: Extras purchases (shop items and rewards). BETA.
paths:
  /extras:
    get:
      operationId: getExtras
      tags:
      - Extras
      summary: List Extras purchases (BETA)
      description: Returns all of your Extras purchases data as a paginated collection.
      parameters:
      - $ref: '#/components/parameters/Page'
      responses:
        '200':
          description: A paginated list of Extras purchases.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExtraPage'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/RateLimited'
  /extras/{id}:
    get:
      operationId: getExtra
      tags:
      - Extras
      summary: Get an Extras purchase by ID (BETA)
      description: Returns data about an extra purchase by its unique ID. The ID is the same as the Purchase ID returned in the list response.
      x-endpoint-modeled: The "get extra by ID" operation is documented, but the exact URL template is inferred from the collection endpoint and standard REST conventions.
      parameters:
      - name: id
        in: path
        required: true
        description: The unique identifier of the extra purchase (Purchase ID).
        schema:
          type: integer
      responses:
        '200':
          description: A single Extras purchase.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Extra'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/RateLimited'
components:
  schemas:
    Reward:
      type: object
      properties:
        reward_id:
          type: integer
        reward_title:
          type: string
        reward_description:
          type: string
        reward_confirmation_message:
          type: string
          nullable: true
        reward_question:
          type: string
          nullable: true
        reward_used:
          type: integer
        reward_created_on:
          type: string
        reward_updated_on:
          type: string
        reward_deleted_on:
          type: string
          nullable: true
        reward_is_active:
          type: integer
        reward_image:
          type: string
          nullable: true
        reward_slots:
          type: integer
          nullable: true
        reward_coffee_price:
          type: string
        reward_order:
          type: integer
    Pagination:
      type: object
      description: Laravel-style pagination envelope wrapping a data array.
      properties:
        current_page:
          type: integer
        first_page_url:
          type: string
        from:
          type: integer
        last_page:
          type: integer
        last_page_url:
          type: string
        next_page_url:
          type: string
          nullable: true
        path:
          type: string
        per_page:
          type: integer
        prev_page_url:
          type: string
          nullable: true
        to:
          type: integer
        total:
          type: integer
    Extra:
      type: object
      properties:
        purchase_id:
          type: integer
        purchased_on:
          type: string
        purchase_updated_on:
          type: string
        purchase_is_revoked:
          type: integer
        purchase_amount:
          type: string
        purchase_currency:
          type: string
        purchase_question:
          type: string
          nullable: true
        payer_email:
          type: string
          nullable: true
        payer_name:
          type: string
        extra:
          $ref: '#/components/schemas/Reward'
    ExtraPage:
      allOf:
      - $ref: '#/components/schemas/Pagination'
      - type: object
        properties:
          data:
            type: array
            items:
              $ref: '#/components/schemas/Extra'
  responses:
    NotFound:
      description: The requested resource was not found.
    Unauthorized:
      description: Missing or invalid Bearer token.
    RateLimited:
      description: Too many requests; the client is being throttled.
  parameters:
    Page:
      name: page
      in: query
      required: false
      description: Page number for the paginated collection.
      schema:
        type: integer
        minimum: 1
        default: 1
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: 'Personal access token created in the Buy Me a Coffee Developer Dashboard. Sent as `Authorization: Bearer <token>`.'