Acoustic IndexAcoustic Index
SucheAPINachhallzeit Rechner
Für ProfessionalsFür Hersteller

API docs

Getting started

OverviewAuthenticationAccess and keys

API reference

Interactive referenceSearch materialsMaterial detailPublic endpoints

Operations

Errors and rate limits

Read API

Material detail

Load the full record for a single product, with descriptions, images, specs, and grouped acoustic measurements for every published test configuration.

What's inside

Everything you need about one product

This is the endpoint you reach for when the user has picked a material and you need all the substance: copy for your UI, media, specs, and the numbers your simulation or report engine actually needs.

What you get

Product description, structured specs (thickness, weight, fire class, and more), image URLs, and grouped acoustic measurements for absorption, scatter, and diffusion.

About measurements

Acoustic data lives under `measurements`, grouped by ISO norm: absorption (ISO 354), scatter (ISO 17497-1), and diffusion (ISO 17497-2). Each array can be empty independently.

Endpoint reference

GET /api/v1/materials/{id}

Pass a product UUID and get back the full record. Supports ETag caching, so repeat calls for unchanged data cost you almost nothing.

GET200 OK

Fetch full published detail

Load the full record for a single product: description, metadata, images, and grouped acoustic measurements for absorption, scatter, and diffusion.

/api/v1/materials/{id}
Unknown or unpublished IDs return `404 not_found`. Treat that as a normal outcome in your client.
`images` can be `null` and every `measurements.*` array can be empty independently.
Supports conditional requests: send `If-None-Match` with the previous `ETag` to get `304 Not Modified` when nothing has changed.

Request contract

Authorization

Bearer <api_key>

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

id

string

The product's identifier. Accepts either the canonical UUID or the human-readable slug (e.g. `fural-systeme-amp-p`) — both are returned by the search endpoint.

If-None-Match

string | optional

The `ETag` you received on a previous call. If the product hasn't changed, you'll get `304 Not Modified` with no body, which saves bandwidth.

Response contract

id

string

The product's canonical UUID.

slug

string

Human-readable, globally unique identifier. Stable for the lifetime of the product.

label

string

A ready-to-display label for the product.

commercial_name

string | null

The official marketing name, if the manufacturer has one.

manufacturer

string

The manufacturer's name as a flat string.

material_category

string | null

Broad material category, e.g. textile, metal, or wood.

installation_types

string[]

Where the product can be installed, e.g. `wall` or `ceiling`.

alpha_w

number | null

Weighted absorption coefficient (`α_w`) per ISO 11654, if available.

updated_at

string (ISO 8601) | null

When this product was last updated. Use it for incremental syncs.

description

string | null

Free-text product description from the manufacturer.

has_epd

boolean

`true` if an Environmental Product Declaration (EPD) is available for this product.

url

string | null

Link to the product page on the manufacturer's own website, if we have one.

epd_url

string | null

Direct link to the EPD document, when `has_epd` is `true`.

structured_meta

Record<string, string> | null

Additional specs as key/value strings (thickness, weight, fire class, etc.). Values are always strings, so parse numbers in your client.

images

array | null

Product images, or `null` when the product has no pictures yet.

measurements

object

Grouped acoustic measurements, split by published norm and coefficient family.

images[]

Product photos and renders. Sort by `display_order` before showing them to users.

id

string | undefined

A stable ID for this image, handy for React keys and cache busting.

url

string

Direct URL to the image. You can hotlink it or proxy it through your own CDN.

filename

string | null

The original filename, when we have it. Useful as an `alt` fallback.

display_order

number | null

Suggested sort order, lowest first. `null` means no preference.

measurements

All arrays are always present. Any individual array may be empty when that measurement family is not published for the product.

absorption_iso_354

array

Absorption measurements serialized from ISO 354-style coefficient data.

scatter_iso_17497_1

array

Scatter coefficients from ISO 17497-1 style measurements.

diffusion_iso_17497_2

array

Diffusion coefficients from ISO 17497-2 style measurements.

measurements.absorption_iso_354[]

Each entry is one absorption test configuration: mounting, thickness, air gap, and the absorption coefficients that setup produced.

id

string

Stable ID for this measurement entry. Safe to use as a React key.

label

string

A short human-readable label, e.g. `Absorption 1`.

source_kind

string

Where the numbers came from: `measured`, `literature`, or `simulated`.

source_norm

string

The measurement standard. For this array it is currently `ISO 354`.

measuring_option

string | null

Additional lab option recorded with the measurement, when one was given.

mounting

string | null

How the specimen was mounted in the lab, e.g. `wall`, `ceiling`, or `free-standing`.

thickness_mm

number | null

Thickness of the tested specimen, in millimetres.

air_gap_mm

number | null

Air gap behind the specimen during the test, in millimetres.

calculated_absorption

number | null

A summary absorption value for this test configuration, if the lab reported one.

alpha_s_octave

Record<string, number> | null

Octave-band absorption coefficients. Keys are frequencies in Hz as strings (e.g. `"125"`), values are the coefficients.

alpha_s_third_octave

Record<string, number> | null

Third-octave absorption coefficients. Same shape as `alpha_s_octave`, just with more frequency bands.

measurements.scatter_iso_17497_1[]

Scatter coefficient measurements for diffusors and other scattering surfaces.

id

string

Stable ID for this measurement entry.

label

string

A short human-readable label, e.g. `Scatter 1`.

source_kind

string

Where the numbers came from: `measured`, `literature`, or `simulated`.

source_norm

string

The measurement standard. For this array it is currently `ISO 17497-1`.

measuring_option

string | null

Additional lab option recorded with the measurement, when one was given.

scatter_octave

Record<string, number> | null

Octave-band scatter coefficients. Keys are frequencies in Hz as strings.

scatter_third_octave

