---
title: "API reference"
description: "501 endpoints across 33 resources, generated from the OpenAPI 2026-06-20 specification."
canonical_url: "https://twominutebilling.com/help/developers/api-reference"
---
# API reference

> 501 endpoints across 33 resources, generated from the OpenAPI 2026-06-20 specification.

501 endpoints across 33 resources, generated from the OpenAPI 2026-06-20 document the typed SDK is built from.

Every example reads the base URL and key from your shell: set `TMBILLING_URL` to your deployment and `TMBILLING_API_KEY` to a key from **Settings → API keys**. Writes send a fresh `Idempotency-Key`, so a retried request never runs twice.

Multi-tenant subscription billing. Account hierarchy: Organization → Business → Customer → Subscription. Authenticate with `Authorization: Bearer <api_key>`; every write accepts an `Idempotency-Key`. Money is integer minor units + ISO currency.

**Unknown parameters.** A body or query key the endpoint does not define — at any depth — answers **400** `invalid_request_error` with `message: "Unknown parameter: <path>"` (e.g. `items[0].qty`) and `param` naming the first one; nothing is written. Values inside `metadata` and `custom_fields`, and top-level `cf_<name>` custom-field keys, are free-form.

**Rate limits.** Requests are counted per API key in fixed one-minute windows. Every authenticated response carries `X-RateLimit-Limit`, `X-RateLimit-Remaining` and `X-RateLimit-Reset` (unix seconds, when the window and the allowance reset), so a client can back off before it is refused. Over the limit answers **429** with `error.type = "rate_limit_error"` and a `Retry-After` header in seconds — wait that long rather than retrying immediately. The ceiling applies per key, so an organization's integrations do not consume each other's allowance; it is set per organization, so ask us to raise it rather than sharding across keys. A 429 means nothing was processed: the request is safe to retry unchanged, and with an `Idempotency-Key` it is safe to retry even if you are unsure. Some actions also have their own, tighter limit (team invites, webhook resends and test sends, ad hoc emails, invoice collect/retry, checkout coupon codes); the 429 message names it.

**List filtering.** Paginated lists filter with `<field>[<op>]=<value>` — e.g. `?created_at[after]=2026-09-01&status[in]=paid,posted`. There is no `filters` parameter: each filterable field is documented as its own query parameter, and any query key that is neither a filter nor a documented one is a **400** rather than a silently ignored no-op. Most operators take one scalar; four do not — `in`/`not_in` take a comma-separated set, `between` exactly two comma-separated values (both ends inclusive), `in_last`/`in_next` a positive number of DAYS, and `is_present` takes `true` or `false`. Dates are ISO-8601. Sorting is `sort_by[asc]=<field>` or `sort_by[desc]=<field>`.

**Request ids.** Every response carries a `Request-Id` header (`req_…`). Requests your API keys make, and writes made in the dashboard, are kept in the request log: open one with `GET /v1/request_logs/{id}` to see what was sent and what was answered. Reads are kept 30 days, writes 90 days.

## Resources

