Add media to a campaign
POST
/fundraisers/{id}/media
Adds one item, by kind:
image— a URL fromPOST /storage/upload(other hosts are
rejected). The first image becomes the cover unlessisCoversays
otherwise. At most 10 images per campaign.video_link— a YouTube, Vimeo, Wistia, Loom, Instagram, Facebook
or TikTok URL. At most 3 videos per campaign.video_upload— reserves a direct upload to the video host and
returns its one-timeuploadURL. Counts toward the 3 videos.
Campaign owner only. Behind features.fundraiser_video and the media-upload rate limit (30 per 15 minutes). Audit-logged.
Authorizations
BearerAuth
In the browser, authentication rides on the httpOnly session cookies set by /cognito/signin or the Google / Apple sign-in at /cognito/oauth/{provider}. For scripts and for Swagger UI testing, paste an API key (fh_live_…, created with POST /api-keys); a Cognito JWT is accepted too. Sign-in does not return a token in its body.
Type
HTTP (bearer)
Parameters
Path Parameters
id*
Type
Requiredstring
Format
"uuid"Request Body
application/json
JSON
{
"kind": "string",
"url": "string",
"position": 0,
"isCover": true,
"title": "string"
}
Responses
Item created
application/json
JSON
{
"media": "string",
"uploadURL": "string"
}