Cacheflow Products API

The Products API from Cacheflow — 10 operation(s) for products.

Operations 14

GET /api/latest/settings/pricebook-entries/{id} Retrieve a pricebook entry #
PATCH /api/latest/settings/pricebook-entries/{id} Update a pricebook entry #
POST /api/latest/settings/products/{id}/copy Copy a product #
GET /api/latest/settings/products List products #
POST /api/latest/settings/products Create a product #
GET /api/latest/settings/products/{id} Retrieve a product #
DELETE /api/latest/settings/products/{id} Delete a product #
PATCH /api/latest/settings/products/{id} Update a product #
GET /api/latest/settings/products/{id}/upgrades List available upgrades for bundle items nested within a bundle product #
GET /api/latest/settings/products/latest-by-root/{id} Retrieve latest version of a product by root_id #
GET /api/latest/settings/products/{id}/stats Retrieve stats about how a product is used #
GET /api/latest/settings/products/batch/{ids} Retrieve a product batch #
GET /api/latest/settings/products/active List active products #
POST /api/latest/settings/products/{id}/versions Create a product version #

Documentation

Specifications

Other Resources

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/cacheflow-products-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

cacheflow-products-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Cacheflow Products API
  version: 0.0.3
servers:
- url: https://api.getcacheflow.com
  description: 'Production. Calls are tenant-routed: send Host: <org-flow-domain>.api.getcacheflow.com (per github.com/getcacheflow/api-examples SETUP.md). Host no longer resolves as of 2026-08-13.'
- url: https://api.sandbox.getcacheflow.com
  description: Sandbox. Tenant-routed as <org-flow-domain>.api.sandbox.getcacheflow.com. Host no longer resolves as of 2026-08-13.
