Quickstart

Authenticate, list schools, and submit your first donation request.

1. Get a key

Request sandbox access at /signup. Keys look like wbk_test_<key_id>:<secret> in sandbox and wbk_live_… in production. The full key is shown once and never again — only a hash is stored.

2. Call the API

Every bank request is server-to-server and carries your key in the X-Wishbone-API-Key header. Start with the school list, which needs nothing else:

Request
curl "https://sandbox.api.getwishbone.io/v1/schools?state=TN" \
  -H "X-Wishbone-API-Key: wbk_test_YOUR_KEY_ID:YOUR_SECRET"
HTTP/1.1 200 OK
{
  "success": true,
  "data": [
    {
      "school_id": "sch_tennessee",
      "name": "Tennessee Fund",
      "university": "University of Tennessee",
      "state": "TN",
      "conference": "SEC",
      "minimum_donation_usd": 5.0,
      "fund_count": 2,
      "active": true
    }
  ],
  "meta": { "request_id": "req_01HX...", "total": 1, "limit": 50 }
}

3. Submit a donation

Your side converts points to dollars; you send the resulting amount and your own transaction reference. bank_transaction_ref is your idempotency key — resubmitting the same one returns 409 DONATION_DUPLICATE instead of double-posting.

Request
curl -X POST "https://sandbox.api.getwishbone.io/v1/donations/request" \
  -H "X-Wishbone-API-Key: wbk_test_YOUR_KEY_ID:YOUR_SECRET" \
  -H "Content-Type: application/json" \
  -d '{
    "school_id": "sch_tennessee",
    "fund_designation": "annual_fund",
    "dollar_amount": 50.00,
    "points_redeemed": 5000,
    "bank_transaction_ref": "TXN-12345"
  }'
HTTP/1.1 202 Accepted
{
  "success": true,
  "data": {
    "donation_id": "9f14c6d2-7b3a-4e51-a0c8-2d6b8e4f1a92",
    "status": "pending",
    "school_id": "sch_tennessee",
    "dollar_amount": 50.0,
    "bank_transaction_ref": "TXN-12345",
    "estimated_confirmation_at": "2026-05-07T14:27:00Z"
  },
  "meta": { "request_id": "req_01HX..." }
}

The 202 means accepted, not completed. Wishbone pushes the gift to the school's platform out of band and tells you the outcome via webhooks, or you can poll GET /v1/donations/{id}.

Next

Full endpoint list in the API Reference. For the in-app cardholder flow, see Mobile SDK and App browser routing.