Orb

Orb Item API

The Item resource represents a sellable product or good. Items are associated with all line items, billable metrics, and prices and are used for defining external sync behavior for invoices and tax calculation purposes.

GitHub OpenAPI

Operations 5

GET /items List items #
POST /items Create item #
GET /items/{item_id} Fetch item #
PUT /items/{item_id} Update item #
POST /items/{item_id}/archive Archive item #

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/orb-billing:orb-billing-item-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

orb-billing-item-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Reference Item API
  description: 'Orb''s API is built with the following principles in mind:


    1. **Predictable developer experience**: Where applicable, the Orb API uses industry-standard patterns such as

    cursor-based pagination and standardized error output. To help with debugging in critical API

    actions, the API always strives to provide detailed and actionable error messages. Aliases

    such as external customer IDs aid in fast integration times.

    2. **Reliably real time**: Orb''s event-based APIs, such as event ingestion are designed to handle extremely high

    throughput and scale with concurrent load. Orb also provides a real-time event-level credits

    ledger and a highly performant webhooks architecture.

    3. **Flexibility at the forefront**: Features like timezone localization and the ability to amend historical usage

    show the flexible nature of the platform.


    You can download the latest OpenAPI spec here - pass `?version=3.0` for an

    OpenAPI 3.0-compatible spec.'
  contact:
    name: Orb, Inc.
    url: https://www.withorb.com/
    email: team@withorb.com
  version: '1.0'
servers:
- url: https://api.withorb.com/v1
  description: Production server
security:
- APIKeyAuth: []
tags:
- name: Item
  description: 'The Item resource represents a sellable product or good. Items are associated with all line items, billable metrics,

    and prices and are used for defining external sync behavior for invoices and tax calculation purposes.'
