canonical: https://jentic.com/apis/bloomerang.co/bloomerang

# Bloomerang API

Jentic publishes the only available OpenAPI specification for Bloomerang API, keeping it validated and agent-ready. Bloomerang is a donor management CRM for nonprofits, and the v2 API exposes constituents, households, transactions, pledges, campaigns, appeals, funds, tributes, communications, tasks, and relationships as structured resources. It supports both private API keys for server-to-server use and OAuth 2.0 authorization-code flow with scoped roles for end-user apps. The base URL is https://api.bloomerang.co/v2 with 111 documented endpoints across donor records and fundraising operations.

## For AI agents

Manage nonprofit donor records, transactions, pledges, campaigns, and communications in Bloomerang CRM through structured CRUD operations.

## Scope

Does not process credit card transactions, send marketing emails directly, or generate tax receipts - use for reading and writing donor, gift, and stewardship records in Bloomerang only.

## Capabilities

- Create and update constituent records with addresses, emails, phones, and custom fields
- Record one-time donations, recurring pledges, and pledge payments against a donor
- Organise giving into campaigns, appeals, and funds with their own performance summaries
- Log interactions, notes, and tasks against a constituent for stewardship workflows
- Manage household groupings and constituent-to-constituent relationships with roles
- Track tributes and soft credits to attribute gifts to honorees and influencers
- Issue refunds against existing transactions and reconcile processor records

## Use cases

### Donation intake from a custom form

Capture donations from a nonprofit's own website or event landing page and post them into Bloomerang. The flow looks up or creates a constituent via /constituents and /constituent, then posts a transaction via /transaction with the amount, fund, campaign, and appeal references. Suitable for replacing or supplementing Bloomerang's hosted donation forms when the nonprofit needs custom branding or fields.

Example prompt: Look up a constituent by email via GET /constituents/search, then call POST /transaction with amount, fundId, campaignId, and appealId for a $100 gift.

### Donor stewardship automation

Automate stewardship touchpoints by logging interactions and tasks against constituent records. POST /interaction records a contact (call, email, meeting), POST /note attaches an observation, and POST /task assigns a follow-up to a staff member with a due date. This supports thank-you call workflows, lapsed-donor outreach, and major gift cultivation tracking.

Example prompt: Call POST /interaction to log a thank-you call against constituent ID 12345, then POST /task to assign a 30-day follow-up to a staff member.

### Campaign performance reporting

Build campaign performance reports by combining /campaigns, /appeals, /funds, and /transactions data. The /campaigns/refreshsummaries endpoint forces a recalculation of totals, and per-campaign and per-appeal endpoints return goal, raised amount, and donor counts. Useful for executive dashboards, board reports, and end-of-year giving snapshots.

Example prompt: Call GET /campaigns/refreshsummaries, then GET /campaigns and return each campaign's name, goal, and raised amount.

### Household and relationship management

Maintain household groupings and constituent-to-constituent relationships for accurate acknowledgement letters and grateful giving recognition. POST /household groups members, POST /relationship links two constituents under a role (spouse, child, employer), and the relationship roles endpoints return the configurable taxonomy. This supports family giving rollups and matching-gift relationships.

Example prompt: Call POST /relationship to link constituent A to constituent B with role 'Spouse' and isPrimary=true.

### AI agent fundraising assistant

Let an AI agent help nonprofit staff find donor records, log interactions, and post gifts on their behalf. The agent searches Jentic for the right Bloomerang operation by intent, loads the schema, and executes with the API key or OAuth token held in your Jentic One instance. Suitable for development-team copilots, voice-driven gift entry, and automated stewardship reminders.

Example prompt: Search Jentic for 'create a Bloomerang constituent', load the schema, and execute it with first name, last name, and primary email for a new donor.

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | /transaction | Record a donation or pledge payment |
| POST | /relationship | Link two constituents under a defined role |
| POST | /interaction | Log a stewardship touchpoint against a constituent |
| GET | /campaigns | List campaigns with current totals |
| POST | /campaign | Create a new campaign |
| GET | /funds | List funds available for gift attribution |
| POST | /tribute | Create a tribute record for in-honor or in-memory giving |
| GET | /user/current | Return the authenticated user's profile |

## Key resources

