{"openapi":"3.1.0","info":{"title":"Acoustic Index Read API","version":"1.2.0","summary":"Structured acoustic material data with absorption, scatter, and diffusion measurements.","description":"Read-only API for published acoustic material data. Returns grouped acoustic measurements (ISO 354 absorption, ISO 17497-1 scatter, ISO 17497-2 diffusion), material metadata, and product details for acoustic simulation software, planning tools, AI agents, and MCP servers.\n\nTwo access modes:\n\n- **Authenticated** (/api/v1/materials/*) returns the full manufacturer dataset. Needs an API key created on the /api/access page after beta approval. Rate-limited per user account (60/min, 1,000/day).\n- **Public** (/api/public/*) mirrors what the website itself uses on the /suche page. No API key, no approval. Rate-limited per IP (120/min).","contact":{"name":"Acoustic Index","url":"https://acousticindex.com/api"},"termsOfService":"https://acousticindex.com/agb"},"servers":[{"url":"https://acousticindex.com/api"}],"tags":[{"name":"materials","description":"Acoustic materials and products with grouped acoustic measurements (absorption, scatter, diffusion)."},{"name":"public","description":"Unauthenticated endpoints. No API key required. Lowest-friction entry point for AI agents, MCP servers, and Custom GPTs."},{"name":"auth","description":"Authenticated endpoints. Require a Bearer API key created on the /api/access page (beta approval required)."}],"security":[{"bearerAuth":[]}],"paths":{"/v1/materials/search":{"get":{"operationId":"searchMaterials","tags":["materials","auth"],"summary":"Search published acoustic materials (authenticated)","description":"Returns a paginated, ranked list of summary records for published acoustic materials. Follow up with getMaterial to fetch full measurements for a specific product.","security":[{"bearerAuth":[]}],"parameters":[{"name":"q","in":"query","schema":{"type":"string"},"description":"Free-text search across product name, manufacturer, and description."},{"name":"page","in":"query","schema":{"type":"integer","default":0,"minimum":0},"description":"Zero-based page index."},{"name":"limit","in":"query","schema":{"type":"integer","default":20,"minimum":1,"maximum":50},"description":"Page size (max 50)."}],"responses":{"200":{"description":"Search results","headers":{"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/MaterialSummary"}},"page":{"type":"integer"},"limit":{"type":"integer"},"total_count":{"type":"integer","description":"Total matching materials across all pages."},"has_more":{"type":"boolean","description":"Whether more pages exist."}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"$ref":"#/components/responses/ServiceUnavailable"}}}},"/v1/materials/{id}":{"get":{"operationId":"getMaterial","tags":["materials","auth"],"summary":"Fetch full published detail for one material (authenticated)","description":"Returns the complete product record including metadata, images, and grouped acoustic measurements for absorption (ISO 354), scatter (ISO 17497-1), and diffusion (ISO 17497-2). Supports conditional requests via ETag. The `{id}` parameter accepts either the canonical UUID or the human-readable slug (e.g. `gik-acoustics-244-bass-trap`). Slugs are globally unique and stable.","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Material UUID or human-readable slug. Examples: `20000000-0000-4000-8000-000000000006` or `gik-acoustics-244-bass-trap`."},{"name":"If-None-Match","in":"header","schema":{"type":"string"},"description":"ETag from a previous response. Returns 304 when the product has not changed."}],"responses":{"200":{"description":"Material detail","headers":{"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"},"ETag":{"schema":{"type":"string"},"description":"Content hash for conditional requests."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MaterialDetail"}}}},"304":{"description":"Not modified. ETag matched, no response body.","headers":{"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"$ref":"#/components/responses/ServiceUnavailable"}}}},"/public/search":{"get":{"operationId":"searchPublicProducts","tags":["materials","public"],"summary":"Search published products (public, no API key)","description":"Unauthenticated product search. Returns the same result set used by the public /suche page, including facet counts and query metadata. Use this endpoint when you want the lowest-friction path for AI agents, MCP servers, or Custom GPTs that cannot go through the Read API beta approval flow.","security":[],"parameters":[{"name":"q","in":"query","schema":{"type":"string"},"description":"Free-text search query across product name, manufacturer, and description."},{"name":"kaufbar","in":"query","schema":{"type":"boolean"},"description":"Only products available for purchase (excludes PTB reference data)."},{"name":"type","in":"query","schema":{"type":"string"},"description":"Installation type filter. Multi-value via comma-separated or repeated parameters. Examples: wall, ceiling, free-standing."},{"name":"categories","in":"query","schema":{"type":"string"},"description":"Material category filter (multi-value, comma-separated)."},{"name":"characters","in":"query","schema":{"type":"string"},"description":"Absorption character filter (multi-value, comma-separated)."},{"name":"manufacturers","in":"query","schema":{"type":"string"},"description":"Manufacturer filter by slug or UUID (multi-value, comma-separated)."},{"name":"min","in":"query","schema":{"type":"number","minimum":0,"maximum":1},"description":"Minimum weighted absorption coefficient (alpha_w)."},{"name":"max","in":"query","schema":{"type":"number","minimum":0,"maximum":1},"description":"Maximum weighted absorption coefficient (alpha_w)."},{"name":"epd","in":"query","schema":{"type":"boolean"},"description":"Only products with an Environmental Product Declaration (EPD)."},{"name":"sort","in":"query","schema":{"type":"string","enum":["relevance","alphaW_desc","alphaW_asc","date_desc","name_asc"]},"description":"Result ordering."},{"name":"page","in":"query","schema":{"type":"integer","default":0,"minimum":0},"description":"Zero-based page index."}],"responses":{"200":{"description":"Public search results with facet counts and query metadata.","headers":{"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicSearchResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"$ref":"#/components/responses/ServiceUnavailable"}}}},"/public/compare-products":{"get":{"operationId":"comparePublicProducts","tags":["materials","public"],"summary":"Compare up to four published products side by side (public, no API key)","description":"Fetches compact compare records for up to four products identified by UUID. Returns each product's manufacturer, alpha_w range, EPD status, installation types, structured metadata, and ISO 354 absorption measurements.","security":[],"parameters":[{"name":"id","in":"query","required":true,"description":"Product UUID. Repeat the parameter or comma-separate values to compare up to four products.","schema":{"type":"array","maxItems":4,"items":{"type":"string","format":"uuid"}},"style":"form","explode":true}],"responses":{"200":{"description":"Compare products response","headers":{"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"}},"content":{"application/json":{"schema":{"type":"object","properties":{"products":{"type":"array","items":{"$ref":"#/components/schemas/CompareProduct"}}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"$ref":"#/components/responses/ServiceUnavailable"}}}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Opaque API key created on the /api/access page."}},"schemas":{"MaterialSummary":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"slug":{"type":"string","nullable":true,"description":"Human-readable, globally unique identifier (e.g. `fural-systeme-amp-p`). Accepted as the path parameter for `GET /v1/materials/{id}` and stable for the lifetime of the product."},"label":{"type":"string"},"commercial_name":{"type":"string","nullable":true},"manufacturer":{"type":"string"},"material_category":{"type":"string","nullable":true},"installation_types":{"type":"array","items":{"type":"string"}},"alpha_w":{"type":"number","nullable":true,"description":"Weighted absorption coefficient per ISO 11654. Null when no measurement is published."},"updated_at":{"type":"string","format":"date-time","nullable":true}},"example":{"id":"11111111-2222-3333-4444-555555555555","slug":"fural-systeme-in-metall-gmbh-akustikdecke-amp-p","label":"FURAL Akustikdecke AMP-P","commercial_name":"AMP-P","manufacturer":"FURAL Systeme in Metall GmbH","material_category":"metal","installation_types":["ceiling"],"alpha_w":0.85,"updated_at":"2026-04-01T10:00:00.000Z"}},"MaterialDetail":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"slug":{"type":"string","nullable":true,"description":"Human-readable, globally unique identifier. Accepted as the path parameter for `GET /v1/materials/{id}`."},"label":{"type":"string"},"commercial_name":{"type":"string","nullable":true},"manufacturer":{"type":"string"},"material_category":{"type":"string","nullable":true},"installation_types":{"type":"array","items":{"type":"string"}},"alpha_w":{"type":"number","nullable":true},"updated_at":{"type":"string","format":"date-time","nullable":true},"description":{"type":"string","nullable":true},"has_epd":{"type":"boolean"},"url":{"type":"string","nullable":true},"epd_url":{"type":"string","nullable":true},"structured_meta":{"type":"object","additionalProperties":{"type":"string"},"nullable":true},"images":{"type":"array","nullable":true,"items":{"type":"object","properties":{"id":{"type":"string"},"url":{"type":"string"},"filename":{"type":"string","nullable":true},"display_order":{"type":"integer","nullable":true}}}},"measurements":{"$ref":"#/components/schemas/MaterialMeasurementGroups"}},"example":{"id":"11111111-2222-3333-4444-555555555555","slug":"fural-systeme-in-metall-gmbh-akustikdecke-amp-p","label":"FURAL Akustikdecke AMP-P","commercial_name":"AMP-P","manufacturer":"FURAL Systeme in Metall GmbH","material_category":"metal","installation_types":["ceiling"],"alpha_w":0.85,"updated_at":"2026-04-01T10:00:00.000Z","description":"Perforated metal ceiling panel with mineral fleece backing.","has_epd":true,"url":"https://fural.com/amp-p","epd_url":"https://fural.com/epd/amp-p.pdf","structured_meta":{"thickness":"15 mm","fire_class":"A2"},"images":[{"id":"img-1","url":"https://cdn.acousticindex.com/products/amp-p-1.jpg","filename":"amp-p-1.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":"A","thickness_mm":15,"air_gap_mm":200,"calculated_absorption":0.85,"alpha_s_octave":{"125":0.45,"250":0.75,"500":0.95,"1000":0.9,"2000":0.85,"4000":0.8},"alpha_s_third_octave":null}],"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.8},"normalized_diffusion_third_octave":{"400":0.48,"500":0.62}}]}}},"MaterialMeasurementGroups":{"type":"object","description":"Authoritative grouped acoustic measurements. Each array may be empty independently.","properties":{"absorption_iso_354":{"type":"array","items":{"$ref":"#/components/schemas/MaterialAbsorptionMeasurement"}},"scatter_iso_17497_1":{"type":"array","items":{"$ref":"#/components/schemas/MaterialScatterMeasurement"}},"diffusion_iso_17497_2":{"type":"array","items":{"$ref":"#/components/schemas/MaterialDiffusionMeasurement"}}},"required":["absorption_iso_354","scatter_iso_17497_1","diffusion_iso_17497_2"]},"MaterialAbsorptionMeasurement":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string","description":"Short human-readable label, e.g. 'Absorption 1'."},"source_kind":{"type":"string","enum":["measured","literature","simulated"],"description":"Where the numbers came from."},"source_norm":{"type":"string","enum":["ISO 354"],"description":"Measurement standard for this entry."},"measuring_option":{"type":"string","nullable":true},"mounting":{"type":"string","nullable":true,"description":"How the specimen was mounted in the lab, e.g. A, B, E, G, I, J per ISO 354."},"thickness_mm":{"type":"number","nullable":true,"description":"Thickness of the tested specimen in millimetres."},"air_gap_mm":{"type":"number","nullable":true,"description":"Air gap behind the specimen in millimetres."},"calculated_absorption":{"type":"number","nullable":true,"description":"Summary absorption value reported by the lab for this configuration, if any."},"alpha_s_octave":{"type":"object","description":"Octave-band absorption coefficients. Keys are frequencies in Hz as strings (e.g. '125'), values are the coefficients.","additionalProperties":{"type":"number"},"nullable":true},"alpha_s_third_octave":{"type":"object","description":"Third-octave absorption coefficients. Same shape as alpha_s_octave, just with more frequency bands.","additionalProperties":{"type":"number"},"nullable":true}}},"MaterialScatterMeasurement":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string","description":"Short human-readable label, e.g. 'Scatter 1'."},"source_kind":{"type":"string","enum":["measured","literature","simulated"],"description":"Where the numbers came from."},"source_norm":{"type":"string","enum":["ISO 17497-1"],"description":"Measurement standard for this entry."},"measuring_option":{"type":"string","nullable":true},"scatter_octave":{"type":"object","additionalProperties":{"type":"number"},"nullable":true,"description":"Octave-band scatter coefficients."},"scatter_third_octave":{"type":"object","additionalProperties":{"type":"number"},"nullable":true,"description":"Third-octave scatter coefficients."}}},"MaterialDiffusionMeasurement":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string","description":"Short human-readable label, e.g. 'Diffusion 1'."},"source_kind":{"type":"string","enum":["measured"],"description":"Where the numbers came from."},"source_norm":{"type":"string","enum":["ISO 17497-2"],"description":"Measurement standard for this entry."},"measuring_option":{"type":"string","nullable":true},"limit_frequency_hz":{"type":"number","nullable":true,"description":"Lower validity limit fG in Hz, when provided by the lab."},"directional_diffusion_octave":{"type":"object","additionalProperties":{"type":"number"},"nullable":true,"description":"Directional diffusion coefficients in octave bands."},"directional_diffusion_third_octave":{"type":"object","additionalProperties":{"type":"number"},"nullable":true,"description":"Directional diffusion coefficients in third-octave bands."},"normalized_directional_diffusion_octave":{"type":"object","additionalProperties":{"type":"number"},"nullable":true,"description":"Directional diffusion coefficients normalized against a flat reference, in octave bands."},"normalized_directional_diffusion_third_octave":{"type":"object","additionalProperties":{"type":"number"},"nullable":true,"description":"Directional diffusion coefficients normalized against a flat reference, in third-octave bands."},"diffusion_octave":{"type":"object","additionalProperties":{"type":"number"},"nullable":true,"description":"Octave-band diffusion coefficients."},"diffusion_third_octave":{"type":"object","additionalProperties":{"type":"number"},"nullable":true,"description":"Third-octave diffusion coefficients."},"normalized_diffusion_octave":{"type":"object","additionalProperties":{"type":"number"},"nullable":true,"description":"Octave-band diffusion coefficients normalized against a flat reference."},"normalized_diffusion_third_octave":{"type":"object","additionalProperties":{"type":"number"},"nullable":true,"description":"Third-octave diffusion coefficients normalized against a flat reference."}}},"PublicSearchResult":{"type":"object","properties":{"products":{"type":"array","items":{"$ref":"#/components/schemas/PublicSearchProduct"}},"total":{"type":"integer"},"hasMore":{"type":"boolean"},"page":{"type":"integer"},"facets":{"$ref":"#/components/schemas/PublicSearchFacets"},"queryMeta":{"type":"object","properties":{"normalizedQuery":{"type":"string"},"usedFallback":{"type":"boolean"},"matchedStrategy":{"type":"string","enum":["none","exact","prefix","category","phrase","fts","fuzzy","trigram"],"description":"Bucket label for the top result. See SearchQueryMeta in published-reader.ts for the full definition."},"zeroResults":{"type":"boolean"}}}}},"PublicSearchProduct":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"slug":{"type":"string"},"label":{"type":"string","description":"Locale-resolved display label. The reader applies the user's preferred locale before serialisation; pass `?locale=en` to receive English where translations exist, otherwise the German source label is returned."},"commercial_name":{"type":"string","nullable":true},"data_source":{"type":"string","nullable":true,"description":"Either 'manufacturer' or 'ptb' (reference material)."},"material_category":{"type":"string","nullable":true},"absorption_character":{"type":"string","nullable":true},"installation_types":{"type":"array","nullable":true,"items":{"type":"string"}},"has_epd":{"type":"boolean"},"manufacturerName":{"type":"string"},"alphaW":{"type":"number"},"alphaWMin":{"type":"number"},"imageUrl":{"type":"string","nullable":true},"url":{"type":"string","nullable":true},"epd_url":{"type":"string","nullable":true},"variant_count":{"type":"integer","nullable":true},"structured_meta":{"type":"object","additionalProperties":{"type":"string"},"nullable":true}}},"PublicSearchFacets":{"type":"object","description":"Facet counts used to render filters on the public /suche page.","properties":{"materialCategories":{"type":"array","items":{"$ref":"#/components/schemas/FacetBucket"}},"absorptionCharacters":{"type":"array","items":{"$ref":"#/components/schemas/FacetBucket"}},"installationTypes":{"type":"array","items":{"$ref":"#/components/schemas/FacetBucket"}},"manufacturers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string","nullable":true},"name":{"type":"string"},"count":{"type":"integer"}}}},"hasEPD":{"type":"object","properties":{"true":{"type":"integer"},"false":{"type":"integer"}}},"purchasableOnly":{"type":"object","properties":{"true":{"type":"integer"},"false":{"type":"integer"}}}}},"FacetBucket":{"type":"object","properties":{"value":{"type":"string"},"count":{"type":"integer"}}},"CompareProduct":{"type":"object","description":"Compact comparable record used by the public /suche compare UI.","properties":{"id":{"type":"string","format":"uuid"},"slug":{"type":"string"},"label":{"type":"string"},"commercial_name":{"type":"string","nullable":true},"material_category":{"type":"string","nullable":true},"absorption_character":{"type":"string","nullable":true},"data_source":{"type":"string","nullable":true},"alphaW":{"type":"number"},"alphaWMin":{"type":"number"},"manufacturerName":{"type":"string"},"has_epd":{"type":"boolean"},"url":{"type":"string","nullable":true},"epd_url":{"type":"string","nullable":true},"installation_types":{"type":"array","nullable":true,"items":{"type":"string"}},"structured_meta":{"type":"object","additionalProperties":{"type":"string"},"nullable":true},"absorption_iso354":{"type":"array","description":"ISO 354 absorption measurements for this product.","items":{"type":"object","additionalProperties":true}}}},"ErrorResponse":{"type":"object","required":["error","message"],"properties":{"error":{"type":"string","enum":["invalid_request","invalid_token","token_revoked","token_paused","token_expired","partner_inactive","partner_not_allowed","not_found","missing_ids","rate_limit_exceeded","rate_limit_unavailable","internal_error"],"description":"Machine-readable error code. Branch on this value in client code."},"message":{"type":"string","description":"Human-readable explanation. Safe to log, not localized."}},"example":{"error":"invalid_token","message":"API key is missing or invalid."}}},"responses":{"BadRequest":{"description":"Invalid request. Error codes: invalid_request, missing_ids.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Unauthorized":{"description":"Missing or malformed API key. Error code: invalid_token.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"Forbidden":{"description":"Your key exists but cannot be used right now. Error codes:\n- token_revoked, token_paused, token_expired: the key itself is blocked\n- partner_inactive: the partner account the key belongs to has been disabled\n- partner_not_allowed: the key is valid but not scoped to this API","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"NotFound":{"description":"The requested product is unknown or not published. Error code: not_found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"RateLimited":{"description":"Rate limit exceeded. Error code: rate_limit_exceeded. Wait until Retry-After seconds before retrying.","headers":{"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"X-Request-Id":{"$ref":"#/components/headers/XRequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"InternalError":{"description":"Something went wrong on the server. Error code: internal_error. Retry after a short delay and include the X-Request-Id in any bug report.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"ServiceUnavailable":{"description":"The rate-limit service is temporarily unavailable. Error code: rate_limit_unavailable. Retry after a short delay.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"headers":{"RateLimitPolicy":{"description":"Server rate-limit policy. Example: 60;w=60, 1000;w=86400","schema":{"type":"string"}},"RateLimitLimit":{"description":"Maximum requests allowed in the current window.","schema":{"type":"integer"}},"RateLimitRemaining":{"description":"Requests remaining in the current window.","schema":{"type":"integer"}},"RateLimitReset":{"description":"Seconds until the current window resets.","schema":{"type":"integer"}},"RetryAfter":{"description":"Seconds to wait before retrying. Sent with 429 responses.","schema":{"type":"integer"}},"XRequestId":{"description":"Unique request identifier for tracing. Include in bug reports.","schema":{"type":"string","format":"uuid"}}}}}