Skip to content

Comments​

Fundraiser comments and replies


List comments for a fundraiser​

GET
/fundraisers/{fundraiserId}/comments

Returns paginated comments for a fundraiser, newest first. Hidden and retracted comments are left out. A comment written as a donor's note from their receipt carries its gift (donation_amount_cents, donation_currency); on an anonymous gift the author fields are null and is_anonymous is true. Every row carries gif, a GIF object or null; a GIF comment's content may be empty.
Authentication is optional. Every row carries like_count; for a signed-in caller liked_by_me says whether they like it, and for a guest it is always false.

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

fundraiserId*
Type
string
Required
Format
"uuid"

Query Parameters

limit
Type
integer
Default
50
Minimum
1
Maximum
100
offset
Type
integer
Default
0
Minimum
0

Responses​

Comment list

application/json
JSON
{
"data": [
{
"id": "string",
"fundraiser_id": "string",
"content": "string",
"gif": {
"id": "xT4uQulxzV39haRFjG",
"title": "string",
"width": 480,
"height": 270,
"mp4_url": "https://media2.giphy.com/media/xT4uQulxzV39haRFjG/giphy.mp4",
"webp_url": "https://media2.giphy.com/media/xT4uQulxzV39haRFjG/giphy.webp",
"gif_url": "https://media2.giphy.com/media/xT4uQulxzV39haRFjG/giphy.gif",
"still_url": "https://media2.giphy.com/media/xT4uQulxzV39haRFjG/giphy_s.gif",
"preview_mp4_url": "https://media2.giphy.com/media/xT4uQulxzV39haRFjG/200w.mp4",
"preview_webp_url": "https://media2.giphy.com/media/xT4uQulxzV39haRFjG/200w.webp",
"preview_width": 200,
"preview_height": 113
},
"parent_comment_id": "string",
"created_at": "string",
"updated_at": "string",
"author_id": "string",
"author_name": "string",
"author_avatar": "string",
"is_anonymous": true,
"donation_amount_cents": 0,
"donation_currency": "string",
"like_count": 0,
"liked_by_me": true
}
],
"pagination": {
"limit": 0,
"offset": 0,
"total": 0
}
}

Playground​

Server
Authorization
Variables
Key
Value

Samples​


Create a comment​

POST
/fundraisers/{fundraiserId}/comments

Creates a comment (or reply) on a fundraiser. The author is derived from the authenticated user. Content must be 2000 characters or less, and is required unless gif_id is set.
gif_id attaches a GIF (#1963): a GIPHY id from GET /gifs/trending or GET /gifs/search. The server looks it up on GIPHY and stores the GIF object it builds itself; clients never send URLs. Only g and pg GIFs are accepted. A request with gif_id also counts against the GIF rate limit (60 a minute per account).
Requires a verified email address, and is gated by the features.comments flag — either gate failing answers 403.

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

fundraiserId*
Type
string
Required
Format
"uuid"

Request Body​

application/json
JSON
{
"content": "string",
"parent_comment_id": "string",
"gif_id": "string"
}

Responses​

Comment created — the stored row (including gif, a GIF object or null) plus author_name and author_avatar.

application/json
JSON
{
"data": {
"additionalProperties": "string"
}
}

Playground​

Server
Authorization
Variables
Key
Value
Body

Samples​


Trending GIFs for the comment GIF picker​

GET
/gifs/trending

GIPHY's trending GIFs, rated pg or lower, as GIF objects. Cached on the server for a few minutes. Page with offset = the previous answer's next_offset.
Authentication is optional. Rate limited at 60 requests a minute per account (per IP for a guest), on top of the public limit.
Answers 503 { "error": "gifs_unavailable" } while GIF comments are off (features.comment_gifs) or GIPHY is not configured. Clients should hide their GIF button when they get it.

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​

Query Parameters

limit
Type
integer
Default
24
Minimum
1
Maximum
50
offset
Type
integer
Default
0
Minimum
0
Maximum
4999

Responses​

A page of GIFs

application/json
JSON
"string"

Playground​

Server
Authorization
Variables
Key
Value

Samples​


Search GIFs for the comment GIF picker​

GET
/gifs/search

GIPHY search, rated pg or lower, as GIF objects. Cached on the server by q, offset, limit and lang. Same limits and 503 behaviour as GET /gifs/trending.

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​

Query Parameters

q*

The search term. Whitespace is collapsed and it is cut to 50 characters.

Type
string
Required
Min Length
1
limit
Type
integer
Default
24
Minimum
1
Maximum
50
offset
Type
integer
Default
0
Minimum
0
Maximum
4999
lang

The search language. Anything else is treated as en.

Type
string
Valid values
"en""ru""uk""es"
Default
"en"

Responses​

A page of GIFs

application/json
JSON
"string"

Playground​

Server
Authorization
Variables
Key
Value

Samples​


Delete a comment​

DELETE
/comments/{id}

Deletes a comment. Only the comment's author may delete it. A donor's note tied to a gift is retracted (hidden, kept for the record) rather than deleted.

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"

Responses​

Comment deleted

application/json
JSON
{
"success": true
}

Playground​

Server
Authorization
Variables
Key
Value

Samples​


Like a comment​

PUT
/comments/{commentId}/like

Likes a comment or a reply as the authenticated user. Idempotent: liking a comment you already like changes nothing and answers the same state. No verified email is required. Gated by the features.comments flag and the per-account rate limit.

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

commentId*
Type
string
Required
Format
"uuid"

Responses​

Liked; the comment's count after the write

application/json
JSON
"string"

Playground​

Server
Authorization
Variables
Key
Value

Samples​


Unlike a comment​

DELETE
/comments/{commentId}/like

Removes the authenticated user's like from a comment or a reply. Idempotent: unliking a comment you do not like changes nothing.

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

commentId*
Type
string
Required
Format
"uuid"

Responses​

Not liked; the comment's count after the write

application/json
JSON
"string"

Playground​

Server
Authorization
Variables
Key
Value

Samples​


Powered by VitePress OpenAPI

Built with VitePress