Authenticate with Authorization: Bearer <api_key> against /api/v1 on your dashboard host. Free plans cannot use the API.
Read
GET /api/v1/me
GET /api/v1/campaigns and GET /api/v1/campaigns/:id
GET /api/v1/donations and GET /api/v1/donations/:id
GET /api/v1/supporters and GET /api/v1/supporters/:id
Donation lists support status, campaignId, dateFrom, dateTo, page, and pageSize. Donation objects include isTest, externalSource, and externalOrderId when set.
Write: supporters
Requires write scope.
POST /api/v1/supporters— upsert by email (optionallistId; otherwise attaches to an API imports list)PATCH /api/v1/supporters/:id— update name fieldsPOST /api/v1/supporters/:id/listswith{ "listId": "…" }— add list membership
Write: inbound orders
POST /api/v1/orders creates a completed donation with no Stripe charge.
Required: source, externalOrderId, amountCents, email, and campaignSlug or campaignId.
Optional: firstName, lastName, currency (default usd), listId, metadata, isTest.
Idempotent on (campaign, source, externalOrderId). Card charges inside Sharity still use embed/Stripe only.
Outbound webhooks
Configure endpoints under Integrations → Webhooks. Events: donation.completed, donation.refunded, donation.failed. See Outbound webhooks for signature headers and retries.