<table>
<thead>
  <tr>
    <th>
      Resource
    </th>
    
    <th>
      Endpoints
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <a href="https://twominutebilling.com/help/developers/api-reference/organization">
        Organization
      </a>
    </td>
    
    <td>
      25
    </td>
  </tr>
  
  <tr>
    <td>
      <a href="https://twominutebilling.com/help/developers/api-reference/analytics">
        Analytics
      </a>
    </td>
    
    <td>
      6
    </td>
  </tr>
  
  <tr>
    <td>
      <a href="https://twominutebilling.com/help/developers/api-reference/businesses">
        Businesses
      </a>
    </td>
    
    <td>
      27
    </td>
  </tr>
  
  <tr>
    <td>
      <a href="https://twominutebilling.com/help/developers/api-reference/catalog">
        Catalog
      </a>
    </td>
    
    <td>
      49
    </td>
  </tr>
  
  <tr>
    <td>
      <a href="https://twominutebilling.com/help/developers/api-reference/customers">
        Customers
      </a>
    </td>
    
    <td>
      26
    </td>
  </tr>
  
  <tr>
    <td>
      <a href="https://twominutebilling.com/help/developers/api-reference/payment-methods">
        Payment Methods
      </a>
    </td>
    
    <td>
      24
    </td>
  </tr>
  
  <tr>
    <td>
      <a href="https://twominutebilling.com/help/developers/api-reference/subscriptions">
        Subscriptions
      </a>
    </td>
    
    <td>
      51
    </td>
  </tr>
  
  <tr>
    <td>
      <a href="https://twominutebilling.com/help/developers/api-reference/invoices">
        Invoices
      </a>
    </td>
    
    <td>
      31
    </td>
  </tr>
  
  <tr>
    <td>
      <a href="https://twominutebilling.com/help/developers/api-reference/entitlements">
        Entitlements
      </a>
    </td>
    
    <td>
      12
    </td>
  </tr>
  
  <tr>
    <td>
      <a href="https://twominutebilling.com/help/developers/api-reference/integrations">
        Integrations
      </a>
    </td>
    
    <td>
      9
    </td>
  </tr>
  
  <tr>
    <td>
      <a href="https://twominutebilling.com/help/developers/api-reference/hubspot">
        HubSpot
      </a>
    </td>
    
    <td>
      19
    </td>
  </tr>
  
  <tr>
    <td>
      <a href="https://twominutebilling.com/help/developers/api-reference/webhooks">
        Webhooks
      </a>
    </td>
    
    <td>
      50
    </td>
  </tr>
  
  <tr>
    <td>
      <a href="https://twominutebilling.com/help/developers/api-reference/payment-intents">
        Payment Intents
      </a>
    </td>
    
    <td>
      8
    </td>
  </tr>
  
  <tr>
    <td>
      <a href="https://twominutebilling.com/help/developers/api-reference/custom-fields">
        Custom Fields
      </a>
    </td>
    
    <td>
      5
    </td>
  </tr>
  
  <tr>
    <td>
      <a href="https://twominutebilling.com/help/developers/api-reference/report-dashboards">
        Report dashboards
      </a>
    </td>
    
    <td>
      14
    </td>
  </tr>
  
  <tr>
    <td>
      <a href="https://twominutebilling.com/help/developers/api-reference/list-views">
        List views
      </a>
    </td>
    
    <td>
      5
    </td>
  </tr>
  
  <tr>
    <td>
      <a href="https://twominutebilling.com/help/developers/api-reference/reference">
        Reference
      </a>
    </td>
    
    <td>
      3
    </td>
  </tr>
  
  <tr>
    <td>
      <a href="https://twominutebilling.com/help/developers/api-reference/tax">
        Tax
      </a>
    </td>
    
    <td>
      10
    </td>
  </tr>
  
  <tr>
    <td>
      <a href="https://twominutebilling.com/help/developers/api-reference/payments">
        Payments
      </a>
    </td>
    
    <td>
      5
    </td>
  </tr>
  
  <tr>
    <td>
      <a href="https://twominutebilling.com/help/developers/api-reference/payment-instructions">
        Payment Instructions
      </a>
    </td>
    
    <td>
      5
    </td>
  </tr>
  
  <tr>
    <td>
      <a href="https://twominutebilling.com/help/developers/api-reference/payment-links">
        Payment Links
      </a>
    </td>
    
    <td>
      4
    </td>
  </tr>
  
  <tr>
    <td>
      <a href="https://twominutebilling.com/help/developers/api-reference/reason-codes">
        Reason Codes
      </a>
    </td>
    
    <td>
      4
    </td>
  </tr>
  
  <tr>
    <td>
      <a href="https://twominutebilling.com/help/developers/api-reference/dunning-policies">
        Dunning Policies
      </a>
    </td>
    
    <td>
      5
    </td>
  </tr>
  
  <tr>
    <td>
      <a href="https://twominutebilling.com/help/developers/api-reference/receipts">
        Receipts
      </a>
    </td>
    
    <td>
      3
    </td>
  </tr>
  
  <tr>
    <td>
      <a href="https://twominutebilling.com/help/developers/api-reference/payment-requests">
        Payment Requests
      </a>
    </td>
    
    <td>
      7
    </td>
  </tr>
  
  <tr>
    <td>
      <a href="https://twominutebilling.com/help/developers/api-reference/comments">
        Comments
      </a>
    </td>
    
    <td>
      5
    </td>
  </tr>
  
  <tr>
    <td>
      <a href="https://twominutebilling.com/help/developers/api-reference/transfers">
        Transfers
      </a>
    </td>
    
    <td>
      2
    </td>
  </tr>
  
  <tr>
    <td>
      <a href="https://twominutebilling.com/help/developers/api-reference/usage">
        Usage
      </a>
    </td>
    
    <td>
      13
    </td>
  </tr>
  
  <tr>
    <td>
      <a href="https://twominutebilling.com/help/developers/api-reference/model-prices">
        Model prices
      </a>
    </td>
    
    <td>
      10
    </td>
  </tr>
  
  <tr>
    <td>
      <a href="https://twominutebilling.com/help/developers/api-reference/credits">
        Credits
      </a>
    </td>
    
    <td>
      17
    </td>
  </tr>
  
  <tr>
    <td>
      <a href="https://twominutebilling.com/help/developers/api-reference/usage-controls">
        Usage controls
      </a>
    </td>
    
    <td>
      31
    </td>
  </tr>
  
  <tr>
    <td>
      <a href="https://twominutebilling.com/help/developers/api-reference/customer-segments">
        Customer segments
      </a>
    </td>
    
    <td>
      8
    </td>
  </tr>
  
  <tr>
    <td>
      <a href="https://twominutebilling.com/help/developers/api-reference/metadata-rules">
        Metadata Rules
      </a>
    </td>
    
    <td>
      8
    </td>
  </tr>
</tbody>
</table>


## Sitemap

See the full [sitemap](https://twominutebilling.com/sitemap.md) for all pages.
