# CharityStack ## Docs - [GET /v1/analytics/api-metrics — view API usage metrics](https://api.charitystack.com/api/analytics/api-metrics.md): Retrieve a paginated log of API requests made with your key, including endpoint, HTTP method, status code, and response time for each call. - [GET /v1/analytics/webhook-logs — view delivery logs](https://api.charitystack.com/api/analytics/webhook-logs.md): Paginate through webhook delivery logs for your account, filtered by webhook ID or delivery status, to debug failures and monitor reliability. - [POST /v1/contacts — create a new donor contact](https://api.charitystack.com/api/contacts/create.md): Add a donor contact to your CharityStack account with name, email, phone, and address fields. Returns 409 Conflict if the email or phone is already registered. - [GET /v1/contacts/{id} — retrieve a contact record](https://api.charitystack.com/api/contacts/get.md): Fetch a single donor contact by its unique ID, returning all stored fields including emails, phones, addresses, and lifetime giving totals. - [GET /v1/contacts — list donor contacts](https://api.charitystack.com/api/contacts/list.md): Retrieve a paginated list of all donor contacts for your merchant account. Optionally filter by email address and page through results with a cursor token. - [POST /v1/forms — create a donation form](https://api.charitystack.com/api/forms/create.md): Create a new fundraising or event form with customizable amounts, frequencies, giving levels, sponsorship tiers, tickets, and event details. - [POST /v1/forms/{formID}/links — create a prefilled checkout link](https://api.charitystack.com/api/forms/create-checkout-link.md): Generate a unique checkout URL with donor info, amount, frequency, fund, custom inputs, sponsorship selection, ticket selection, UTM parameters, and overlay destination — all prefilled and ready to share. - [DELETE /v1/forms/{id} — deactivate a donation form](https://api.charitystack.com/api/forms/delete.md): Soft-delete a donation form so it no longer appears in list results. The form record is preserved, and accessing it by ID returns 410 Gone. - [DELETE /v1/forms/{formID}/links/{linkID} — delete a prefilled checkout link](https://api.charitystack.com/api/forms/delete-link.md): Permanently remove a prefilled checkout link. Hard delete — use Deactivate for a soft-delete that preserves the row for audit. - [GET /v1/forms/{id} — retrieve a form by ID](https://api.charitystack.com/api/forms/get.md): Fetch a single donation form by its unique ID. Returns 404 if the form doesn't exist, 403 if it belongs to another merchant, and 410 if it has been deleted. - [GET /v1/forms/{formID}/links/{linkID} — retrieve a prefilled checkout link](https://api.charitystack.com/api/forms/get-link.md): Fetch the metadata, prefill payload, destination type, and shareable URL of a previously-created checkout link. - [GET /v1/forms — list your donation forms](https://api.charitystack.com/api/forms/list.md): Retrieve a paginated list of all donation forms for your merchant account, including form type, fund configuration, frequencies, and active status. - [GET /v1/forms/{formID}/links — list prefilled checkout links](https://api.charitystack.com/api/forms/list-links.md): List a form's prefilled checkout links. Paginated. Optionally filter by active state. - [Activate or deactivate a prefilled checkout link](https://api.charitystack.com/api/forms/toggle-link.md): Flip a link's `active` flag. Two endpoints — `/activate` sets it to true, `/deactivate` sets it to false. Both are idempotent. - [PUT /v1/webhooks/{id} — update a webhook](https://api.charitystack.com/api/forms/update.md): Update an existing webhook's URL, subscribed events, status, or description without regenerating the signing secret. - [PUT /v1/forms/{formID}/links/{linkID} — update a prefilled checkout link](https://api.charitystack.com/api/forms/update-link.md): Replace a link's name, prefill payload, destination type, and overlay path. Full-record semantics — any field omitted from the body is treated as cleared, not preserved. - [GET /v1/organization — get your organization config](https://api.charitystack.com/api/organization/get.md): Discover the organization-level configuration needed to build prefilled checkout links: organizationBaseURLs (for overlay destinations) and globalCustomInputs (organization-wide checkout fields). - [GET /v1/payments/{id} — retrieve a payment by ID](https://api.charitystack.com/api/payments/get.md): Fetch the full details of a single payment record using its unique identifier. Returns a Payment object including payer info, amount, fund, and status. - [GET /v1/payments — list payment records](https://api.charitystack.com/api/payments/list.md): Retrieve a paginated list of payment records for your merchant account, including one-time gifts and recurring charges processed through CharityStack. - [GET /v1/subscriptions/{id} — retrieve a subscription](https://api.charitystack.com/api/subscriptions/get.md): Fetch the full details of a single recurring subscription by its unique identifier, including billing schedule, current status, and fee coverage preference. - [GET /v1/subscriptions — list recurring subscriptions](https://api.charitystack.com/api/subscriptions/list.md): Retrieve a paginated list of recurring subscriptions for your merchant account. Filter by status to find active or cancelled donors and view billing schedules. - [POST /v1/subscriptions/{id}/payment-method-update-link - create a hosted update link](https://api.charitystack.com/api/subscriptions/payment-method-update-link.md): Create a short-lived hosted CharityStack link that lets a donor update the payment method for an active recurring subscription. - [PUT /v1/subscriptions/{id} — cancel or update amount](https://api.charitystack.com/api/subscriptions/update.md): Cancel an active subscription or adjust its recurring amount by sending a status or amount field. At least one field is required per request. - [POST /v1/webhooks — register a new webhook endpoint](https://api.charitystack.com/api/webhooks/create.md): Register an HTTPS endpoint to receive real-time event notifications for donations, subscriptions, contacts, and forms in your CharityStack account. - [DELETE /v1/webhooks/{id} — deactivate a webhook](https://api.charitystack.com/api/webhooks/delete.md): Permanently deactivate a webhook endpoint. The webhook stops receiving events immediately and cannot be re-enabled after deletion. - [GET /v1/webhooks/{id} — retrieve a webhook configuration](https://api.charitystack.com/api/webhooks/get.md): Fetch the full configuration and delivery statistics for a single webhook by ID, including subscribed event types, status, success count, and failure count. - [GET /v1/webhooks — list registered webhook endpoints](https://api.charitystack.com/api/webhooks/list.md): Retrieve all webhook endpoints registered for your merchant account, including delivery statistics and current status for each endpoint. - [PUT /v1/webhooks/{id} — update a webhook configuration](https://api.charitystack.com/api/webhooks/update.md): Modify an existing webhook's destination URL, subscribed event types, description, or status without re-registering and generating a new secret. - [Authenticate requests to the CharityStack API](https://api.charitystack.com/authentication.md): Learn how to pass your API key as a Bearer token, what permissions scope your access, and how to handle rate limit headers and 401 errors. - [Building donation forms with the CharityStack API](https://api.charitystack.com/concepts/forms.md): Learn how CharityStack models fundraising and event forms, what fields are available, and how to create and configure forms programmatically via the API. - [Understanding payment records in CharityStack](https://api.charitystack.com/concepts/payments.md): Learn how CharityStack represents donations as payment records, covering field definitions, status values, and migration from the deprecated donations API. - [Recurring subscription management with CharityStack](https://api.charitystack.com/concepts/subscriptions.md): Learn how CharityStack models recurring donations as subscriptions, what fields each record contains, and how to list, retrieve, and update them via the API. - [Real-time event notifications with CharityStack webhooks](https://api.charitystack.com/concepts/webhooks.md): Learn how CharityStack webhooks work, which events you can subscribe to, and how to verify the HMAC-SHA256 signature on every incoming payload. - [Handle CharityStack API errors in your integration](https://api.charitystack.com/guides/errors.md): Learn CharityStack's error response format, every HTTP status code you may receive, and how to implement retry logic for rate limits and server errors. - [Paginate through large result sets in CharityStack](https://api.charitystack.com/guides/pagination.md): Learn how cursor-based pagination works in the CharityStack API, and how to iterate through all results across payments, subscriptions, contacts, and more. - [Verify CharityStack webhook signatures in your server](https://api.charitystack.com/guides/webhook-verification.md): Protect your webhook endpoint by verifying HMAC-SHA256 signatures and timestamps on every incoming CharityStack event before processing it. - [CharityStack API: programmatic access to your donation data](https://api.charitystack.com/introduction.md): Explore what you can build with the CharityStack Public API — from syncing payment records to automating donor outreach and managing fundraising forms. - [Get started with the CharityStack API](https://api.charitystack.com/quickstart.md): Provision an API key, send your first authenticated request to list payments, and learn how to read the response and paginate through results.