List Shopify products synced into Fileflare, or fetch one by its Fileflare product ID. Each row carries both the Fileflare product UUID and the Shopify product and variant IDs, so this endpoint is how you find the UUID for a specific variant when you want to attach an asset to that variant alone.
Requires Bearer authentication with your Fileflare key. Rate-limited to 60 requests per minute.
Endpoint
GET https://app.digital-downloads.com/api/v1/products
Fetch a single product:
GET https://app.digital-downloads.com/api/v1/products/{product}
Parameters
Path
{product}— the Fileflare product ID (only forGET /products/{product})
Query
page— page number (default1)limit— items per page (default100, max1000)name— searches product or variant namesku— filter by SKUproduct_id— filter by Shopify product IDvendor— filter by Shopify vendortag— filter by Shopify tagwith_assets— when truthy, include each row’s attached assets (see below)include_parents— when truthy, also return the parent row of every product that has variants (see below)
Which rows you get back
By default the list is variant-level: for a product with variants you get one row per variant, and for a product without variants you get its single product row. That’s the right shape for most catalog walks, since it’s one row per thing a customer can buy.
Add include_parents=1 to also get the parent row of each product that has variants. The parent row is the one a Shopify product ID resolves to when you attach an asset, so include it when you want to inspect or reconcile product-level attachments rather than variant-level ones.
Example request
# List all products (variant-level rows)
curl https://app.digital-downloads.com/api/v1/products \
-H "Authorization: Bearer YOUR_API_KEY"
# Include the parent row of every product that has variants
curl "https://app.digital-downloads.com/api/v1/products?include_parents=1" \
-H "Authorization: Bearer YOUR_API_KEY"
# Look up every row for one Shopify product
curl "https://app.digital-downloads.com/api/v1/products?product_id=123456789" \
-H "Authorization: Bearer YOUR_API_KEY"
Response — 200 OK
The response is a paginated flat list of rows, one per product or variant.
{
"data": [
{
"id": "d290f1ee-6c54-4b01-90e6-d701748f0851",
"name": "My new Book",
"variant_name": "Paper back",
"sku": "BOOK-PB",
"product_id": 123456789,
"variant_id": 987654321,
"vendor": "my-store",
"tags": ["ebook"]
}
],
"links": { "first": "...", "last": "...", "prev": null, "next": null },
"meta": { "current_page": 1, "per_page": 100, "total": 87, "last_page": 1 }
}
id— the Fileflare product UUID. Pass this in theproductsarray when attaching assets to a specific variant.name— the product name.variant_name— the variant name, ornullfor product-level rows.sku— the SKU.product_id— the Shopify product ID. Pass this inshopify_product_idswhen attaching at the product level.variant_id— the Shopify variant ID. Filter on this to pick the right row when a product has multiple variants.vendor— the Shopify vendor.tags— the Shopify tags array.
With attached assets
Add with_assets=1 to include an assets array on each row. Each asset is an object:
"assets": [
{
"id": "82664d96-6dfd-4343-96b0-05c46f412a5b",
"filename": "my-book.pdf",
"size": "10 MB",
"raw_size": 10485760,
"is_file": true,
"is_link": false,
"url": "https://..."
}
]
sizeis a human-readable string;raw_sizeis the size in bytes (nullfor URL assets).
Common errors
- 404 — the product isn’t on your store.