LogBrew Billing API

Plans, checkout, and the billing portal.

Operations 4

GET /api/billing/catalog List the plans and their prices #
POST /api/billing/checkout Start checkout for a plan. A person opens the returned link to pay #
GET /api/billing/overview Read your plan, billing status, and usage per signal #
POST /api/billing/portal Get a billing portal link where a person manages payment and invoices #

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/logbrew:logbrew-billing-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 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

logbrew-billing-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  contact:
    email: support@logbrew.co
    name: LogBrew support
    url: https://logbrew.co
  description: 'Send `Authorization: Bearer ` with an account access token or a project key. `logbrew login` signs in and stores an access token; `logbrew projects keys create` makes project keys. A read key reads one project''s telemetry and nothing else. Without the CLI, get an access token with device sign-in (RFC 8628): `POST /api/auth/device` with a form-encoded `client_id`, show the person the `user_code` and `verification_uri`, then poll `POST /api/auth/device/token` until they approve.


    Every error has the same JSON shape: a stable `code`, a readable `error`, and a `next` step that says how to recover. A `429` response carries `Retry-After`.


    Some operations have several response versions. This document describes the newest one, so send the `response_version` it requires. List operations return pages with `pagination=cursor`. Older versions keep their exact shape for clients that already use them.


    To test an integration without touching production data, create a separate project for it: each project has its own keys and data, and the free plan covers it. `load_sample_data` fills a new project with a connected example issue, logs, and trace that never count toward usage, `remove_sample_data` removes exactly those rows, and `send_test_event` checks a key end to end.'
  summary: Read and manage LogBrew projects, issues, logs, traces, actions, metrics, releases, and product analytics.
  title: LogBrew Billing API
  version: '1'
servers:
- description: LogBrew API
  url: https://api.logbrew.co
tags:
- description: Plans, checkout, and the billing portal.
  name: Billing
paths:
  /api/billing/catalog:
    get:
      description: List the plans and their prices. Needs no bearer credential.
      operationId: get_billing_catalog
      parameters: []
      responses:
        '200':
          content:
            application/json:
              example:
                checkout_available: false
                currency: string
                interval: month
                plans:
                - activation: included
                  limits:
                    issue_events: 1
                    log_bytes: 1
                    metric_bytes: 1
                    retention_days: 1
                    trace_spans: 1
                    unlimited_projects: false
                  monthly_price_cents: 1
                  quote_email: string
                  tier: developer
                response_version: 1
              schema:
                $ref: '#/components/schemas/BillingCatalogResponse'
          description: Success.
        '429':
          $ref: '#/components/responses/RateLimited'
        default:
          $ref: '#/components/responses/Error'
      security: []
      summary: List the plans and their prices
      tags:
      - Billing
  /api/billing/checkout:
    post:
      description: Start checkout for a plan. A person opens the returned link to pay. Needs an account access token.
      operationId: create_checkout
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BillingCheckoutRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              example:
                url: string
              schema:
                $ref: '#/components/schemas/BillingSessionResponse'
          description: Success.
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/RateLimited'
        default:
          $ref: '#/components/responses/Error'
      security:
      - accessToken: []
      summary: Start checkout for a plan. A person opens the returned link to pay
      tags:
      - Billing
  /api/billing/overview:
    get:
      description: Read your plan, billing status, and usage per signal. Needs an account access token.
      operationId: get_billing_overview
      parameters: []
      responses:
        '200':
          content:
            application/json:
              example:
                checkout_available: false
                management_available: false
                meters:
                - included: 1
                  kind: issue_events
                  state: ok
                  unit: events
                  used: 1
                offer:
                  ends_at: '2026-10-27T12:00:00Z'
                  kind: public_beta
                  starts_at: '2026-10-27T12:00:00Z'
                  tier: developer
                period_end: '2026-10-27T12:00:00Z'
                period_start: '2026-10-27T12:00:00Z'
                pro_trial_available: false
                response_version: 1
                state: free
                tier: developer
                warning_threshold_basis_points: 1
              schema:
                $ref: '#/components/schemas/BillingOverviewResponse'
          description: Success.
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/RateLimited'
        default:
          $ref: '#/components/responses/Error'
      security:
      - accessToken: []
      summary: Read your plan, billing status, and usage per signal
      tags:
      - Billing
  /api/billing/portal:
    post:
      description: Get a billing portal link where a person manages payment and invoices. Needs an account access token.
      operationId: open_billing_portal
      parameters: []
      responses:
        '200':
          content:
            application/json:
              example:
                url: string
              schema:
                $ref: '#/components/schemas/BillingSessionResponse'
          description: Success.
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/RateLimited'
        default:
          $ref: '#/components/responses/Error'
      security:
      - accessToken: []
      summary: Get a billing portal link where a person manages payment and invoices
      tags:
      - Billing
