Skip to content
TRIM FITTv1 · read
↑↓ to move↵ to openesc to close
Contents

Reference

Catalogue

The products the key's clinics can order, one page at a time. Names, forms and safety flags. Never a price.

GET/v1/productsScope: catalog:read

Parameters#

ParameterRules
limitOptional. 1 to 100, digits only, no leading zero. Defaults to 25. Anything else is a 400, never a silent default.
cursorOptional. A value from a previous next_cursor. Omit the parameter entirely when you have none; an empty value is a 400. See pagination.

There is no clinic parameter. The clinics searched are the ones the credential holds, taken from the key and from nothing else.

The response#

200 · application/json
{
  "ok": true,
  "request_id": "9f1c2a7e-4d0b-4f6a-9c1e-2b8f7a6d5c3e",
  "products": [
    {
      "productId": "0f2e6a1c-8b4d-4a7e-9c3f-5d6b7a8c9e01",
      "name": "BPC-157 / TB-500 3mg per mL, 3mL vial",
      "displayName": null,
      "category": "Peptide",
      "unit": "mg",
      "route": "subcutaneous",
      "purchaseGate": "request",
      "notFdaApproved": true,
      "isControlledSubstance": false,
      "nameAliases": [],
      "priced": true,
      "orderableInClinicIds": ["5d93011a-82a4-4c8b-abd5-f1001d41f15f"]
    }
  ],
  "truncated": true,
  "next_cursor": "c1.WyJCUEMtMTU3IC8gVEItNTAwIDNtZyBwZXIgbUwsIDNtTHZpYWwiLCIwZjJlNmExYy04YjRk..."
}

Fields#

FieldTypeMeaning
productIduuidStable identifier. Reconcile on this, not on the name.
namestringThe full name. Strength and pack size live inside it; there is no separate strength column.
displayNamestring or nullAn override for display, when the clinic has one.
categorystring or nullGrouping such as Peptide or NAD+.
unitstring or nullUnit of the strength in the name.
routestring or nullThe form: subcutaneous, nasal, oral, and so on.
purchaseGatestring or nullrequest means a clinician reviews a request rather than a self-serve purchase.
notFdaApprovedbooleanCarries a "not FDA approved, compounded" disclosure.
isControlledSubstancebooleanWhether the product is a controlled substance.
nameAliasesstring[]Other names the product is known by, useful for matching free text.
pricedbooleanWhether an agreed price is configured. Never the amount.
orderableInClinicIdsstring[]The subset of your clinics where this product is active.

What is deliberately absent#

  • Prices, agreed or otherwise. priced is a boolean; the amount belongs to a quote.
  • Supplier cost, pharmacy, margin: never exposed, to anyone.
  • Clinic names. Clinics appear as ids, so the payload says which clinic, not what it is called.

Cache it

The catalogue changes rarely. Cache a full walk for minutes rather than polling it, and you will stay far below the rate limits. A full catalogue is around two pages at limit=100.

The machine-readable version of this page is openapi.yaml.