Read API

Batch fetch

Hydrate many products at once. Pass up to 50 ids and get the full detail record for each in a single round trip, counted as one request against your rate limit.

When to use it

One request instead of fifty

Reach for this when you already have a set of product identifiers, for example to render a comparison view or to refresh a server-side cache from your nightly sync, and you want their full records without a request per product.

Mixed identifiers

Each id can be a UUID or a slug, just like the detail endpoint. Comma-separate them or repeat the `ids` parameter.

Partial matches are normal

Unknown or unpublished identifiers come back in `missing` rather than failing the whole request, so you always get every product that did resolve.

Endpoint reference

GET /api/v1/materials?ids=

Up to 50 UUIDs or slugs per call. The response carries the full detail record for each published match plus a list of identifiers that did not resolve.

GET200 OK

Fetch several materials at once

Batch-load full detail for up to 50 products in a single request. Ideal for hydrating a comparison view or a server-side cache without one request per product.

/api/v1/materials
Pass identifiers via `ids`, comma-separated or as repeated params. Each accepts a UUID or a slug, just like the detail endpoint.
Maximum 50 ids per request. More than that returns `400 invalid_request`; an empty list returns `400 missing_ids`.
Unknown or unpublished identifiers come back in `missing` instead of raising an error, so a partial match is a normal outcome.
Counts as one request against your rate limit, no matter how many ids you pass.

Request contract

Authorization

Bearer <api_key>

Your API key, sent in the `Authorization` header on every request.

ids

string

Up to 50 product UUIDs or slugs. Comma-separate (`?ids=a,b,c`) or repeat the parameter (`?ids=a&ids=b`).

Response contract

items

array

One full material detail record per published match, in the order requested. Same shape as `GET /materials/{id}`.

missing

string[]

The requested identifiers that had no published match. Empty when everything resolved.

Request example

curl "https://acousticindex.com/api/v1/materials?ids=fural-systeme-amp-p,20000000-0000-4000-8000-000000000006" \
  -H "Authorization: Bearer YOUR_API_KEY"

Response example

{
  "items": [
    {
      "id": "11111111-2222-3333-4444-555555555555",
      "slug": "fural-systeme-amp-p",
      "label": "Acoustic panel",
      "manufacturer": "Acme Acoustic",
      "alpha_w": 0.85,
      "nrc": 0.85,
      "saa": 0.82,
      "measurements": { "absorption_iso_354": [], "scatter_iso_17497_1": [], "diffusion_iso_17497_2": [] }
    }
  ],
  "missing": ["20000000-0000-4000-8000-000000000006"]
}