components:
  schemas:
    BillingPlanLimitsResponse:
      description: Fixed included usage for one plan.
      properties:
        issue_events:
          description: Included issue/error events per billing period.
          format: uint64
          minimum: 0
          type:
          - integer
          - 'null'
        log_bytes:
          description: Included normalized log bytes per billing period.
          format: uint64
          minimum: 0
          type:
          - integer
          - 'null'
        metric_bytes:
          description: Included normalized application-metric bytes per billing period.
          format: uint64
          minimum: 0
          type:
          - integer
          - 'null'
        retention_days:
          description: Retention in days.
          format: uint16
          maximum: 65535
          minimum: 0
          type:
          - integer
          - 'null'
        trace_spans:
          description: Included trace spans per billing period.
          format: uint64
          minimum: 0
          type:
          - integer
          - 'null'
        unlimited_projects:
          description: Projects are unlimited for this plan.
          type: boolean
      required:
      - issue_events
      - log_bytes
      - metric_bytes
      - trace_spans
      - retention_days
      - unlimited_projects
      type: object
    BillingOfferKind:
      description: Offer kinds.
      oneOf:
      - const: public_beta
        description: 'The new-account offer: Pro (`team`) allowances for 6 months from sign-up (from

          2026-10-22 for accounts that existed at launch). Sign-up no longer grants it; accounts

          that hold it keep it until it ends, and new accounts try Pro through the checkout trial.'
        type: string
    BillingSubscriptionState:
      description: Canonical subscription lifecycle state.
      oneOf:
      - const: free
        description: Developer plan.
        type: string
      - const: active
        description: Paid access is active.
        type: string
      - const: past_due
        description: Payment needs attention.
        type: string
      - const: paused
        description: Paid access is paused.
        type: string
      - const: canceled
        description: Subscription ended.
        type: string
    BillingActivation:
      description: How a plan is activated.
      oneOf:
      - const: included
        description: Active without checkout.
        type: string
      - const: checkout
        description: Fixed-price Stripe checkout.
        type: string
      - const: quote
        description: Email quote.
        type: string
    BillingCheckoutRequest:
      additionalProperties: false
      description: Fixed-price checkout request.
      properties:
        locale:
          $ref: '#/components/schemas/BillingLocale'
          description: User-visible locale preserved through return navigation.
        request_id:
          description: Caller-owned retry identity.
          format: uuid
          type: string
        tier:
          $ref: '#/components/schemas/BillingTier'
          description: Only `team` (Pro) or `business` is accepted.
      required:
      - tier
      - locale
      - request_id
      type: object
    BillingSessionResponse:
      description: Hosted provider-session response.
      properties:
        url:
          description: Short-lived HTTPS destination owned by Stripe.
          type: string
      required:
      - url
      type: object
    BillingOfferResponse:
      description: Plan allowances granted for a fixed time, apart from a paid subscription.
      properties:
        ends_at:
          description: Exclusive end; the account falls back to its own plan afterwards.
          format: date-time
          type: string
        kind:
          $ref: '#/components/schemas/BillingOfferKind'
          description: Why the allowances apply.
        starts_at:
          description: Inclusive start.
          format: date-time
          type: string
        tier:
          $ref: '#/components/schemas/BillingTier'
          description: Plan whose allowances apply while the offer lasts.
      required:
      - kind
      - tier
      - starts_at
      - ends_at
      type: object
    BillingPlanResponse:
      description: One fixed plan.
      properties:
        activation:
          $ref: '#/components/schemas/BillingActivation'
          description: How this plan is activated.
        limits:
          $ref: '#/components/schemas/BillingPlanLimitsResponse'
          description: Fixed included usage.
        monthly_price_cents:
          description: Monthly price in USD cents; absent for quoted Enterprise contracts.
          format: uint32
          minimum: 0
          type:
          - integer
          - 'null'
        quote_email:
          description: Quote mailbox for Enterprise; absent for self-serve plans.
          type:
          - string
          - 'null'
        tier:
          $ref: '#/components/schemas/BillingTier'
          description: Stable plan identifier.
      required:
      - tier
      - monthly_price_cents
      - activation
      - quote_email
      - limits
      type: object
    BillingMeterState:
      description: Derived meter state.
      oneOf:
      - const: ok
        description: Below 80%.
        type: string
      - const: warning
        description: At or above 80% but below the hard limit.
        type: string
      - const: blocked
        description: At or above the hard limit.
        type: string
      - const: quoted
        description: Defined by a quoted Enterprise contract outside this fixed catalog.
        type: string
    BillingMeterUnit:
      description: Meter units.
      oneOf:
      - const: events
        description: Event count.
        type: string
      - const: bytes
        description: Byte count.
        type: string
      - const: spans
        description: Span count.
        type: string
    BillingInterval:
      description: Fixed billing interval.
      oneOf:
      - const: month
        description: Calendar or provider-owned monthly period.
        type: string
    BillingOverviewResponse:
      description: Authenticated billing and per-signal usage overview.
      properties:
        checkout_available:
          description: Whether fixed-price checkout is connected.
          type: boolean
        management_available:
          description: Whether a provider management session can be created.
          type: boolean
        meters:
          description: Complete fixed-order metering receipt.
          items:
            $ref: '#/components/schemas/BillingMeterResponse'
          type: array
        offer:
          anyOf:
          - $ref: '#/components/schemas/BillingOfferResponse'
          - type: 'null'
          default: null
          description: Active offer whose plan allowances the meters include; absent when none applies.
        period_end:
          description: Exclusive usage-period end and reset time.
          format: date-time
          type: string
        period_start:
          description: Inclusive usage-period start.
          format: date-time
          type: string
        pro_trial_available:
          default: false
          description: 'Whether a Pro checkout now starts the 1-month free trial: checkout is connected and the

            account never had a subscription.'
          type: boolean
        response_version:
          description: Contract version.
          format: uint8
          maximum: 255
          minimum: 0
          type: integer
        state:
          $ref: '#/components/schemas/BillingSubscriptionState'
          description: Current subscription lifecycle state.
        tier:
          $ref: '#/components/schemas/BillingTier'
          description: Current canonical plan.
        warning_threshold_basis_points:
          description: Warning threshold in basis points.
          format: uint16
          maximum: 65535
          minimum: 0
          type: integer
      required:
      - response_version
      - tier
      - state
      - period_start
      - period_end
      - checkout_available
      - management_available
      - pro_trial_available
      - warning_threshold_basis_points
      - meters
      - offer
      type: object
    BillingTier:
      description: Canonical subscription tier.
      oneOf:
      - const: developer
        description: Free individual plan.
        type: string
      - const: team
        description: Fixed $25 monthly plan.
        type: string
      - const: business
        description: Fixed $80 monthly plan.
        type: string
      - const: enterprise
        description: Quoted contract.
        type: string
    BillingMeterKind:
      description: Fixed metered resources.
      oneOf:
      - const: issue_events
        description: Issue/error event count.
        type: string
      - const: log_bytes
        description: Normalized log bytes.
        type: string
      - const: metric_bytes
        description: Normalized application-metric bytes.
        type: string
      - const: trace_spans
        description: Trace span count.
        type: string
    BillingLocale:
      description: Supported Website locale.
      oneOf:
      - const: en
        description: English.
        type: string
      - const: tr
        description: Turkish.
        type: string
      - const: de
        description: German.
        type: string
      - const: es
        description: Spanish.
        type: string
      - const: ja
        description: Japanese.
        type: string
    BillingMeterResponse:
      description: One per-signal usage meter.
      properties:
        included:
          description: Included units; absent only for a quoted Enterprise contract.
          format: uint64
          minimum: 0
          type:
          - integer
          - 'null'
        kind:
          $ref: '#/components/schemas/BillingMeterKind'
          description: Meter identity.
        state:
          $ref: '#/components/schemas/BillingMeterState'
          description: Derived utilization state.
        unit:
          $ref: '#/components/schemas/BillingMeterUnit'
          description: Meter unit.
        used:
          description: Used units in the current period.
          format: uint64
          minimum: 0
          type: integer
      required:
      - kind
      - unit
      - used
      - included
      - state
      type: object
    BillingCatalogResponse:
      description: Public fixed-plan catalog.
      properties:
        checkout_available:
          description: Whether self-serve checkout is available.
          type: boolean
        currency:
          description: ISO currency used by every self-serve price.
          type: string
        interval:
          $ref: '#/components/schemas/BillingInterval'
          description: Fixed billing interval used by every self-serve price.
        plans:
          description: Ordered Developer, Team, Business, and Enterprise plans.
          items:
            $ref: '#/components/schemas/BillingPlanResponse'
          type: array
        response_version:
          description: Contract version.
          format: uint8
          maximum: 255
          minimum: 0
          type: integer
      required:
      - response_version
      - currency
      - interval
      - checkout_available
      - plans
      type: object
  responses:
    Error:
      content:
        application/json:
          schema:
            properties:
              code:
                description: Stable reason, such as `unauthorized`, `forbidden`, `not_found`, `validation_failed`, `rate_limited`, or `usage_limit_exceeded`.
                type: string
              deleted_at:
                description: When the account was deleted, on `account_recovery_available`.
                type: string
              error:
                description: What went wrong, in words.
                type: string
              limit:
                description: The limit that was reached.
                type: string
              next:
                description: How to recover.
                type: string
              next_action:
                description: The recovery as stable codes.
                properties:
                  code:
                    description: Stable recovery action, such as `sign_in` or `retry_later`.
                    type: string
                  target:
                    description: Where the recovery happens, such as `auth` or `billing`.
                    type: string
                required:
                - code
                - target
                type: object
              recovery_token:
                description: Token for restore_account, on `account_recovery_available`.
                type: string
              reset_at:
                description: When the limit resets, as an RFC 3339 time.
                type: string
              retry_after_seconds:
                description: Seconds to wait, on `rate_limited`.
                minimum: 0
                type: integer
            required:
            - error
            - code
            - next
            - next_action
            type: object
      description: The request failed. `code` names the reason and `next` says how to recover.
    RateLimited:
      content:
        application/json:
          schema:
            properties:
              code:
                description: Stable reason, such as `unauthorized`, `forbidden`, `not_found`, `validation_failed`, `rate_limited`, or `usage_limit_exceeded`.
                type: string
              deleted_at:
                description: When the account was deleted, on `account_recovery_available`.
                type: string
              error:
                description: What went wrong, in words.
                type: string
              limit:
                description: The limit that was reached.
                type: string
              next:
                description: How to recover.
                type: string
              next_action:
                description: The recovery as stable codes.
                properties:
                  code:
                    description: Stable recovery action, such as `sign_in` or `retry_later`.
                    type: string
                  target:
                    description: Where the recovery happens, such as `auth` or `billing`.
                    type: string
                required:
                - code
                - target
                type: object
              recovery_token:
                description: Token for restore_account, on `account_recovery_available`.
                type: string
              reset_at:
                description: When the limit resets, as an RFC 3339 time.
                type: string
              retry_after_seconds:
                description: Seconds to wait, on `rate_limited`.
                minimum: 0
                type: integer
            required:
            - error
            - code
            - next
            - next_action
            type: object
      description: Too many requests. Wait the `Retry-After` seconds, then retry.
      headers:
        Retry-After:
          description: Seconds to wait before retrying.
          schema:
            minimum: 0
            type: integer
    Unauthorized:
      content:
        application/json:
          schema:
            properties:
              code:
                description: Stable reason, such as `unauthorized`, `forbidden`, `not_found`, `validation_failed`, `rate_limited`, or `usage_limit_exceeded`.
                type: string
              deleted_at:
                description: When the account was deleted, on `account_recovery_available`.
                type: string
              error:
                description: What went wrong, in words.
                type: string
              limit:
                description: The limit that was reached.
                type: string
              next:
                description: How to recover.
                type: string
              next_action:
                description: The recovery as stable codes.
                properties:
                  code:
                    description: Stable recovery action, such as `sign_in` or `retry_later`.
                    type: string
                  target:
                    description: Where the recovery happens, such as `auth` or `billing`.
                    type: string
                required:
                - code
                - target
                type: object
              recovery_token:
                description: Token for restore_account, on `account_recovery_available`.
                type: string
              reset_at:
                description: When the limit resets, as an RFC 3339 time.
                type: string
              retry_after_seconds:
                description: Seconds to wait, on `rate_limited`.
                minimum: 0
                type: integer
            required:
            - error
            - code
            - next
            - next_action
            type: object
      description: The credential is missing, expired, or revoked, or this operation does not accept it.
  securitySchemes:
    accessToken:
      bearerFormat: JWT
      description: Account access token. It acts as your account in every project you can reach. `logbrew login` creates one; renew it with refresh_access_token before it expires.
      scheme: bearer
      type: http
    projectKey:
      description: 'Project key. A key reaches only its own project and has one kind: `read` keys (prefix `lbw_read_`) read telemetry; `sdk`, `server`, `browser`, and `cli` keys (prefix `lbw_ingest_`) send telemetry; `artifact` keys upload debug files. Each operation''s security requirement lists the kinds it accepts.'
      scheme: bearer
      type: http