- **Constituents** — Donor and prospect records with contact info, demographics, and custom fields
- **Transactions** — One-time gifts, pledges, pledge payments, and recurring donations
- **Campaigns / Appeals / Funds** — Fundraising hierarchy for tracking goals, raised totals, and gift attribution
- **Interactions / Notes / Tasks** — Stewardship touchpoints, observations, and assigned follow-ups
- **Households / Relationships** — Household groupings and constituent-to-constituent role-based links
- **Tributes / Soft Credits** — Gift attribution to honorees and influencers beyond the primary donor
- **Communications** — Email addresses, phone numbers, addresses, and email interest categories

## Why Jentic

- **Setup:** Wiring Bloomerang by hand means supporting both its X-API-KEY header and OAuth2 flow and mapping donor, gift, and campaign writes yourself. Through Jentic you install once, import Bloomerang from the API Directory, store the credential once, and your agent calls it.
- **Permission scoping:** Most Bloomerang writes carry their data in the request body (/transaction, /interaction, /relationship), so limit the agent to the operations it needs, such as recording a transaction or reading campaigns and funds. You choose that set, so a write operation like posting an interaction is not included unless you add it.
- **Credential handling:** Your Bloomerang API key or OAuth token is stored once, encrypted, by your own Jentic One instance and injected at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'record a donation' or 'find a constituent by email', and Jentic returns the matching Bloomerang operation with its input schema so the agent calls the right endpoint without browsing the docs site.

## Related APIs

- **Blueshift** — Customer engagement platform - pair when sending donor email and push campaigns based on Bloomerang gift events
- **Bluetick** — Email follow-up automation - pair for stewardship sequences after a gift is recorded
- **BlueInk** — E-signature platform - pair for pledge agreement and major gift commitment signing

## FAQ

### Why is there no official OpenAPI spec for Bloomerang API?

Bloomerang publishes a Swagger UI page with endpoint reference but does not distribute a maintained OpenAPI 3 file. Jentic generates and maintains this spec so AI agents and developers can call the Bloomerang API via standard tooling. It is validated against the live API and kept up to date. Get started with Jentic One, the self-hosted execution layer.

### What authentication does the Bloomerang API use?

Two methods are supported: a private API key passed in the X-API-KEY header for server-to-server integrations, and OAuth 2.0 authorization code flow with scopes ViewOnly, StandardEditFinancialData, Standard, and OrgAdmin for end-user applications. Through Jentic, both credential types are stored in the encrypted vault and injected at execution.

### Can I record a donation through the Bloomerang API?

Yes. POST /transaction creates a transaction record with fields including amount, type (Donation, Pledge, PledgePayment, RecurringDonationPayment), accountId for the donor, and fundId, campaignId, and appealId for attribution. The response returns the new transaction's id.

### What are the rate limits for the Bloomerang API?

Bloomerang enforces per-account rate limits that vary by plan, with HTTP 429 returned when exceeded. The published guidance is to stay below roughly 10 requests per second per API key; long-running batch jobs should use exponential backoff on 429 responses.

### How do I look up a constituent by email through Jentic?

Search Jentic for 'find a Bloomerang constituent by email', load the schema for GET /constituents/search, and execute it with the email in the search query. Install with pip install jentic and call await client.execute(ExecutionRequest(...)). Returns matching constituent IDs you can then GET in detail.

### Does Bloomerang support recurring pledge tracking?

Yes. POST /transaction with type=Pledge creates a pledge schedule, and subsequent POST /transaction with type=PledgePayment and a parentTransactionId records each instalment. The /pledges and /pledgePayments endpoints let you list and reconcile schedules.

### Is the Bloomerang API free?

API access is included with a Bloomerang subscription - there is no separate API fee. Pricing is tied to the Bloomerang plan tier and the size of the constituent database, which determines available scopes (ViewOnly, Standard, OrgAdmin) for OAuth applications.

### Can I limit what my agent is allowed to do with the Bloomerang API?

Yes. Because you run your own self-hosted Jentic One instance, your rules decide exactly which Bloomerang operations and credentials the agent may use. Most Bloomerang writes carry their data in the request body, so you can restrict the agent to just the operations it needs, such as reading campaigns and funds with GET /campaigns and GET /funds while excluding write calls like POST /transaction, POST /interaction, or POST /relationship. Any operation you do not add to that set stays unavailable to the agent.
