Skip to content

Media​

A campaign's photo and video gallery. Behind the features.fundraiser_video flag.


List a campaign's media​

GET
/fundraisers/{id}/media

The campaign's photos and videos in gallery order. Every reader sees the public list (DMCA-taken-down items removed); the owner also sees processing and taken-down items. Answers 403 for everyone while features.fundraiser_video is off. Readable exactly when GET /fundraisers/{id} is: a campaign that is not active, paused or ended, is private, or has been deleted answers 404 to everyone but its owner.

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)
or

Parameters​

Path Parameters

id*
Type
string
Required
Format
"uuid"

Responses​

Media items

application/json
JSON
{
"media": [
]
}

Playground​

Server
Authorization
Variables
Key
Value

Samples​


Add media to a campaign​

POST
/fundraisers/{id}/media

Adds one item, by kind:

  • image — a URL from POST /storage/upload (other hosts are
    rejected). The first image becomes the cover unless isCover says
    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-time uploadURL. 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
string
Required
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"
}

Playground​

Server
Authorization
Variables
Key
Value
Body

Samples​


Preview a video link​

POST
/fundraisers/{id}/media/preview

Parses a video URL and returns what the gallery would embed, for the builder's preview card. Nothing is saved. Thumbnail and title come from the provider's oEmbed and may be null. Campaign owner only; behind features.fundraiser_video.

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)

Path Parameters

id*
Type
string
Required
Format
"uuid"
application/json
JSON
{
"url": "string"
}

Parsed link

application/json
JSON
{
"provider": "string",
"providerVideoId": "string",
"embedUrl": "string",
"aspectRatio": "string",
"thumbnailUrl": "string",
"title": "string"
}
Server
Authorization
Variables
Key
Value
Body

Reorder a campaign's media​

PATCH
/fundraisers/{id}/media/reorder

Sets the gallery order to the order of ids. Every id must belong to this campaign. Campaign owner only; behind features.fundraiser_video. 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
string
Required
Format
"uuid"

Request Body​

application/json
JSON
{
"ids": [
"string"
]
}

Responses​

Reordered

application/json
JSON
{
"ok": true
}

Playground​

Server
Authorization
Variables
Key
Value
Body

Samples​


Set the cover image​

PATCH
/fundraisers/{id}/media/{mid}/cover

Makes one image the campaign's cover (clearing the previous one). Only images can be the cover. Campaign owner only; behind features.fundraiser_video. 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
string
Required
Format
"uuid"
mid*
Type
string
Required
Format
"uuid"

Responses​

The new cover

application/json
JSON
{
"media": "string"
}

Playground​

Server
Authorization
Variables
Key
Value

Samples​


Remove a media item​

DELETE
/fundraisers/{id}/media/{mid}

Removes one item from the gallery. Campaign owner only; behind features.fundraiser_video. 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
string
Required
Format
"uuid"
mid*
Type
string
Required
Format
"uuid"

Responses​

Removed

Playground​

Server
Authorization
Variables
Key
Value

Samples​


Powered by VitePress OpenAPI

Built with VitePress