// 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
User upload
photo-1.jpg
User upload
photo-2.jpg
User upload
photo-3.jpg
User upload
photo-4.jpg
/grid
Composed grid
/grid?src=…
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 sourcesphoto-1503023…, photo-1521572…, photo-1539571…, photo-1517841…
classic
/grid type=classic
carousel/grid?type=classic
row
/grid type=row
story header/grid?type=row
column
/grid type=column
sidebar/grid?type=column
auto
/grid type=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.
@jen.codestransform
@jen.codes
morning brew before the lab opens

morning brew before the lab opens

34821
@max.travelsgrid
@max.travels
four favorites from this week

four favorites from this week

1.2k94
@sam.outdoorstransform
@sam.outdoors
sunset hike with the team

sunset hike with the team

34821

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.