Public, read-only catalog

Every ingredient,
ready to plate.

Browse the names, aliases, categories, SVGs, raster sizes, and restricted motion paths used by PickedPlate. No API key. No tracking. No ingredient search leaves this page.

Connecting to the catalog… ingredients images categories version

Catalog explorer

Find an ingredient

Search names and aliases locally, filter the full catalog, then open any card for every available field and asset URL.

Loading ingredients…

Search stays in your browser

SVG motion lab

From paths to a moment

The same catalog drives a small selection bloom, path-by-path assembly, and a ranked ingredient montage. Reduce Motion is honored automatically.

Now animating Tomato
01

Selection bloom

The image arrives into a reserved slot, so a recipe row never jumps while loading.

03

Ranked montage

Up to twelve ingredients begin loading together, then settle into a staggered lineup.

Static API documentation

A tiny contract at the edge

This is not a search service or Worker endpoint. Clients discover one immutable release, verify it, cache it, and search locally.

1Discovercurrent.json
2Verifybytes + SHA-256
3Cacheimmutable version
4RenderSVG / WebP / PNG

Endpoints

Read-only resources

GET/ingredients/current.jsonShort-lived discovery pointer
GET/ingredients/v/<version>/catalog.jsonNames, aliases, categories, visual mappings
GET/ingredients/v/<version>/credits.jsonAttribution and modifications
GET/ingredients/v/<version>/provenance.jsonSource and derived checksums
GET/ingredients/v/<version>/icons/…SVG, motion JSON, WebP and PNG

JavaScript

Load the current release

const origin = "https://assets.pickedplate.com";
const pointer = await fetch(`${origin}/ingredients/current.json`, {
  credentials: "omit"
}).then(response => response.json());

const catalog = await fetch(pointer.catalogUrl, {
  credentials: "omit"
}).then(response => response.json());

Delivery contract

Fast, bounded, and boring

Authentication
None. Never send credentials.
Search
Local only; there is no query endpoint.
Pointer cache
5 minutes + stale revalidation.
Version cache
1 year, immutable.
Catalog limit
2 MiB; pointer limit 32 KiB.
Updates
New versioned keys; pointer published last.

Ingredient record

Schema at a glance

{
  "id": "tomato",
  "displayName": "Tomato",
  "aliases": ["fresh tomato", "tomatoes"],
  "category": "vegetables",
  "sourceIds": {
    "wikidata": null,
    "foodDataCentral": []
  },
  "visual": {
    "resolution": "exact",
    "svg": "icons/svg/…",
    "motion": "icons/motion/…",
    "raster": { "64": { "webp": "…", "png": "…" } }
  }
}

Content and rights

Know what you are using

The catalog combines PickedPlate-owned curation, licensed Food Icon Pack artwork under CC BY 4.0, and PickedPlate-owned original artwork. Public delivery is not a blanket third-party license for PickedPlate-owned assets.

Use the release’s generated credits, provenance, license text, and modification notices to determine the rights attached to a specific asset.