tags:
- name: Products
paths:
  /api/latest/settings/pricebook-entries/{id}:
    get:
      tags:
      - Products
      summary: Retrieve a pricebook entry
      operationId: getPricebookEntry
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PricebookEntry'
    patch:
      tags:
      - Products
      summary: Update a pricebook entry
      operationId: updatePricebook
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PricebookEntry'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PricebookEntry'
  /api/latest/settings/products/{id}/copy:
    post:
      tags:
      - Products
      summary: Copy a product
      operationId: copyProduct
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProductRequest'
      responses:
        '201':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Product'
  /api/latest/settings/products:
    get:
      tags:
      - Products
      summary: List products
      operationId: listProducts
      parameters:
      - name: filterBy
        in: query
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ProductSummary'
    post:
      tags:
      - Products
      summary: Create a product
      operationId: createProduct
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProductRequest'
      responses:
        '201':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Product'
  /api/latest/settings/products/{id}:
    get:
      tags:
      - Products
      summary: Retrieve a product
      operationId: getProduct
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Product'
    delete:
      tags:
      - Products
      summary: Delete a product
      operationId: deleteProduct
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        default:
          description: default response
          content:
            application/json: {}
    patch:
      tags:
      - Products
      summary: Update a product
      operationId: updateProduct
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProductRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Product'
  /api/latest/settings/products/{id}/upgrades:
    get:
      tags:
      - Products
      summary: List available upgrades for bundle items nested within a bundle product
      operationId: getAvailableProductUpgrades
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ProductUpgrade'
  /api/latest/settings/products/latest-by-root/{id}:
    get:
      tags:
      - Products
      summary: Retrieve latest version of a product by root_id
      operationId: getLatestByRoot
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Product'
  /api/latest/settings/products/{id}/stats:
    get:
      tags:
      - Products
      summary: Retrieve stats about how a product is used
      operationId: getProductStats
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProductStats'
  /api/latest/settings/products/batch/{ids}:
    get:
      tags:
      - Products
      summary: Retrieve a product batch
      operationId: getProductsBatch
      parameters:
      - name: ids
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Product'
  /api/latest/settings/products/active:
    get:
      tags:
      - Products
      summary: List active products
      operationId: listActiveProducts
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Product'
  /api/latest/settings/products/{id}/versions:
    post:
      tags:
      - Products
      summary: Create a product version
      operationId: versionProduct
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProductRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Product'
components:
  schemas:
    ProductSummary:
      type: object
      properties:
        id:
          type: string
          format: uuid
        rootId:
          type: string
          format: uuid
        name:
          type: string
        internalName:
          type: string
        productType:
          type: string
          enum:
          - single
          - bundleTopDown
          - bundleBottomUp
        recurrence:
          type: string
          enum:
          - one_time
          - recurring
          - usage
        pricing:
          type: string
          enum:
          - fixed
          - graduated
          - stairstep
          - volume
        consumption:
          type: string
          enum:
          - single
          - multiple
        billing:
          type: string
          enum:
          - scheduled
          - fixed
        updatedAt:
          type: string
          format: date-time
        updatedBy:
          type: string
        user:
          $ref: '#/components/schemas/PersonSummary'
        subscriptionCount:
          type: integer
          format: int64
        status:
          type: string
          enum:
          - active
          - inactive
        currencies:
          type: array
          items:
            type: string
        billingPeriods:
          type: array
          items:
            type: string
            enum:
            - month
            - quarter
            - halfyear
            - year
    ProductRequest:
      type: object
      properties:
        productType:
          type: string
          enum:
          - single
          - bundleTopDown
          - bundleBottomUp
        name:
          type: string
        internalName:
          type: string
        description:
          type: string
        recurrence:
          type: string
          enum:
          - one_time
          - recurring
          - usage
        pricing:
          type: string
          enum:
          - fixed
          - graduated
          - stairstep
          - volume
        consumption:
          type: string
          enum:
          - single
          - multiple
        billing:
          type: string
          enum:
          - scheduled
          - fixed
        status:
          type: string
          enum:
          - active
          - inactive
        unitId:
          type: string
          format: uuid
        customizable:
          type: boolean
        descriptionCustomizable:
          type: boolean
        nameCustomizable:
          type: boolean
        discountable:
          type: boolean
        listPriceAdjustable:
          type: boolean
        displayQuantityOnInvoicePdf:
          type: boolean
        extendedScale:
          type: boolean
        showProductsOnInvoice:
          type: boolean
        showProductPricesOnInvoice:
          type: boolean
        showProductsOnProposal:
          type: boolean
        entries:
          type: array
          items:
            $ref: '#/components/schemas/PricebookEntryRequest'
        taxConfig:
          $ref: '#/components/schemas/ProductTaxConfigRequest'
        levels:
          type: array
          items:
            $ref: '#/components/schemas/LevelRequest'
        bundleItems:
          type: array
          items:
            $ref: '#/components/schemas/BundleItemRequest'
        billingPeriods:
          type: array
          items:
            type: string
            enum:
            - month
            - quarter
            - halfyear
            - year
        currencies:
          type: array
          items:
            type: string
    ProductTaxConfigRequest:
      type: object
      properties:
        taxMode:
          type: string
          enum:
          - inclusive
          - exclusive
        taxCode:
          type: string
    Money:
      type: object
      properties:
        amount:
          type: integer
          format: int64
        scale:
          type: integer
          format: int32
        formattedAmount:
          type: string
        currency:
          type: string
      description: Total list amount for this level. null for usage.
    PricebookEntry:
      required:
      - price
      type: object
      properties:
        id:
          type: string
          format: uuid
        createdAt:
          type: string
          format: date-time
          readOnly: true
        createdBy:
          type: string
        updatedAt:
          type: string
          format: date-time
          readOnly: true
        updatedBy:
          type: string
          readOnly: true
        billingPeriod:
          type: string
          enum:
          - month
          - quarter
          - halfyear
          - year
        level:
          type: integer
          format: int32
        price:
          $ref: '#/components/schemas/Money'
    Product:
      required:
      - billing
      - consumption
      - createdAt
      - customizable
      - discountable
      - displayQuantityOnInvoicePdf
      - entries
      - extendedScale
      - hidden
      - id
      - listPriceAdjustable
      - pricing
      - productType
      - recurrence
      - status
      - updatedAt
      type: object
      properties:
        id:
          type: string
          format: uuid
        createdAt:
          type: string
          format: date-time
        createdBy:
          type: string
        updatedAt:
          type: string
          format: date-time
        updatedBy:
          type: string
        sources:
          type: array
          items:
            $ref: '#/components/schemas/ExternalSource'
        hidden:
          type: boolean
        rootId:
          type: string
          format: uuid
        productType:
          type: string
          enum:
          - single
          - bundleTopDown
          - bundleBottomUp
        status:
          type: string
          enum:
          - active
          - inactive
        name:
          type: string
        internalName:
          type: string
        description:
          type: string
        recurrence:
          type: string
          enum:
          - one_time
          - recurring
          - usage
        pricing:
          type: string
          enum:
          - fixed
          - graduated
          - stairstep
          - volume
        consumption:
          type: string
          enum:
          - single
          - multiple
        billing:
          type: string
          enum:
          - scheduled
          - fixed
        unit:
          $ref: '#/components/schemas/Unit'
        extendedScale:
          type: boolean
        customizable:
          type: boolean
        discountable:
          type: boolean
        displayQuantityOnInvoicePdf:
          type: boolean
        listPriceAdjustable:
          type: boolean
        descriptionCustomizable:
          type: boolean
        nameCustomizable:
          type: boolean
        billingPeriods:
          type: array
          items:
            type: string
            enum:
            - month
            - quarter
            - halfyear
            - year
        currencies:
          type: array
          items:
            type: string
        taxConfig:
          $ref: '#/components/schemas/ProductTaxConfig'
        entries:
          type: array
          items:
            $ref: '#/components/schemas/PricebookEntry'
        levels:
          type: array
          items:
            $ref: '#/components/schemas/ProductLevel'
        showProductsOnInvoice:
          type: boolean
        showProductPricesOnInvoice:
          type: boolean
        showProductsOnProposal:
          type: boolean
        bundleItems:
          type: array
          items:
            $ref: '#/components/schemas/BundleItem'
        bundleBottomUpEntries:
          type: array
          items:
            $ref: '#/components/schemas/BundlePriceEntry'
        bundleGroups:
          type: array
          items:
            type: string
    BundleItem:
      required:
      - entries
      - id
      - name
      - product
      type: object
      properties:
        id:
          type: string
          format: uuid
        product:
          $ref: '#/components/schemas/Product'
        quantity:
          type: number
        bundlePercent:
          type: integer
          format: int32
        entries:
          type: array
          items:
            $ref: '#/components/schemas/BundlePriceEntry'
        name:
          type: string
        description:
          type: string
    ExternalSource:
      required:
      - sourceId
      - sourceType
      type: object
      properties:
        sourceType:
          type: string
          enum:
          - manual
          - close
          - plaid
          - stripe
          - hubspot
          - salesforce
          - avalara
          - quickbooks
          - profitwell
          - netsuite
          - google
          - warmly
          - zapier
          - cacheflow_checkout
        sourceId:
          type: string
        sourceLink:
          type: string
    PricebookEntryChange:
      type: object
      properties:
        changeType:
          type: string
          enum:
          - modify
          - remove
          - add
        billingPeriod:
          type: string
          enum:
          - month
          - quarter
          - halfyear
          - year
        currency:
          type: object
          properties:
            currencyCode:
              type: string
            defaultFractionDigits:
              type: integer
              format: int32
            numericCode:
              type: integer
              format: int32
            displayName:
              type: string
            symbol:
              type: string
            numericCodeAsString:
              type: string
        level:
          type: integer
          format: int32
    LevelRequest:
      type: object
      properties:
        start:
          type: integer
          format: int32
    ProductTaxConfig:
      type: object
      properties:
        id:
          type: string
          format: uuid
        createdAt:
          type: string
          format: date-time
          readOnly: true
        createdBy:
          type: string
        updatedAt:
          type: string
          format: date-time
          readOnly: true
        updatedBy:
          type: string
          readOnly: true
        taxMode:
          type: string
          enum:
          - inclusive
          - exclusive
        taxCode:
          $ref: '#/components/schemas/TaxCode'
    PersonSummary:
      type: object
      properties:
        id:
          type: string
          format: uuid
        createdAt:
          type: string
          format: date-time
          readOnly: true
        createdBy:
          type: string
        updatedAt:
          type: string
          format: date-time
          readOnly: true
        updatedBy:
          type: string
          readOnly: true
        firstName:
          type: string
        lastName:
          type: string
    BundleItemRequest:
      type: object
      properties:
        productId:
          type: string
          format: uuid
        quantity:
          type: number
        bundlePercent:
          type: integer
          format: int32
        name:
          type: string
        description:
          type: string
    PricebookEntryRequest:
      type: object
      properties:
        billingPeriod:
          type: string
          enum:
          - month
          - quarter
          - halfyear
          - year
        level:
          type: integer
          format: int32
        price:
          $ref: '#/components/schemas/Money'
    ProductUpgrade:
      required:
      - changedFields
      - productId
      - upgrade
      type: object
      properties:
        productId:
          type: string
          format: uuid
        upgrade:
          $ref: '#/components/schemas/Product'
        changedFields:
          type: array
          items:
            type: string
        entryChanges:
          type: array
          items:
            $ref: '#/components/schemas/PricebookEntryChange'
    TaxCode:
      type: object
      properties:
        id:
          type: string
          format: uuid
        createdAt:
          type: string
          format: date-time
          readOnly: true
        createdBy:
          type: string
        updatedAt:
          type: string
          format: date-time
          readOnly: true
        updatedBy:
          type: string
          readOnly: true
        code:
          type: string
        description:
          type: string
    ProductStats:
      required:
      - anyVersionBundleCount
      - anyVersionProposalCount
      - bundleCount
      - proposalCount
      type: object
      properties:
        proposalCount:
          type: integer
          format: int32
        bundleCount:
          type: integer
          format: int32
        anyVersionProposalCount:
          type: integer
          format: int32
        anyVersionBundleCount:
          type: integer
          format: int32
    Unit:
      type: object
      properties:
        id:
          type: string
          format: uuid
        createdAt:
          type: string
          format: date-time
          readOnly: true
        createdBy:
          type: string
        updatedAt:
          type: string
          format: date-time
          readOnly: true
        updatedBy:
          type: string
          readOnly: true
        name:
          type: string
        plural:
          type: string
    BundlePriceEntry:
      required:
      - price
      type: object
      properties:
        billingPeriod:
          type: string
          enum:
          - month
          - quarter
          - halfyear
          - year
        price:
          $ref: '#/components/schemas/Money'
    ProductLevel:
      required:
      - start
      type: object
      properties:
        id:
          type: string
          format: uuid
        createdAt:
          type: string
          format: date-time
          readOnly: true
        createdBy:
          type: string
        updatedAt:
          type: string
          format: date-time
          readOnly: true
        updatedBy:
          type: string
          readOnly: true
        start:
          type: integer
          format: int32