Developers
Attraction publishes a read-only public Product API and Markdown mirrors of this site so people and AI agents can bring current product data and company context into their own tools. This page is the starting point; the full API reference covers every endpoint, parameter, and response field.
Start here
GET /v1/products?locale=en-US
curl "https://api.attraction.com/v1/products?locale=en-US"- Full endpoint reference: attraction.com/en-us/api/
- OpenAPI description: api.attraction.com/openapi.json
- No API key is required for public product data.
Authentication
Public product data needs no key and no signed-in account: product lists, product detail, colors, sizes, live inventory, MSRP pricing, images, and decoration compatibility are all open reads. Account API keys for distributor net pricing are not available yet; the API keys page stays hidden until that ships.
Rate limits
Every response from /v1/products and /v1/products/{sku} carries rate-limit headers for a policy named default: 600 requests per minute per client IP. This count is advisory and tracked per API instance, not a single global counter, so do not size an integration against 600/min as a guarantee. Infrastructure also enforces a hard backstop of 100 requests per second (burst 200) regardless of the advisory count. Always honor Retry-After on a 429. These follow draft-ietf-httpapi-ratelimit-headers. Requests over the limit get a 429 with Retry-After and a rate_limited error.
RateLimit-Policy: "default";q=600;w=60RateLimit: "default";r=<remaining>;t=<seconds>
Catalog routes also serve gzip: send Accept-Encoding: gzip and the roughly 274 KB product list compresses to about 24 KB.
Versioning and deprecation
The API is versioned in the URL: today's endpoints are under /v1. Breaking changes ship as /v2 rather than changing /v1 in place; additive changes, such as a new field or a new optional parameter, never bump the version.
When a version is deprecated, we announce it at least three months ahead and mark every response with a Deprecation header (RFC 9745) and a Sunset header (RFC 8594) naming the retirement date.
Errors
Errors are RFC 9457 problem+json objects, served as application/problem+json:
product_not_found — 404
{
"type": "https://www.attraction.com/developers/#error-product_not_found",
"title": "Product not found",
"status": 404,
"detail": "No product matches SKU NOPE-NOT-A-SKU.",
"instance": "/v1/products/nope-not-a-sku",
"code": "product_not_found"
}Each code below has its own type URI on this page: https://www.attraction.com/developers/#error-<code>.
route_not_found — 404
No route matches the request path.
method_not_allowed — 405
The route exists but not for that HTTP method. The response carries Allow: GET, HEAD, OPTIONS.
invalid_request — 400
The request does not match what the route expects, for example a malformed query parameter.
unsupported_locale — 400
locale must be en-CA, en-US, or fr-CA.
invalid_sku — 400
The sku path parameter is not a valid SKU.
unauthorized — 401
Reserved for the private /v1/sync/* routes; the public product endpoints never return this.
product_not_found — 404
No product matches the given SKU.
rate_limited — 429
The client is over the rate-limit policy. The response carries Retry-After and the RateLimit/RateLimit-Policy headers.
upstream_unavailable — 503
The catalog source is temporarily unreachable. The response carries Retry-After: 30.
internal_error — 500
An unexpected server error, with no stack trace or internal detail in the response.
Agent resources
- Send
Accept: text/markdownto any page URL, or append.md, for example attraction.com/products.md, for a Markdown copy of that page. - llms.txt and llms-full.txt index the site for language models and agents.
- .well-known/api-catalog lists the API's machine-readable entry points (RFC 9727).
- .well-known/agent-skills/index.json publishes Agent Skills for the Product API and the site's Markdown pages.
Status and support
/v1/health reports API status. For anything else, reach the team at customerservice@attraction.com.
Changelog
- 2026-08-24 — Published this developer hub. Error responses moved to RFC 9457
application/problem+json; added rate-limit headers and a versioning and deprecation policy. - 2026-06-26 — Official launch: the read-only public Product API at api.attraction.com — product list and detail under
/v1, no key required — with its OpenAPI description and interactive documentation.