API ReferenceCampaigns
List Campaigns
List all campaigns for an organization.
GET /api/orgs/:idOrSlug/campaigns
Returns all campaigns belonging to an organization. Requires authentication and org membership.
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
idOrSlug | string | Yes | The organization's internal ID or URL slug (e.g., "habitat-for-humanity"). |
Authentication
Requires a valid Clerk session JWT in the Authorization: Bearer header. The authenticated user must be a member of the specified organization.
Response
Returns an array of campaign objects belonging to the organization, ordered by creation date descending (newest first).
Campaign Object Fields
| Field | Type | Description |
|---|---|---|
id | string | Unique campaign ID |
orgId | string | ID of the owning organization |
title | string | Campaign title |
slug | string | URL-friendly slug, unique within the org |
description | string or null | Campaign description |
type | string | "DONATION", "PEER_TO_PEER", "EVENT", or "MEMBERSHIP" |
status | string | "DRAFT", "ACTIVE", "PAUSED", or "ENDED" |
goalAmountCents | integer or null | Fundraising goal in cents |
raisedAmountCents | integer | Total amount raised in cents |
donationCount | integer | Total number of succeeded donations |
coverImageUrl | string or null | URL of the campaign cover image |
videoUrl | string or null | URL of an embedded video |
color | string or null | Campaign brand color as hex (e.g., "#C4501E") |
showDonorRoll | boolean | Whether to show the public donor roll |
showGoal | boolean | Whether to display the goal thermometer |
startDate | string or null | ISO 8601 campaign start date/time |
endDate | string or null | ISO 8601 campaign end date/time |
suggestedAmounts | array | Pre-set donation amounts in cents |
allowCustomAmount | boolean | Whether donors can enter a custom amount |
allowRecurring | boolean | Whether recurring giving options are shown |
matchingEnabled | boolean | Whether donation matching is active |
matchingOrgName | string or null | Name of the matching organization |
matchingMaxCents | integer or null | Maximum matching amount in cents |
matchingRatioPct | integer | Matching ratio as percentage (e.g., 100 = 1:1) |
minAmountCents | integer or null | Minimum donation amount in cents |
ticketPriceCents | integer or null | For events: fixed ticket price in cents |
ticketCapacity | integer or null | For events: max tickets available |
ticketsSold | integer | For events: number of tickets sold |
parentCampaignId | string or null | For P2P: parent campaign ID |
scheduledPublishAt | string or null | ISO 8601 scheduled publish datetime |
createdAt | string | ISO 8601 creation timestamp |
updatedAt | string | ISO 8601 last-updated timestamp |
Example
curl https://givelink-api-production.up.railway.app/api/orgs/habitat-for-humanity/campaigns \
-H "Authorization: Bearer <clerk-session-jwt>"{
"data": [
{
"id": "clx9876543210",
"orgId": "clxabc123456",
"title": "Spring 2026 Annual Fund",
"slug": "spring-2026-annual-fund",
"description": "Help us reach our goal before June 30.",
"type": "DONATION",
"status": "ACTIVE",
"goalAmountCents": 5000000,
"raisedAmountCents": 1245000,
"donationCount": 87,
"suggestedAmounts": [2500, 5000, 10000, 25000],
"allowCustomAmount": true,
"allowRecurring": true,
"createdAt": "2026-02-15T10:30:00.000Z",
"updatedAt": "2026-03-01T00:00:01.000Z"
}
]
}Error Responses
| Status | Error | Description |
|---|---|---|
| 401 | Unauthorized | Missing or invalid Authorization header |
| 403 | Forbidden | Authenticated user is not a member of this organization |
| 404 | Organization not found | No org exists with the given ID or slug |
Last updated on 4/5/2026