---
title: "Batched version of GetFullProduct. Fetches multiple templates by id in a single request so callers don't have to fire one HTTP request per id (which was hitting rate limits when done via Promise.all on the client). Invalid, missing, or inaccessible ids are silently skipped instead of failing the whole batch."
method: POST
path: "/api/Product/GetProducts/ByIds"
tags: ["Templates"]
---

# Batched version of GetFullProduct. Fetches multiple templates by id in a single request so callers don't have to fire one HTTP request per id (which was hitting rate limits when done via Promise.all on the client). Invalid, missing, or inaccessible ids are silently skipped instead of failing the whole batch.

`POST /api/Product/GetProducts/ByIds`

## Request body

- GetProductsByIdsDTO
  - `ProductIds` string[], nullable
  - `UseListEPS` boolean

## Response `200`

---

[API](https://skmtc.dev/customily/apis/customily-design-studio-api.md) · [All operations](https://skmtc.dev/customily/apis/customily-design-studio-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/customily/customily-design-studio-api/revisions/01547a5f31d7/schema)
