get /api/new-sub

returns an animated gif with the subscriber card. supports query params or post json.

content-type: image/gif

get /api/new-sub.gif

always returns gif (no html fallback for crawlers).

content-type: image/gif

parameters:

copy
name: string (required)
email?: string
amount: number | string
item: string (e.g. "pro", "builder")
type: "builder" | "pro" | "bits"

examples:

submit ↗ · as gif ↗

copy
curl -sS -X POST '/api/new-sub'   -H 'Content-Type: application/json'   -d '{"name":"rafael guilherme","email":"rafael.guilherme@nilo.io","amount":49.99,"item":"pro","type":"pro"}'   --output out.gif

get /api/ooo

composites a team member onto an out-of-office scene. one endpoint, four scene types: birthday, vacation, anniversary, summary.

content-type: image/png

parameters:

copy
type:   "birthday" | "vacation" | "anniversary" | "summary"  (required)
person: string                       (required for birthday | vacation | anniversary)
people: comma-separated, max 12      (required for summary)

output dimensions: 1080x455 for birthday / vacation / anniversary / summary.

available environments (type):

copy
birthday, vacation, anniversary, summary, niloversary

available people (person / people):

copy
andres.palmiter, bailey.rosser, bruno.gomes, chase.wilbanks, chris.pavia, david.kahler, elgar.pagnussatt, elon, elon-test, fabio.polimeni, freja.roberts, heorhii.nevinhlovskyi, hugo.ferreira, isaac.mason, jawad.grar, joe.mackenzie, joshua, kuba, lu.chang, meriesa, neo, nuno.leiria, rafael.guilherme, ron, ryu.erck, stefan.ginev, stefan.heinrich, sthefani.ovalle

unknown names fall back to a placeholder silhouette.

to add/remove people, manage files in vercel blob under images/ooo/people/.

niloversary

a static scene with no params — just the nilo anniversary background.

copy
curl -sS '/api/ooo?type=niloversary' --output niloversary.png

preview ↗

examples:

birthday ↗ · vacation ↗ · anniversary ↗ · summary ↗

copy
curl -sS '/api/ooo?type=birthday&person=rafael' --output birthday.png
curl -sS '/api/ooo?type=summary&people=rafael,kuba,bruno' --output summary.png
copy
curl -sS -X POST '/api/ooo' \
  -H 'Content-Type: application/json' \
  -d '{"type":"summary","people":["rafael","kuba","bruno","nuno"]}' \
  --output summary.png

get /api/podium

png leaderboard (900×400). supports optional avatar images.

content-type: image/png

parameters:

copy
n1, n2, n3: string (usernames, required)
w1, w2, w3?: number (wins, optional)
img1, img2, img3?: string (avatar urls)

examples:

try it ↗

copy
curl -sS '/api/podium?n1=kuba&w1=3&n2=bruno&w2=1&n3=nuno&w3=1' --output podium.png