Skip to main content

Custom REST API

Read/write resources, inbound orders, and signed outbound webhooks.

A
Written by Antonio Ryckman

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 (optional listId; otherwise attaches to an API imports list)

  • PATCH /api/v1/supporters/:id — update name fields

  • POST /api/v1/supporters/:id/lists with { "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.

Did this answer your question?