blackbaud-renxt-api
Blackbaud Raiser's Edge NXT SKY API
Reference for integrating with the Blackbaud SKY API for Raiser's Edge NXT (OpenAPI 3.0.1). Sourced from official Blackbaud developer portal specs.
Base URL
https://api.sky.blackbaud.com
API modules are accessed via versioned path segments:
| Module | Server URL | Operations |
|---|---|---|
| Constituent | https://api.sky.blackbaud.com/constituent/v1 |
159 |
| Gift | https://api.sky.blackbaud.com/gift/v1 |
28 |
| Gift v2 | https://api.sky.blackbaud.com/gft-gifts |
10 |
| Fundraising | https://api.sky.blackbaud.com/fundraising/v1 |
53 |
| Opportunity | https://api.sky.blackbaud.com/opportunity/v1 |
19 |
| Event | https://api.sky.blackbaud.com/event |
65 |
Note: The Constituent API includes Actions, Ratings, Prospect Status, and Giving Summary endpoints.
Authentication
OAuth 2.0 Authorization Code Flow:
| Detail | Value |
|---|---|
| Authorization URL | https://oauth2.sky.blackbaud.com/authorization |
| Token URL | https://oauth2.sky.blackbaud.com/token |
| Token Lifespan | 60 minutes |
| Scopes | Not currently utilized |
Required credentials:
- Application ID (client_id) — from Blackbaud developer portal
- Client Secret — from app registration
- API Subscription Key — from subscriptions page
Required headers on every API call:
Authorization: Bearer {access_token}
Bb-Api-Subscription-Key: {subscription_key}
Content-Type: application/json
Pagination
- Uses
limitandoffsetquery parameters - Default limit: 500 records
- Maximum limit: 5,000 records (some endpoints allow up to 10,000)
- List responses include a
countfield
Rate Limits & Throttling
- Rate limit exceeded: HTTP
429withRetry-Afterheader - Quota limit exceeded: HTTP
403withRetry-Afterheader - Implement exponential backoff when receiving 429/403
Key Endpoints
Constituent API (159 operations)
Server: https://api.sky.blackbaud.com/constituent/v1
Constituents:
GET /constituents # Constituent list
POST /constituents # Constituent (Create)
GET /constituents/search # Constituent (Search)
GET /constituents/duplicatesearch # Constituent (Duplicate search)
POST /constituents/convert/{non_constituent_id} # Constituent (Convert)
GET /constituents/{constituent_id} # Constituent (Get)
PATCH /constituents/{constituent_id} # Constituent (Edit)
DELETE /constituents/{constituent_id} # Constituent (Delete)
Constituent sub-resources (list on constituent, full CRUD via top-level):
/addresses # Addresses (GET all, POST, PATCH, DELETE)
/aliases # Aliases (POST, PATCH, DELETE)
/constituentcodes # Constituent codes (POST, PATCH, DELETE)
/educations # Education records (GET all, POST, PATCH, DELETE)
/emailaddresses # Email addresses (GET all, POST, PATCH, DELETE)
/nameformats # Name formats (POST, PATCH, DELETE)
/primarynameformats # Primary name formats (POST, PATCH, DELETE)
/notes # Notes (GET all, POST, GET by id, PATCH, DELETE)
/onlinepresences # Online presences (GET all, POST, PATCH, DELETE)
/phones # Phones (GET all, POST, PATCH, DELETE)
/relationships # Relationships (GET all, POST, PATCH, DELETE)
/ratings # Ratings (POST, PATCH, DELETE)
/communicationpreferences # Communication prefs (GET, POST, PATCH, DELETE)
/constituents/attachments # Attachments (POST, PATCH, DELETE)
/constituents/customfields # Custom fields (GET all, POST, PATCH, DELETE)
/documents # Document upload (POST)
Constituent sub-resource lists (GET on a single constituent):
/constituents/{id}/actions # Actions
/constituents/{id}/addresses # Addresses
/constituents/{id}/aliases # Aliases
/constituents/{id}/appeals # Appeals
/constituents/{id}/attachments # Attachments
/constituents/{id}/communicationpreferences # Communication prefs
/constituents/{id}/constituentcodes # Constituent codes
/constituents/{id}/customfields # Custom fields
/constituents/{id}/educations # Education records
/constituents/{id}/emailaddresses # Email addresses
/constituents/{id}/fundraiserassignments # Fundraiser assignments
/constituents/{id}/fundraisers # Fundraisers
/constituents/{id}/memberships # Memberships
/constituents/{id}/nameformats/summary # Name format summary
/constituents/{id}/notes # Notes
/constituents/{id}/onlinepresences # Online presences
/constituents/{id}/phones # Phones
/constituents/{id}/profilepicture # Profile picture (GET, PATCH)
/constituents/{id}/prospectstatus # Prospect status
/constituents/{id}/prospectstatushistories # Prospect status history
/constituents/{id}/ratings # Ratings
/constituents/{id}/relationships # Relationships
Giving summaries (GET on constituent):
/constituents/{id}/givingsummary/first # First gift
/constituents/{id}/givingsummary/greatest # Greatest gift
/constituents/{id}/givingsummary/latest # Latest gift
/constituents/{id}/givingsummary/lifetimegiving # Lifetime giving
Batch/collection create endpoints:
POST /constituents/{id}/aliascollection # Alias collection (Create)
POST /constituents/{id}/customfieldcollection # Custom field collection (Create)
POST /phonescollection # Phone collection (Create)
Education sub-resources:
POST /educations/customfields # Education custom field (Create)
PATCH /educations/customfields/{id} # Education custom field (Edit)
DELETE /educations/customfields/{id} # Education custom field (Delete)
GET /educations/{id}/customfields # Education custom field list
Actions (included in Constituent API):
GET /actions # Action list (All constituents)
POST /actions # Action (Create)
GET /actions/{action_id} # Action (Get)
PATCH /actions/{action_id} # Action (Edit)
DELETE /actions/{action_id} # Action (Delete)
POST /actions/attachments # Attachment (Create)
PATCH /actions/attachments/{id} # Attachment (Edit)
DELETE /actions/attachments/{id} # Attachment (Delete)
GET /actions/{id}/attachments # Attachment list
POST /actions/customfields # Custom field (Create)
PATCH /actions/customfields/{id} # Custom field (Edit)
DELETE /actions/customfields/{id} # Custom field (Delete)
GET /actions/{id}/customfields # Custom field list
Type/lookup endpoints (GET):
/actionlocations /actionstatustypes /actiontypes
/addresstypes /aliastypes /attachmenttags
/constituentcodetypes /countries /currencyconfiguration
/emailaddresstypes /genders /maritalstatuses
/nameformatconfigurations /nameformattypes /notetypes
/onlinepresencetypes /organizationcontacttypes /phonetypes
/ratings/categories /ratings/categories/values /ratings/sources
/relationshiptypes /suffixes /titles
/educations/degreeclasses /educations/degrees /educations/departments
/educations/faculties /educations/schools /educations/statuses
/educations/subjects /educations/types
Gift API (28 operations)
Server: https://api.sky.blackbaud.com/gift/v1
GET /gifts # Gift list
POST /gifts # Gift (Create)
POST /gifts/list # Gift list (by criteria)
GET /gifts/{gift_id} # Gift (Get)
PATCH /gifts/{gift_id} # Gift (Edit)
DELETE /gifts/{gift_id} # Gift (Delete)
POST /giftbatches/{batch_id}/gifts # Gift (Batch)
PATCH /giftacknowledgements/{acknowledgement_id} # Gift acknowledgement (Edit)
PATCH /giftreceipts/{receipt_id} # Gift receipt (Edit)
Gift sub-resources:
POST /gifts/attachments # Attachment (Create)
PATCH /gifts/attachments/{id} # Attachment (Edit)
DELETE /gifts/attachments/{id} # Attachment (Delete)
GET /gifts/{id}/attachments # Attachment list
GET /gifts/customfields # Custom field list (All gifts)
POST /gifts/customfields # Custom field (Create)
POST /gifts/customfields/categories # Custom field category (GetOrCreate)
PATCH /gifts/customfields/{id} # Custom field (Edit)
DELETE /gifts/customfields/{id} # Custom field (Delete)
GET /gifts/{id}/customfields # Custom field list (Single gift)
POST /gifts/{id}/customfieldcollection # Custom field collection (Create)
Recurring gifts:
GET /recurringgifts/{gift_id}/canbeconverted # Recurring gift eligibility for automation
POST /recurringgifts/{gift_id}/converttoautomatic # Automate recurring gift
PUT /recurringgifts/{gift_id}/status # Gift status (Edit)
Lookups:
GET /attachmenttags # Attachment tags
GET /giftsubtypes # Gift subtypes
POST /documents # Document (Create)
GET /gifts/customfields/categories # Gift custom field categories
GET /gifts/customfields/categories/values # Gift custom field category values
Gift v2 API (10 operations, PREVIEW)
Server: https://api.sky.blackbaud.com/gft-gifts
POST /v2/gifts # Create a gift
POST /v2/gifts/generateinstallments # Generate pledge installments from schedule
GET /v2/gifts/{gift_id}/installments # Get pledge installments
POST /v2/gifts/{gift_id}/installments # Add pledge installments
GET /v2/gifts/{gift_id}/pledgepayments # Get pledge payments
POST /v2/gifts/{gift_id}/stock/sell # Sell a stock gift
GET /v2/batchgifts/{batchGiftId} # Get batch gift
PATCH /v2/batchgifts/{batchGiftId} # Edit batch gift
POST /v2/batchgifts/{batchId} # Add gifts to batch
PATCH /v2/recurringgifts/{gift_id}/amendments/paymentinformation # Edit recurring gift payment info
Fundraising API (53 operations)
Server: https://api.sky.blackbaud.com/fundraising/v1
Campaigns:
GET /campaigns # Campaign list
GET /campaigns/{campaign_id} # Campaign (Get)
GET /campaigns/categories # Campaign categories
POST /campaigns/attachments # Attachment (Create)
PATCH /campaigns/attachments/{id} # Attachment (Edit)
DELETE /campaigns/attachments/{id} # Attachment (Delete)
GET /campaigns/{id}/attachments # Attachment list
POST /campaigns/customfields # Custom field (Create)
PATCH /campaigns/customfields/{id} # Custom field (Edit)
DELETE /campaigns/customfields/{id} # Custom field (Delete)
GET /campaigns/{id}/customfields # Custom field list
GET /campaigns/customfields/categories # Custom field categories
GET /campaigns/customfields/categories/values # Custom field category values
Funds:
GET /funds # Fund list
GET /funds/{fund_id} # Fund (Get)
GET /funds/categories # Fund categories
POST /funds/attachments # Attachment (Create)
PATCH /funds/attachments/{id} # Attachment (Edit)
DELETE /funds/attachments/{id} # Attachment (Delete)
GET /funds/{id}/attachments # Attachment list
POST /funds/customfields # Custom field (Create)
PATCH /funds/customfields/{id} # Custom field (Edit)
DELETE /funds/customfields/{id} # Custom field (Delete)
GET /funds/{id}/customfields # Custom field list
GET /funds/customfields/categories # Custom field categories
GET /funds/customfields/categories/values # Custom field category values
Appeals:
GET /appeals # Appeal list
GET /appeals/{appeal_id} # Appeal (Get)
GET /appeals/categories # Appeal categories
POST /appeals/attachments # Attachment (Create)
PATCH /appeals/attachments/{id} # Attachment (Edit)
DELETE /appeals/attachments/{id} # Attachment (Delete)
GET /appeals/{id}/attachments # Attachment list
POST /appeals/customfields # Custom field (Create)
PATCH /appeals/customfields/{id} # Custom field (Edit)
DELETE /appeals/customfields/{id} # Custom field (Delete)
GET /appeals/{id}/customfields # Custom field list
GET /appeals/customfields/categories # Custom field categories
GET /appeals/customfields/categories/values # Custom field category values
Packages:
GET /packages # Package list
GET /packages/{package_id} # Package (Get)
Fundraisers:
POST /fundraisers/assignments # Assignment (Create)
PATCH /fundraisers/assignments/{id} # Assignment (Edit)
DELETE /fundraisers/assignments/{id} # Assignment (Delete)
GET /fundraisers/{id}/assignments # Assignment list
POST /fundraisers/goals # Goal (Create)
PATCH /fundraisers/goals/{id} # Goal (Edit)
DELETE /fundraisers/goals/{id} # Goal (Delete)
GET /fundraisers/goals/categories # Goal categories
GET /fundraisers/types # Fundraiser types
GET /fundraisers/{id}/goals # Goal list
Other:
GET /attachmenttags # Attachment tags
POST /documents # Document (Create)
Opportunity API (19 operations)
Server: https://api.sky.blackbaud.com/opportunity/v1
GET /opportunities # Opportunity list
POST /opportunities # Opportunity (Create)
GET /opportunities/{opportunity_id} # Opportunity (Get)
PATCH /opportunities/{opportunity_id} # Opportunity (Edit)
GET /opportunities/{id}/statushistories # Status history
POST /opportunities/attachments # Attachment (Create)
PATCH /opportunities/attachments/{id} # Attachment (Edit)
DELETE /opportunities/attachments/{id} # Attachment (Delete)
GET /opportunities/{id}/attachments # Attachment list
POST /opportunities/customfields # Custom field (Create)
PATCH /opportunities/customfields/{id} # Custom field (Edit)
DELETE /opportunities/customfields/{id} # Custom field (Delete)
GET /opportunities/{id}/customfields # Custom field list
GET /opportunities/customfields/categories # Custom field categories
GET /opportunities/customfields/categories/values # Custom field category values
GET /opportunitypurposes # Opportunity purposes
GET /opportunitystatuses # Opportunity statuses
GET /attachmenttags # Attachment tags
POST /documents # Document (Create)
Event API (65 operations)
Server: https://api.sky.blackbaud.com/event
Events:
GET /v1/eventlist # Event list
POST /v1/events # Event (Create)
GET /v1/events/{event_id} # Event (Get)
PATCH /v1/events/{event_id} # Event (Edit)
DELETE /v1/events/{event_id} # Event (Delete)
GET /v2/events/{event_id} # Event v2 (Get, PREVIEW)
Event sub-resources:
/v1/events/{id}/attachments # Attachments (GET list, POST, GET by id, PATCH, DELETE)
/v1/events/{id}/eventfees # Event fees (GET, POST)
/v1/events/{id}/eventparticipantoptions # Participant options (GET, POST)
/v1/events/{id}/participants # Participants (GET, POST)
/v1/events/{id}/expenses # Expenses (GET, POST, PREVIEW)
/v1/events/{id}/customfields # Custom fields (GET, PREVIEW)
Event categories & levels:
GET /v1/eventcategories # Event categories
POST /v1/eventcategories # Create category
PATCH /v1/eventcategories/{id} # Edit category
DELETE /v1/eventcategories/{id} # Delete category
GET /v1/participationlevels # Participation levels
POST /v1/participationlevels # Create level
PATCH /v1/participationlevels/{id} # Edit level
DELETE /v1/participationlevels/{id} # Delete level
Event fees & options (top-level edit/delete):
PATCH /v1/eventfees/{fee_id} # Edit event fee
DELETE /v1/eventfees/{fee_id} # Delete event fee
PATCH /v1/eventparticipantoptions/{option_id} # Edit event participant option
DELETE /v1/eventparticipantoptions/{option_id} # Delete event participant option
Event custom fields (PREVIEW):
POST /v1/events/customfields # Create
PATCH /v1/events/customfields/{id} # Edit
DELETE /v1/events/customfields/{id} # Delete
GET /v1/events/customfields/categories/details # Category details
GET /v1/events/customfields/categories/values # Category values
Participants:
GET /v1/participants/{participant_id} # Participant (Get)
PATCH /v1/participants/{participant_id} # Participant (Edit)
DELETE /v1/participants/{participant_id} # Participant (Delete)
GET /v1/participants/{id}/donations # Donations (GET, POST)
GET /v1/participants/{id}/fees # Fees (GET, POST)
GET /v1/participants/{id}/feepayments # Fee payments (GET, POST)
GET /v1/participants/{id}/participantoptions # Options (GET, POST)
GET /v1/participants/{id}/pledges # Pledges (GET, PREVIEW)
GET /v1/participants/{id}/seating # Seating (GET, PATCH, PREVIEW)
GET /v1/constituents/{id}/eventparticipation # Constituent participation (GET, PREVIEW)
Participant sub-resource deletes:
DELETE /v1/participantdonations/{id} # Delete donation
DELETE /v1/participantfees/{id} # Delete fee
DELETE /v1/participantfeepayments/{id} # Delete fee payment
PATCH /v1/participantoptions/{option_id} # Edit option
DELETE /v1/participantoptions/{option_id} # Delete option
Other:
GET /v1/eventattachmenttags # Attachment tags
POST /v1/eventattachmentupload # Attachment upload
GET /v1/eventgroups # Event groups (PREVIEW)
POST /v1/events/copyparticipantoptions # Copy participant options (PREVIEW)
GET /v1/expenses/{expense_id} # Expense (Get, PREVIEW)
PATCH /v1/expenses/{expense_id} # Expense (Edit, PREVIEW)
DELETE /v1/expenses/{expense_id} # Expense (Delete, PREVIEW)
GET /v1/expensetypes # Expense types (PREVIEW)
Key Entities
| Entity | Description |
|---|---|
| Constituent | Individual or organization donor/contact record |
| Gift | A donation, pledge, recurring gift, or gift-in-kind |
| Campaign | Top-level fundraising initiative |
| Fund | Financial designation for a gift |
| Appeal | A solicitation effort within a campaign |
| Package | Specific mailing or communication within an appeal |
| Opportunity | A prospective major gift being tracked |
| Action | An interaction/activity logged against a constituent |
| Event | A fundraising or stewardship event |
| Participant | A constituent registered for an event |
| Rating | Prospect/wealth rating on a constituent |
| Relationship | Connection between two constituents |
| Education | Educational history of a constituent |
| Membership | Membership records for a constituent |
Common Patterns
- Fuzzy dates:
{ "d": int, "m": int, "y": int }— allows partial dates - Currency values:
{ "value": 100.00 }— wrapped in an object - Lookup IDs: User-defined identifiers for external system mapping
- Custom fields: Available on most entities via
/customfieldssub-endpoints - Attachments: Available on most entities via
/attachmentssub-endpoints - Collection endpoints: Batch-create multiple sub-resources in one call (e.g.,
/aliascollection,/customfieldcollection) - Type/lookup endpoints: Dynamic picklist values (e.g.,
/addresstypes,/genders,/notetypes) - List responses:
{ "count": int, "value": [...] } - Filtering: Most list endpoints support
date_added,last_modified,include_inactive - PREVIEW endpoints: Marked as preview — may change without notice
Full API Reference
For complete endpoint specifications, request/response schemas, and parameter details, search the OpenAPI 3.0.1 spec files (do not read full files — they total ~2.5MB):
references/constituent.json # 159 operations — constituents, actions, ratings, giving summaries
references/gift.json # 28 operations — gifts, acknowledgements, receipts, recurring
references/gift-v2.json # 10 operations — gift v2, pledges, batch gifts (PREVIEW)
references/fundraising.json # 53 operations — campaigns, funds, appeals, packages, fundraisers
references/opportunity.json # 19 operations — opportunities, status histories
references/event.json # 65 operations — events, participants, fees, expenses
Search patterns (use grep or jq):
- All paths:
jq '.paths | keys' references/constituent.json - Specific endpoint:
jq '.paths["/constituents/{constituent_id}"]' references/constituent.json - All schemas:
jq '.components.schemas | keys' references/gift.json - Specific schema:
jq '.components.schemas["GiftCreate"]' references/gift.json
Disclaimer
This skill is not affiliated with, endorsed by, or sponsored by Blackbaud. It references publicly available API documentation for educational and integration purposes. The information may be outdated or incomplete. Always refer to the official Blackbaud documentation for the most current API specifications.
More from asebesta/claude-skills
ios-app-store-competitor-research
Research competitor apps on the Apple App Store. Extracts app metadata (title, subtitle, description, rating, reviews, category, developer, version, price) and downloads all screenshots. Use when user wants to analyze a competitor's app, research app store listings, gather competitive intelligence, or download app screenshots. Triggers on App Store URLs (apps.apple.com) or requests like "research this app", "analyze competitor", "get app store info", "download app screenshots".
31virtuous-api
Virtuous CRM API integration reference for building donor management features. Use when writing code that interacts with the Virtuous API, including fetchers, normalizers, or any backend integration with Virtuous donor data. Covers Contacts, Individuals, Gifts, Projects, Campaigns, Events, Grants, Tasks, and Webhooks.
6bloomerang-api
Bloomerang CRM API integration reference for building donor management features. Use when writing code that interacts with the Bloomerang API, including fetchers, normalizers, or any backend integration with Bloomerang donor data. Covers Constituents, Transactions, Pledges, Campaigns, Appeals, Interactions, Tasks, and Relationships.
6veo-video
>
1