Buy Me a Coffee Extras API

Extras purchases (shop items and rewards). BETA.

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>`.'
Where this information came from

This is an independent, third-party profile of Buy Me a Coffee Extras API, published by API Evangelist. We do not operate, host, resell, or support these APIs, and we are not affiliated with or endorsed by the company unless stated above. Everything here is built from publicly available information — the company's own site, developer portal, documentation, public repositories, and the specifications it publishes for public use. Nothing is obtained by breaching a system, defeating an access control, or using credentials.

The Kin Score and Agent Readiness rating are independently calculated assessments of a company's public API artifacts, scored against a published rubric. They are not certifications, endorsements, security assessments, or audits.

Corrections, re-scores, and removal are free — no partnership or purchase required, and you do not need to justify the request. A removed company is recorded as unrated, never scored zero for having asked. Acknowledgement within one business day; removal within two.

info@apievangelist.com · Read the full data-sourcing policy →
On a security or compliance team? Put security in the subject line and you will get a person, not a form — we will tell you exactly which public URLs this profile was built from.