linkID — the URL itself is short and doesn’t expose the prefill values in query parameters.
A link belongs to its parent form. Deactivating the form does not deactivate its links, but a link pointing at a deleted form will fail to load checkout.
Endpoint
Authentication
Bearer token using your API key. Format:
Bearer cs_live_your_keyPath parameters
The unique identifier of the parent form. Returns
404 if the form doesn’t exist for your organization, 403 if it belongs to a different organization, 410 if it has been deleted.Discovering what to prefill
Before building the request body, fetch the parent form and your organization config so you know which keys to set:Request body
Internal label for the link, shown in the dashboard’s URL Builder list. Max 200 characters. Defaults to
"API link — {timestamp}" if omitted.Where the link should resolve. Optional — auto-derived from the form’s type if omitted.
HOSTED_PAGE_DONATE— fundraising/sponsorship/crowdfunding forms (default for non-EVENT)HOSTED_PAGE_ATTEND— event forms (default for EVENT)OVERLAY_DONATE— overlay snippet on your organization’s website (non-EVENT)OVERLAY_ATTEND— overlay snippet on your organization’s website (EVENT)
organizationBaseURLs to be configured on your organization. Check via GET /v1/organization first; the API will return a 400 if it’s not set.Required when
destinationType is OVERLAY_DONATE or OVERLAY_ATTEND. URL path on your organization’s site where the overlay-trigger snippet lives, e.g. /give. Must begin with /.Fields to pre-populate at checkout. All keys are optional. Unknown keys return a
400 with a list of accepted keys.Prefill — donor identity
Donor’s first name.
Donor’s last name.
Donor’s email address.
Donor’s phone number. Format is not validated by the API — pass it as it should be displayed.
Donor’s organization or company name. Only shown if the form has
enableOrganizationName enabled.Prefill — address
Donor’s street address. Only shown if the form has
enableBillingAddress enabled.Apartment, suite, or unit number.
City.
State, province, or region.
Postal or ZIP code.
Country code or name. Only shown if the form has
enableCountryDropdown enabled.Prefill — donation amount
Donation amount. Must be between
0.01 and 1,000,000. Booleans are rejected. For sponsorship-style PRODUCT forms, set this to the chosen product’s price so the sponsorship UI renders as selected at checkout. For crowdfunding forms with giving levels, set this to the matching giving-level amount.Fund to designate the gift to. Must match one of the form’s configured
funds exactly (case-sensitive). Discoverable from GET /v1/forms/{id}’s funds array.Donation cadence. One of
ONE_TIME, DAILY, WEEKLY, MONTHLY, ANNUALLY. Must also be enabled on the form. Discoverable from GET /v1/forms/{id}’s frequencies array.Prefill — custom inputs
Pre-populate the form’s
customInputs and the organization’s globalCustomInputs. Object keys may be either the input’s id or its title (case-sensitive). Unknown keys return 400 with a list of valid IDs/titles.Form-level inputs are discoverable via GET /v1/forms/{id} (customInputs field). Organization-level globals via GET /v1/organization (globalCustomInputs field).Prefill — sponsorship (PRODUCT forms only)
Available when the form’sformType is PRODUCT. Both keys are case-sensitive and must match values configured on the form (visible in the productGroups field of GET /v1/forms/{id}).
Name of the sponsorship group, e.g.
"East". Must match a productGroups[].productGroupName on the form.Name of the chosen product within the group, e.g.
"New York". Must match a productName within the chosen sponsorshipGroup. Requires sponsorshipGroup to also be set.Prefill — ticket (EVENT forms only)
Available when the form’sformType is EVENT.
Ticket name to pre-select, e.g.
"General Admission". Must match a configured ticket on the event form. Tickets are stored on the event’s element record — fetch the form to see configured ticket names.Prefill — UTM parameters
UTM source (e.g.
newsletter, facebook). Stored and recorded with the donation.UTM medium (e.g.
email, social).UTM campaign (e.g.
spring-2026).UTM term.
UTM content.
Response
Unique identifier for the link. Use this with Get Link, Update Link, Delete Link, or the activate/deactivate endpoints.
The parent form’s ID, echoed from the path.
The shareable URL. Shape varies by
destinationType:HOSTED_PAGE_DONATE→https://charitystack.com/donate/{formID}?elementid={linkID}HOSTED_PAGE_ATTEND→https://charitystack.com/attend/{formID}?elementid={linkID}OVERLAY_*→{your-organization-base-url}{overlayPath}?donate&formid={formID}&elementid={linkID}(or?attendfor overlay attend)
The link’s internal label (either what you sent, or the default
"API link — {timestamp}").Echo of the destination type used (either supplied or auto-derived).
Echo of the overlay path; empty string for hosted-page destinations.
Status codes
| Code | Description |
|---|---|
201 | Link created successfully. |
400 | Validation error — invalid JSON, unknown prefill key, bad type, amount out of range, unknown frequency, fund not configured on this form, sponsorship/ticket mismatch with form type, overlay missing overlayPath, or organization missing organizationBaseURLs. |
401 | Missing or invalid API key. |
403 | Form belongs to a different organization. |
404 | No form found with the given ID. |
410 | Form was found but has been deleted. |
500 | Internal error. |
Examples
Basic prefilled donation link
cURL
With custom inputs (form-level + global)
cURL
Sponsorship (PRODUCT form)
cURL
Event ticket prefill
cURL
Overlay destination on your own site
cURL