image_recipe with the rendered image and Relay keeps both. The recipe never travels alone; a recipe-only update returns 400.
Send it on the same PATCH /v1/contact_card request as the image, following the upload and URL rules in Profile photos. A new image sent without image_recipe is stored with a photo recipe. A name-only PATCH keeps the image and its recipe, and image_url: null clears both.
Supply a rendered image with a recipe
Upload the renderedRL monogram on the blue gradient and confirm it is complete. Then send its Attachment ID with the recipe:
image_url with the same recipe, following Profile photos.
The recipe has one of three shapes. A monogram is recipe.monogram.initials: one to four graphemes without spaces, at most 16 UTF-8 bytes. An emoji is recipe.emoji.emoji, exactly one emoji, and a photo is recipe.image: {} with no background.
Monogram and emoji recipes need background.linearGradient.colors, one published pair in top-then-base order.
Choose a gradient pair
What you get back
The200 response is the Contact Card with its public image_url. The recipe is stored beside the image and is not returned on the card; the Relay iOS app reads it when it needs to redraw the picture.

