Apstraco

For developers & agents

Apstraco — apparel cost & tariff intelligence.

Developer resources

Everything on this page is public, unauthenticated, and machine-readable. For questions or data partnerships, write to the support address on the contact page.

Machine-readable files

/openapi.json — OpenAPI 3.1 spec of the public endpoints (catalog overrides, market snapshot, cron gate).

/llms.txt — agent index with when-to-use guidance for the product.

/sitemap.xml — all public routes.

Content negotiation

Every page listed in the sitemap also serves a markdown representation: send Accept: text/markdown and you get text/markdown; charset=utf-8 back, with Vary: Accept, Accept-Encoding set so caches keep the variants apart. Requests that accept only concrete non-text types receive 406 Not Acceptable. Unknown paths return a real 404 whose body lists recovery resources.

CLI

A zero-dependency CLI wraps the public endpoints for scripting:

node bin/apstraco.mjs market · node bin/apstraco.mjs overrides · node bin/apstraco.mjs page /privacy — source lives in the repository at bin/apstraco.mjs (npm publication pending).

Public endpoints (no session required)

GET /api/catalog-overrides — operator-curated catalog mapping overrides as JSON ({ overrides: [...] }).

GET /api/market — latest market intel snapshot keyed by feed name (FX rates per sourcing country, fabric and freight references); fails soft when a feed degrades.

GET /api/warm — cache warmer; shared-secret protected, so public callers get 401 by design.

Authenticated surfaces

The costing workspace (/calculator), saved scenarios, and admin tools require a Supabase cookie session — they are product surfaces, not public API, and are intentionally outside the OpenAPI spec. Anonymous visitors are bounced to /login; agents requesting markdown on those paths receive a markdown 401 pointing at this page.