charitystack.com/donate/{formID}. You can share the link directly, embed the form on your website, or use it as the checkout flow for a fundraising campaign or ticketed event. The forms API lets you create and manage these forms programmatically — useful for organizations that run many campaigns, need to automate form setup, or want to integrate form creation into a broader CRM or event management workflow.
The form object
The list endpoint (GET /v1/forms) returns a summary of each form. Use GET /v1/forms/{id} to retrieve the full configuration.
Summary fields (list endpoint)
Full form object (get-by-id endpoint)
TheGET /v1/forms/{id} response includes all summary fields plus the complete configuration: amount arrays, default amounts, giving levels, sponsorship groups, tickets, promo codes, custom inputs, FAQs, all enable toggles, custom email settings, and event details. See the Get Form endpoint reference for the full schema.
Form types
CharityStack supports two top-level form categories, with additional sub-types for fundraising forms.Fundraising forms
Standard donation forms used for general fundraising campaigns. Supports three amount presentation styles:
standard— Free-form amount entry with suggested amountsgiving_level— Named tiers (e.g., Bronze, Silver, Gold donor)sponsorship— Grouped sponsorship packages with fixed prices
Event forms
Ticketed event registration forms. Supports ticket types (individual and group), promo codes, and event date/time/location details. At least one ticket is required.
Form type mapping
When you create a form, you pass a friendlyformType and amountType. The API stores and returns a legacy internal value:
The response values (
EMBED_FORM, CROWDFUNDING_FORM, PRODUCT) are legacy internal names. This naming mismatch is expected — the create endpoint accepts the friendly names, and the GET endpoints return the stored database values.Key features
Forms support a rich set of optional features you can enable when creating or updating a form.Creating a form
When you callPOST /v1/forms, two fields are always required. All other fields are optional and fall back to sensible defaults.
Conditional requirements
- When
enableFundraisingBaristrue, you must also provide agoalvalue greater than zero. - When
enableCustomEmailistrue, the fieldsreplyToAddress,emailSubject, andcustomMessageare all required. - When
enableTimeAndLocationistrue,eventDateandstartTimeare required.endTime,location,eventDetails, andtimeZoneare optional. - When
amountTypeisgiving_level, you must provide at least one item ingivingLevels. - When
amountTypeissponsorship, you must provide at least one group insponsorshipGroupswith at least one option. - Event forms require at least one ticket in the
ticketsarray.
Validation rules
Amount values (oneTimeAmounts, monthlyAmounts, etc.) must be between 1,000,000. Descriptions are limited to 650 characters. Dropdown-type custom inputs (single_select, multi_select) require at least 2 options. Ticket names must be unique within a form, and GROUP tickets require a groupSize greater than 1.
Example: create a basic fundraising form
API endpoints
Create a form
Create a new fundraising or event form with full configuration options.
List forms
Retrieve all forms for your account with pagination support.
Get a form
Retrieve the full configuration for a single form by ID.
Update a form
Update an existing form’s configuration. Partial updates supported.
Delete a form
Soft-delete a form. Returns 410 Gone on subsequent access.