paths:
  /items:
    get:
      tags:
      - Item
      summary: List items
      description: This endpoint returns a list of all Items, ordered in descending order by creation time.
      operationId: list-items
      parameters:
      - required: false
        style: form
        schema:
          type: integer
          maximum: 100.0
          minimum: 1.0
          title: Limit
          description: The number of items to fetch. Defaults to 20.
          default: 20
        name: limit
        in: query
      - required: false
        style: form
        schema:
          oneOf:
          - type: string
          - type: 'null'
          title: Cursor
          description: Cursor for pagination. This can be populated by the `next_cursor` value returned from the initial request.
        name: cursor
        in: query
      responses:
        '200':
          description: OK
          headers: {}
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Items'
        '400':
          description: Bad Request
          headers: {}
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/400Error'
        '401':
          description: Unauthorized
          headers: {}
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/401Error'
        '404':
          description: Not Found
          headers: {}
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/404Error'
        '409':
          description: Conflict
          headers: {}
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/409Error'
        '413':
          description: Content Too Large
          headers: {}
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/413Error'
        '429':
          description: Too Many Requests
          headers: {}
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/429Error'
        '500':
          description: Internal Server Error
          headers: {}
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/500Error'
    post:
      tags:
      - Item
      summary: Create item
      description: This endpoint is used to create an Item.
      operationId: create-item
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NewItem'
        required: true
      responses:
        '201':
          description: Created
          headers: {}
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Item'
        '400':
          description: Bad Request
          headers: {}
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/400Error'
        '401':
          description: Unauthorized
          headers: {}
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/401Error'
        '404':
          description: Not Found
          headers: {}
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/404Error'
        '409':
          description: Conflict
          headers: {}
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/409Error'
        '413':
          description: Content Too Large
          headers: {}
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/413Error'
        '429':
          description: Too Many Requests
          headers: {}
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/429Error'
        '500':
          description: Internal Server Error
          headers: {}
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/500Error'
  /items/{item_id}:
    get:
      tags:
      - Item
      summary: Fetch item
      description: This endpoint returns an item identified by its item_id.
      operationId: fetch-item
      parameters:
      - required: true
        style: simple
        schema:
          type: string
        name: item_id
        in: path
      responses:
        '200':
          description: OK
          headers: {}
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Item'
        '400':
          description: Bad Request
          headers: {}
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/400Error'
        '401':
          description: Unauthorized
          headers: {}
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/401Error'
        '404':
          description: Not Found
          headers: {}
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/404Error'
        '409':
          description: Conflict
          headers: {}
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/409Error'
        '413':
          description: Content Too Large
          headers: {}
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/413Error'
        '429':
          description: Too Many Requests
          headers: {}
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/429Error'
        '500':
          description: Internal Server Error
          headers: {}
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/500Error'
    put:
      tags:
      - Item
      summary: Update item
      description: This endpoint can be used to update properties on the Item.
      operationId: update-item
      parameters:
      - required: true
        style: simple
        schema:
          type: string
        name: item_id
        in: path
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MapItemRequestParams'
        required: true
      responses:
        '200':
          description: OK
          headers: {}
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Item'
        '400':
          description: Bad Request
          headers: {}
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/400Error'
        '401':
          description: Unauthorized
          headers: {}
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/401Error'
        '404':
          description: Not Found
          headers: {}
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/404Error'
        '409':
          description: Conflict
          headers: {}
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/409Error'
        '413':
          description: Content Too Large
          headers: {}
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/413Error'
        '429':
          description: Too Many Requests
          headers: {}
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/429Error'
        '500':
          description: Internal Server Error
          headers: {}
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/500Error'
  /items/{item_id}/archive:
    post:
      tags:
      - Item
      summary: Archive item
      description: 'This endpoint archives an item, and cascades to archive every price for that item that is still

        active. An item that is already archived cannot be archived again.'
      operationId: archive-item
      parameters:
      - required: true
        style: simple
        schema:
          type: string
        name: item_id
        in: path
      responses:
        '200':
          description: OK
          headers: {}
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Item'
        '400':
          description: Bad Request
          headers: {}
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/400Error'
        '401':
          description: Unauthorized
          headers: {}
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/401Error'
        '404':
          description: Not Found
          headers: {}
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/404Error'
        '409':
          description: Conflict
          headers: {}
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/409Error'
        '413':
          description: Content Too Large
          headers: {}
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/413Error'
        '429':
          description: Too Many Requests
          headers: {}
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/429Error'
        '500':
          description: Internal Server Error
          headers: {}
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/500Error'
components:
  schemas:
    RequestTooLargeError:
      properties:
        type:
          type: string
          enum:
          - https://docs.withorb.com/reference/error-responses#413-request-too-large
          title: Type
        status:
          type: integer
          enum:
          - 413
          title: Status
        detail:
          oneOf:
          - type: string
          - type: 'null'
          title: Detail
        title:
          oneOf:
          - type: string
          - type: 'null'
          title: Title
      type: object
      required:
      - type
      - status
      title: RequestTooLargeError
    401Error:
      $ref: '#/components/schemas/AuthorizationError'
      title: 401Error
    AuthorizationError:
      properties:
        type:
          type: string
          enum:
          - https://docs.withorb.com/reference/error-responses#401-authentication-error
          title: Type
        status:
          type: integer
          enum:
          - 401
          title: Status
        detail:
          oneOf:
          - type: string
          - type: 'null'
          title: Detail
        title:
          oneOf:
          - type: string
          - type: 'null'
          title: Title
      type: object
      required:
      - type
      - status
      title: AuthorizationError
    429Error:
      $ref: '#/components/schemas/TooManyRequests'
      title: 429Error
    FeatureNotAvailableError:
      properties:
        type:
          type: string
          enum:
          - https://docs.withorb.com/reference/error-responses#404-feature-not-available
          title: Type
        status:
          type: integer
          enum:
          - 400
          title: Status
        detail:
          oneOf:
          - type: string
          - type: 'null'
          title: Detail
        title:
          oneOf:
          - type: string
          - type: 'null'
          title: Title
      type: object
      required:
      - type
      - status
      title: FeatureNotAvailableError
    413Error:
      oneOf:
      - $ref: '#/components/schemas/RequestTooLargeError'
      - $ref: '#/components/schemas/ResourceTooLargeError'
      - $ref: '#/components/schemas/TooManyResultsError'
    IdempotencyRequestMismatch:
      properties:
        type:
          type: string
          enum:
          - https://docs.withorb.com/reference/error-responses#409-resource-conflict
          title: Type
        status:
          type: integer
          enum:
          - 409
          title: Status
        detail:
          oneOf:
          - type: string
          - type: 'null'
          title: Detail
        title:
          oneOf:
          - type: string
          - type: 'null'
          title: Title
      type: object
      required:
      - type
      - status
      title: IdempotencyRequestMismatch
    Item:
      properties:
        metadata:
          additionalProperties:
            type: string
          type: object
          title: Metadata
          description: User specified key-value pairs for the resource. If not present, this defaults to an empty dictionary. Individual keys can be removed by setting the value to `null`, and the entire metadata mapping can be cleared by setting `metadata` to `null`.
        id:
          type: string
          title: Id
          description: The Orb-assigned unique identifier for the item.
        name:
          type: string
          title: Name
          description: The name of the item.
        created_at:
          type: string
          format: date-time
          title: Created At
          description: The time at which the item was created.
        external_connections:
          items:
            $ref: '#/components/schemas/ItemExternalConnection'
          type: array
          title: External Connections
          description: A list of external connections for this item, used to sync with external invoicing and tax systems.
        archived_at:
          oneOf:
          - type: string
            format: date-time
          - type: 'null'
          title: Archived At
          description: The time at which the item was archived. If null, the item is not archived.
      type: object
      required:
      - metadata
      - id
      - name
      - created_at
      - external_connections
      title: Item
      description: 'The Item resource represents a sellable product or good. Items are associated with all line items, billable metrics,

        and prices and are used for defining external sync behavior for invoices and tax calculation purposes.'
    MapItemRequestParams:
      properties:
        metadata:
          oneOf:
          - additionalProperties:
              oneOf:
              - type: string
              - type: 'null'
            type: object
          - type: 'null'
          title: Metadata
          description: User-specified key/value pairs for the resource. Individual keys can be removed by setting the value to `null`, and the entire metadata mapping can be cleared by setting `metadata` to `null`.
        name:
          oneOf:
          - type: string
          - type: 'null'
          title: Name
        external_connections:
          oneOf:
          - items:
              $ref: '#/components/schemas/ItemExternalConnection'
            type: array
          - type: 'null'
          title: External Connections
      additionalProperties: false
      type: object
      title: MapItemRequestParams
      description: 'A list of external connections to map an item to. Note that passing `null` will clear existing mappings.

        Orb requires that you pass the full list of mappings; this list will replace the existing item mappings.'
    Items:
      properties:
        data:
          items:
            $ref: '#/components/schemas/Item'
          type: array
          title: Data
        pagination_metadata:
          $ref: '#/components/schemas/PaginationMetadata'
      type: object
      required:
      - data
      - pagination_metadata
      title: Items
    TooManyRequests:
      properties:
        type:
          type: string
          enum:
          - https://docs.withorb.com/reference/error-responses#429-too-many-requests
          title: Type
        status:
          type: integer
          enum:
          - 429
          title: Status
        detail:
          oneOf:
          - type: string
          - type: 'null'
          title: Detail
        title:
          oneOf:
          - type: string
          - type: 'null'
          title: Title
      type: object
      required:
      - type
      - status
      title: TooManyRequests
    ResourceTooLargeError:
      properties:
        type:
          type: string
          enum:
          - https://docs.withorb.com/reference/error-responses#413-resource-too-large
          title: Type
        status:
          type: integer
          enum:
          - 413
          title: Status
        detail:
          oneOf:
          - type: string
          - type: 'null'
          title: Detail
        title:
          oneOf:
          - type: string
          - type: 'null'
          title: Title
      type: object
      required:
      - type
      - status
      title: ResourceTooLargeError
    409Error:
      $ref: '#/components/schemas/IdempotencyRequestMismatch'
      title: 409Error
    ItemExternalConnection:
      properties:
        external_connection_name:
          oneOf:
          - type: string
            enum:
            - stripe
            - quickbooks
            - bill.com
            - netsuite
          - type: string
            enum:
            - taxjar
            - avalara
            - anrok
            - numeral
            - stripe_tax
          title: External Connection Name
          description: The name of the external system this item is connected to.
        external_entity_id:
          type: string
          title: External Entity Id
          description: The identifier of this item in the external system.
      type: object
      required:
      - external_connection_name
      - external_entity_id
      title: ItemExternalConnection
      description: Represents a connection between an Item and an external system for invoicing or tax calculation purposes.
    TooManyResultsError:
      properties:
        type:
          type: string
          enum:
          - https://docs.withorb.com/reference/error-responses#413-too-many-results
          title: Type
        status:
          type: integer
          enum:
          - 413
          title: Status
        detail:
          oneOf:
          - type: string
          - type: 'null'
          title: Detail
        title:
          oneOf:
          - type: string
          - type: 'null'
          title: Title
      type: object
      required:
      - type
      - status
      title: TooManyResultsError
    PaginationMetadata:
      properties:
        has_more:
          type: boolean
          title: Has More
        next_cursor:
          oneOf:
          - type: string
          - type: 'null'
          title: Next Cursor
      type: object
      required:
      - has_more
      - next_cursor
      title: PaginationMetadata
    ServerError:
      properties:
        type:
          type: string
          enum:
          - https://docs.withorb.com/reference/error-responses#500-internal-server-error
          title: Type
        status:
          type: integer
          title: Status
        detail:
          oneOf:
          - type: string
          - type: 'null'
          title: Detail
        title:
          oneOf:
          - type: string
          - type: 'null'
          title: Title
      type: object
      required:
      - type
      - status
      title: ServerError
    ResourceNotFoundError:
      properties:
        type:
          type: string
          enum:
          - https://docs.withorb.com/reference/error-responses#404-resource-not-found
          title: Type
        status:
          type: integer
          enum:
          - 404
          title: Status
        detail:
          oneOf:
          - type: string
          - type: 'null'
          title: Detail
        title:
          type: string
          title: Title
      type: object
      required:
      - type
      - status
      - title
      title: ResourceNotFoundError
    404Error:
      oneOf:
      - $ref: '#/components/schemas/FeatureNotAvailableError'
      - $ref: '#/components/schemas/ResourceNotFoundError'
      - $ref: '#/components/schemas/URLNotFound'
    URLNotFound:
      properties:
        type:
          type: string
          enum:
          - https://docs.withorb.com/reference/error-responses#404-url-not-found
          title: Type
        status:
          type: integer
          enum:
          - 404
          title: Status
        detail:
          oneOf:
          - type: string
          - type: 'null'
          title: Detail
        title:
          oneOf:
          - type: string
          - type: 'null'
          title: Title
      type: object
      required:
      - type
      - status
      title: URLNotFound
    NewItem:
      properties:
        metadata:
          oneOf:
          - additionalProperties:
              oneOf:
              - type: string
              - type: 'null'
            type: object
          - type: 'null'
          title: Metadata
          description: User-specified key/value pairs for the resource. Individual keys can be removed by setting the value to `null`, and the entire metadata mapping can be cleared by setting `metadata` to `null`.
        name:
          type: string
          title: Name
          description: The name of the item.
          examples:
          - API requests
      additionalProperties: false
      type: object
      required:
      - name
      title: NewItem
    DuplicateResourceCreationError:
      properties:
        type:
          type: string
          enum:
          - https://docs.withorb.com/reference/error-responses#400-duplicate-resource-creation
          title: Type
        status:
          type: integer
          enum:
          - 400
          title: Status
        detail:
          oneOf:
          - type: string
          - type: 'null'
          title: Detail
        title:
          oneOf:
          - type: string
          - type: 'null'
          title: Title
      type: object
      required:
      - type
      - status
      title: DuplicateResourceCreationError
    RequestValidationError:
      properties:
        type:
          type: string
          enum:
          - https://docs.withorb.com/reference/error-responses#400-request-validation-errors
          title: Type
        status:
          type: integer
          enum:
          - 400
          title: Status
        detail:
          oneOf:
          - type: string
          - type: 'null'
          title: Detail
        title:
          oneOf:
          - type: string
          - type: 'null'
          title: Title
        validation_errors:
          items: {}
          type: array
          title: Validation Errors
      type: object
      required:
      - type
      - status
      - validation_errors
      title: RequestValidationError
    400Error:
      oneOf:
      - $ref: '#/components/schemas/ConstraintViolationError'
      - $ref: '#/components/schemas/DuplicateResourceCreationError'
      - $ref: '#/components/schemas/RequestValidationError'
    500Error:
      $ref: '#/components/schemas/ServerError'
      title: 500Error
    ConstraintViolationError:
      properties:
        type:
          type: string
          enum:
          - https://docs.withorb.com/reference/error-responses#400-constraint-violation
          title: Type
        status:
          type: integer
          enum:
          - 400
          title: Status
        detail:
          oneOf:
          - type: string
          - type: 'null'
          title: Detail
        title:
          oneOf:
          - type: string
          - type: 'null'
          title: Title
      type: object
      required:
      - type
      - status
      title: ConstraintViolationError
  securitySchemes:
    APIKeyAuth:
      type: http
      description: API Keys can be issued in the Orb's web application.
      scheme: bearer
x-provenance:
  method: harvested
  publisher: Orb
  source: https://docs.withorb.com/api-reference/orb-openapi.json
  note: split by refine-openapis from the provider's own published document, verified by fetch (openapi/_original/*.fetch.json);
    stamped by stamp-openapi-provenance.py (roadmap#793)