Record<string, number> | null

Third-octave scatter coefficients.

measurements.diffusion_iso_17497_2[]

Diffusion coefficient measurements, including normalized and directional values when available.

id

string

Stable ID for this measurement entry.

label

string

A short human-readable label, e.g. `Diffusion 1`.

source_kind

string

Where the numbers came from. Today this is always `measured`.

source_norm

string

The measurement standard. For this array it is currently `ISO 17497-2`.

measuring_option

string | null

Additional lab option recorded with the measurement, when one was given.

limit_frequency_hz

number | null

Lower validity limit `fG` in Hz, when provided by the lab.

directional_diffusion_octave

Record<string, number> | null

Directional diffusion coefficients in octave bands.

directional_diffusion_third_octave

Record<string, number> | null

Directional diffusion coefficients in third-octave bands.

normalized_directional_diffusion_octave

Record<string, number> | null

Directional diffusion coefficients normalized against a flat reference, in octave bands.

normalized_directional_diffusion_third_octave

Record<string, number> | null

Directional diffusion coefficients normalized against a flat reference, in third-octave bands.

diffusion_octave

Record<string, number> | null

Octave-band diffusion coefficients.

diffusion_third_octave

Record<string, number> | null

Third-octave diffusion coefficients.

normalized_diffusion_octave

Record<string, number> | null

Octave-band diffusion coefficients normalized against a flat reference.

normalized_diffusion_third_octave

Record<string, number> | null

Third-octave diffusion coefficients normalized against a flat reference.

Request example

# Look up by UUID or by slug — both work.
curl "https://acousticindex.com/api/v1/materials/fural-systeme-amp-p" \
  -H "Authorization: Bearer YOUR_API_KEY"

Response example

{
  "id": "11111111-2222-3333-4444-555555555555",
  "slug": "fural-systeme-amp-p",
  "label": "Acoustic panel",
  "commercial_name": "Panel 50",
  "manufacturer": "Acme Acoustic",
  "material_category": "textile",
  "installation_types": ["wall"],
  "alpha_w": 0.85,
  "updated_at": "2026-04-01T10:00:00.000Z",
  "description": "Textile wall absorber for interiors.",
  "has_epd": true,
  "url": "https://example.com/product",
  "epd_url": "https://example.com/epd.pdf",
  "structured_meta": {
    "thickness": "50 mm"
  },
  "images": [
    {
      "id": "IMAGE_ID",
      "url": "https://example.com/panel-50.jpg",
      "filename": "panel-50.jpg",
      "display_order": 1
    }
  ],
  "measurements": {
    "absorption_iso_354": [
      {
        "id": "iso354-1",
        "label": "Absorption 1",
        "source_kind": "measured",
        "source_norm": "ISO 354",
        "measuring_option": null,
        "mounting": "wall",
        "thickness_mm": 50,
        "air_gap_mm": 0,
        "calculated_absorption": 0.85,
        "alpha_s_octave": { "125": 0.35, "250": 0.70 },
        "alpha_s_third_octave": { "100": 0.20, "125": 0.35 }
      }
    ],
    "scatter_iso_17497_1": [
      {
        "id": "scatter-1",
        "label": "Scatter 1",
        "source_kind": "measured",
        "source_norm": "ISO 17497-1",
        "measuring_option": "measured",
        "scatter_octave": { "500": 0.55, "1000": 0.72 },
        "scatter_third_octave": { "400": 0.42, "500": 0.55 }
      }
    ],
    "diffusion_iso_17497_2": [
      {
        "id": "diffusion-1",
        "label": "Diffusion 1",
        "source_kind": "measured",
        "source_norm": "ISO 17497-2",
        "measuring_option": "measured",
        "limit_frequency_hz": 500,
        "directional_diffusion_octave": null,
        "directional_diffusion_third_octave": null,
        "normalized_directional_diffusion_octave": null,
        "normalized_directional_diffusion_third_octave": null,
        "diffusion_octave": { "500": 0.48, "1000": 0.65 },
        "diffusion_third_octave": { "400": 0.35, "500": 0.48 },
        "normalized_diffusion_octave": { "500": 0.62, "1000": 0.80 },
        "normalized_diffusion_third_octave": { "400": 0.48, "500": 0.62 }
      }
    ]
  }
}

Behavior

A few things to keep in mind

Small details about nullable fields, ETag caching, and how to read grouped acoustic measurements safely.

Cache responses with ETag

Every detail response comes with an `ETag` header. Send it back as `If-None-Match` on your next call to get a `304 Not Modified` when nothing changed. That saves you bandwidth and a JSON parse.

`structured_meta` is a flat string map

Extra specs like thickness or weight come as a `Record<string, string>`. Both keys and values are always strings, so convert to numbers in your client if you need them.

`images` may be `null`

You get `null` when the product has no images yet. Otherwise it is a flat list with a URL and optional display metadata you can use to order them.

`measurements` is the authoritative acoustic payload

Acoustic data is grouped by norm under `measurements`. Each array can be empty independently, so a diffuser can have scatter and diffusion data even when the absorption array is empty.

Do not hard-code `source_norm`

Each measurement entry carries its own `source_norm`. Read that value from the response instead of assuming a fixed standard from the field name alone.

Acoustic IndexAcoustic Index

Die Datenbank für akustische Materialkennwerte. Professionelle Messdaten nach ISO-Normen.

Produkte

  • Absorber
  • Diffusoren
  • Alle Produkte

Unternehmen

  • Über uns
  • Kontakt
  • Für Hersteller

Werkzeuge

  • Read API
  • Nachhallzeit Rechner

Rechtliches

  • Impressum
  • Datenschutz
  • AGB
  • Nutzungsbedingungen

© 2026 Acoustic Index. Alle Rechte vorbehalten.