image service: photos and app icons, made on demand GET /healthz POST /v1/photos {runId, slots:[{id,caption}], generationCap, style?} 202 {job, statusUrl, slots:[{id,url,statusUrl}]} GET /v1/photos//status · /.jpg (302 | 202 pending | 404) · /.json?wait= GET /v1/images/ a stored picture (immutable) POST /v1/icon {name, pitch, audience, describe, accent, style, darkStyle, count, judge, letter, motif} app icon candidates; describe: the maker's words POST /v1/icon/restyle {symbolId | letter, name, text, font, style, accent, darkStyle, motif} a symbol in another style or color, free, content-hashed POST /v1/icon/appearances {symbolId | letter: {name, text, font, motif}, style, accent, darkStyle, tint} | {icon, tint} the icon as phones show it (256 px, masked), free, content-hashed GET /v1/icon/letter?name=&accent=&style=&motif=&mirrored= a Letter icon {iconId, symbolId, urls}, free, deterministic GET /v1/icons/.png one icon output (immutable, PNG, public) GET /api/admin/requests the request log (staff console)