GET /avatar

Generate deterministic African-style silhouette profile pictures on the fly. No AI inference — all avatars are composed from layered SVG paths at request time. The same parameters always return the same image.

GET/v1/avatar
Returns an SVG or PNG silhouette avatar. Pass a seed tied to your user (e.g. their ID or email) to get a consistent avatar across requests.
NameTypeDefaultDescription
genderstringneutralSilhouette gender variant. One of: male, female, neutral.
stylestringseededHair style. One of: cornrows, gele, afro, dreadlocks, twa, fade, natural. Derived from seed when omitted.
widthint200Output width in pixels. Min 1, max 2000.
heightint200Output height in pixels. Min 1, max 2000.
bgstringF5F5F5Background colour - 6-character hex without #.
fgstring333333Silhouette colour - 6-character hex without #.
seedstringrandomAny string (e.g. user ID or email). Same seed always produces the same output. Auto-generated when omitted.
formatstringsvgOutput format. One of: svg, png.
GET /v1/avatar?seed=user_12345&gender=female&style=gele&width=200&height=200
HTTP/1.1 200 OK
Content-Type: image/svg+xml
Cache-Control: public, max-age=86400

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200" width="200" height="200">
  <!-- background, body, head, hair layers -->
</svg>
GET/v1/avatar?format=png
Rasterises the SVG silhouette to PNG.
GET /v1/avatar?seed=user_12345&style=afro&format=png&width=400&height=400
HTTP/1.1 200 OK
Content-Type: image/png
Cache-Control: public, max-age=86400

<binary PNG data>

Determinism: If you omit style, it is derived from your seed via a stable hash - same seed, same style, always. The seed itself is not included in the cache key, so different seeds that map to the same style share a cached response.