title and funds are required — all other fields have sensible defaults.
The form is immediately live at charitystack.com/donate/{formID} unless you set active to false.
Endpoint
Authentication
Bearer token using your API key. Format:
Bearer cs_live_your_keyRequest body
Required fields
Display name for the form. Must be unique within your account.
List of fund names donors can designate their gift to. At least one required.
Form type
fundraising or event. Event forms require at least one ticket.For fundraising forms only. Controls how amounts are presented:
standard— Free-form amounts with suggested valuesgiving_level— Named tiers (requiresgivingLevelsarray)sponsorship— Grouped packages (requiressponsorshipGroupsarray)
The
formType and amountType you send are mapped to an internal value in the response. See Form type mapping for details.Frequencies & amounts
Donation frequencies to enable. Values:
ONE_TIME, DAILY, WEEKLY, MONTHLY, ANNUALLY. Required for fundraising forms. Event forms default to ["ONE_TIME"].Pre-selected frequency when the form loads. Defaults to the first item in
frequencies.Suggested one-time amounts. Each must be between 1,000,000.
Suggested monthly amounts.
Giving levels
Named donation tiers. Required when
amountType is giving_level.Each object requires title (string), amount (number, > 0), and description (string).Sponsorship groups
Sponsorship packages. Required when
amountType is sponsorship. Each group must have at least one option.Each group: groupTitle (string), description (string), options array of { optionTitle, amount }.Appearance
Hex color for form styling. Must be valid format:
#XXXXXX.Supporting text shown below the title. Maximum 650 characters.
Set to
false to create the form in a draft state.Donor options
Fundraising features
Event fields
Display event date, time, and location. When
true, eventDate and startTime become required.Tickets (event forms)
Event tickets. Required for event forms — at least one ticket must be provided.Each ticket requires:
name(string) — must be unique across all ticketsprice(number) — must be >= 0 (free tickets allowed)quantity(integer) — must be > 0ticketType(string) —INDIVIDUALorGROUPgroupSize(integer) — required forGROUPtickets, must be > 1
Promo codes (event forms)
Discount codes for tickets. Each requires
code, discountType (percentage or amount), discountValue, quantity, and applicableTickets (array of ticket names).Custom email
Enable custom receipt emails. When
true, replyToAddress, emailSubject, and customMessage are all required.Custom inputs & FAQs
Additional form fields. Each requires
question, inputType (short_text, long_text, single_select, multi_select), and required (boolean). Dropdown types (single_select, multi_select) require an options array with at least 2 items.FAQ items displayed on the form. Each requires
question and answer.Response
Status codes
| Code | Description |
|---|---|
201 | Form created successfully. |
400 | Validation error. Response includes error (single issue) or error + details array (multiple issues). |
401 | Missing or invalid API key. |
409 | A form with this title already exists for your account. |
Examples
Fundraising form
cURL
Event form
cURL