morning brew before the lab opens
// SOCIAL / UGC
User uploads. Feeds that don’t jank.
Gate uploads with /info, render the BlurHash while the full image streams, compose two-up and four-up posts with /grid. The feed scrolls smooth from first paint.
Half your uploads are 24-megapixel HEIC originals. The feed is fine until someone posts a panorama and breaks every card on the page.
// LIVE /grid → ONE URL
/grid
Real /grid call — server composes the tile.
// LAYOUTS
One endpoint · four feeds.
Same four uploads. type=classic for the carousel, type=row for a story header, type=column for sidebars, type=auto for catch-all. The server composes — your client never touches a canvas.
// 4 sources
photo-1503023…, photo-1521572…, photo-1539571…, photo-1517841…classic
carousel/grid?type=classic
row
story header/grid?type=row
column
sidebar/grid?type=column
auto
catch-all/grid?type=auto
Same 4 sources · type= flips the entire layout server-side.
// THE LIVE FEED
Every post · one URL each.
Avatars cropped on the face, single-photo posts through /transform, carousels through /grid — one URL per surface, cached forever. The feed loads fast, scrolls smooth, never jumps.
four favorites from this week
sunset hike with the team
Face-cropped avatars · single-photo posts · multi-photo grids · one URL each.
// SHARE CARDS
Stories that feel hand-made.
Story covers, profile highlights, share cards — three different shapes, all painted from the source image. The same /info response feeds the palette, the BlurHash renders the halo, the user's feed feels alive.
// READY TO BUILD
Ship social images today.
200 credits free for 7 days. No card, no signup pipeline — paste your bucket, copy a URL, watch it work.