---
title: "Set a program's picture from an image URL."
method: POST
path: "/api/v1/programs/{id}/hero-image"
tags: ["Programs"]
---

# Set a program's picture from an image URL.

`POST /api/v1/programs/{id}/hero-image`

## Request

- Base URL: `https://api-dev.fusehealth.com`
- URL: `https://api-dev.fusehealth.com/api/v1/programs/{id}/hero-image`
- Auth: API key in header `x-api-key`

Sets the picture shown for this program on the brand's storefront. Send the https address of a JPEG, PNG, WebP or GIF image (5 MB max); FUSE downloads it, stores its own copy, and uses that, so the original address can change or disappear afterwards. The address must be a public website, must not redirect, and must serve the image file itself. The program must belong to the key's brand. For a live program, the FUSE AI connector asks the user to confirm first.

## Path parameters

- `id` string, required

## Request body

- object
  - `imageUrl` string, uri, required: The https address of the image file.

## Response `200`

Success

- object
  - `success` boolean
  - `message` string
  - `data` object
    - `id` string
    - `heroImageUrl` string
    - `clinicProgramId` string

## Other responses

- `400`: The image was refused: IMAGE_URL_INVALID, IMAGE_URL_NOT_ALLOWED (not https, or not a public host), IMAGE_FETCH_FAILED (unreachable, redirect, non-200, timeout), IMAGE_TOO_LARGE, or NOT_AN_IMAGE.
- `401`: Missing, invalid, inactive, or expired API key (or JWT)
- `403`: Authenticated but not permitted (insufficient scope, wrong role, or FUSE feature not enabled)
- `404`: Resource not found (or not owned by the key's clinic)

---

[API](https://skmtc.dev/fusehealth/apis/fuse-brand-api-external.md) · [All operations](https://skmtc.dev/fusehealth/apis/fuse-brand-api-external/llms.txt) · [OpenAPI document](https://skmtc.dev/fusehealth/apis/fuse-brand-api-external/revisions/50821832728c?raw)
