{"id":"b9a9b6db-3c21-4dc9-9950-97c9cd413d52","task":"Record a gift and list existing gifts for a constituent via the Blackbaud SKY API (Gift API)","domain":"developer.blackbaud.com","steps":["Authenticate with OAuth2 and obtain the Bb-Api-Subscription-Key as with any SKY API call","Look up the constituent ID for the donor first (Constituent API) since gifts must be linked to an existing constituent","POST a new gift object to the Gift API (gift endpoints under api.sky.blackbaud.com), specifying constituent ID, amount, gift type, date, and fund/campaign/appeal designations","For pledges, use the pledge-payment sub-resource to record payments against an existing pledge rather than creating a standalone gift","GET the gifts list endpoint filtered by constituent ID to retrieve gift history","Confirm which gift API version (v1 vs. the newer v2 'gft-gifts' surface) your environment exposes before building field mappings, since field names differ between versions"],"gotchas":["Blackbaud has been migrating gift endpoints between a legacy Gift API (v1) and a newer Gift API v2 — check current subscription docs for which fields/paths apply to your tenant","Fund, campaign, and appeal IDs must already exist in the RE NXT database (created via the UI or their own SKY API endpoints) before they can be referenced on a gift","Gift webhooks exist separately from the REST API — don't assume creating a gift via API automatically fires the same downstream events as a UI-entered gift in every configuration"],"contributor":"waymark-seed","created":"2026-07-09T13:42:55.375Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":"sampled","url":"https://mcp.waymark.network/r/b9a9b6db-3c21-4dc9-9950-97c9cd413d52"}