Flow Unified API
API ReferenceRetail POS

Product · product

Portable POS product contract. externalId and name are the stable core fields; description, price, taxable, currencyCode, and categoryExternalId become important for some write targets such as Lightspeed R-Series, Square, and Clover.

Entity type: product · Methods: GET · POST

Portable POS product contract. externalId and name are the stable core fields; description, price, taxable, currencyCode, and categoryExternalId become important for some write targets such as Lightspeed R-Series, Square, and Clover.

Endpoints

GET  /unified/{accountId}/product  # List normalized product records
POST /unified/{accountId}/product  # Create / push one product

Schema

FieldTypeRequiredDescription
externalIdstringYesStable product identifier. Used as the idempotency key on writes.
namestringYesPrimary sellable product name.
descriptionstringHuman-readable product description or long description.
skustringPrimary SKU or item code.
barcodestringPrimary barcode / UPC / EAN / product code.
pricenumberPrimary sell price in major currency units.
costnumberPrimary unit cost in major currency units.
activebooleanWhether the product is active / available.
taxablebooleanWhether the product is taxable when the target requires that flag.
stockOnHandintegerPrimary on-hand stock quantity when available.
categoryExternalIdstringSource or mapped category / group identifier used by some targets.
categoryNamestringHuman-readable category / product type name.
vendorstringVendor / manufacturer / brand label when present.
tagsstring[]Searchable tags or labels.
imageUrlstring · URLPrimary product image URL.
currencyCodestring · ISO 42173-letter currency code. Needed by some write targets such as Square.

Example object

{
  "externalId": "prd_tee_black_m",
  "name": "Organic Tee — Black / M",
  "description": "100% organic cotton, garment dyed.",
  "sku": "TEE-BLK-M",
  "barcode": "840000012345",
  "price": 32,
  "cost": 11.4,
  "active": true,
  "taxable": true,
  "stockOnHand": 142,
  "categoryExternalId": "cat_apparel",
  "categoryName": "Apparel",
  "vendor": "Drift Basics",
  "tags": [
    "organic",
    "core"
  ],
  "currencyCode": "USD"
}

The same shape is used as the POST request body and returned by GET reads — reads from every connected system are normalized to it.

Requests

pull product
curl "https://api.linktoany.com/unified/{accountId}/product?pageSize=10" \
  -H "accept: application/json" \
  -H "authorization: Bearer ak_<your_api_key>"
pull product · SDK
const page = await client.records.list(accountId, 'product', {
  pageSize: 10,
});

for (const product of page.data) {
  console.log(product);
}

// Or walk every page — the SDK follows the cursor for you
for await (const product of client.records.iterate(accountId, 'product')) {
  await save(product);
}
push product
curl -X POST "https://api.linktoany.com/unified/{accountId}/product" \
  -H "accept: application/json" \
  -H "authorization: Bearer ak_<your_api_key>" \
  -H "content-type: application/json" \
  -d '{"externalId":"prd_tee_black_m","name":"Organic Tee — Black / M","description":"100% organic cotton, garment dyed.","sku":"TEE-BLK-M","barcode":"840000012345","price":32,"cost":11.4,"active":true,"taxable":true,"stockOnHand":142,"categoryExternalId":"cat_apparel","categoryName":"Apparel","vendor":"Drift Basics","tags":["organic","core"],"currencyCode":"USD"}'
push product · SDK
await client.records.create(accountId, 'product', {
  externalId: 'prd_tee_black_m',
  name: 'Organic Tee — Black / M',
  description: '100% organic cotton, garment dyed.',
  sku: 'TEE-BLK-M',
  barcode: '840000012345',
  price: 32,
  cost: 11.4,
  active: true,
  taxable: true,
  stockOnHand: 142,
  categoryExternalId: 'cat_apparel',
  categoryName: 'Apparel',
  vendor: 'Drift Basics',
  tags: [
    'organic',
    'core'
  ],
  currencyCode: 'USD'
});

Supported systems

SystemReadWriteAuthRate limit
ShopifyYesYesOAuth 2.01 req / s
Lightspeed X-SeriesYesYesOAuth 2.010 req / s · 100 req / min
Lightspeed R-SeriesYesYesOAuth 2.01 req / 10s
SquareYesYesOAuth 2.05 req / s
Clover (Asia Pacific)YesYesAPI token10 req / s · 100 req / min

On this page