> ## Documentation Index
> Fetch the complete documentation index at: https://docs.virtuous.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Overview

> Build integrations with Virtuous CRM+ — the constituent and giving platform used by thousands of nonprofits.

The Virtuous CRM+ API is the integration surface for the Virtuous Responsive Fundraising platform. It exposes the data that nonprofits rely on to manage their donor relationships: Contacts, Gifts, recurring giving schedules, Campaigns, Designations, custom fields, and the activity history that ties them together.

This documentation is written for **integration partners** — fundraising platforms, payment processors, accounting systems, marketing tools, event and auction platforms, and other software vendors that need to read from or write to Virtuous on behalf of mutual nonprofit customers.

## What you can build

The CRM+ API supports the integration patterns most commonly required of partner systems:

* **Sync donations into Virtuous** — push Gifts from your platform into a nonprofit's Virtuous instance so the donor record of truth stays complete.
* **Keep donor records current** — create and update Contacts as donors register, update profiles, or change addresses in your system.
* **Read Virtuous data for downstream systems** — pull donor and giving data to power marketing automation, accounting reconciliation, or reporting and analytics.
* **Build two-way syncs** — combine reads, writes, and webhook subscriptions to keep your platform and Virtuous continuously consistent.
* **React to Virtuous events** — receive real-time webhook notifications when Contacts or Gifts are created or updated in Virtuous, and act on them in your system.

If your integration involves donation forms, payment processing, or recurring giving flows that originate on a donor-facing payment surface, also review the [Raise API](/raise/overview). Many partner integrations span both products.

## API at a glance

| Property        | Value                                                           |
| --------------- | --------------------------------------------------------------- |
| Base URL        | `https://api.virtuoussoftware.com`                              |
| Protocol        | HTTPS only — plain HTTP requests fail                           |
| Authentication  | API Key or OAuth 2.0 Bearer token in the `Authorization` header |
| Request format  | `application/json`                                              |
| Response format | `application/json` (including all error responses)              |
| Rate limit      | 5,000 requests per hour, per credential                         |

The API does not support cross-origin requests on authenticated endpoints. All requests must originate from a server-side environment — never embed CRM+ credentials in client-side browser code.

<Warning>
  There is no dedicated test environment for the CRM+ API. Every request made with a valid API key reads from and writes to the organization's live data. Coordinate with your nonprofit customer to use a sandbox Virtuous organization for development work, or restrict early testing to read-only endpoints until your write paths are verified.
</Warning>

## How the CRM+ data model works

A handful of resources do most of the work in a typical partner integration. Understanding how they relate is the difference between a clean integration and a duplicate-record cleanup project six months in.

* **Contact** — the household or organization record. Contacts have one or more **ContactIndividuals** (the people inside the household) and one or more **ContactAddresses**.
* **Gift** — a single donation. Every Gift belongs to a Contact and is allocated to one or more **Designations** (the Project or Campaign the gift supports).
* **Transaction endpoints** — the recommended path for importing Gifts and Contacts from external systems. Transactions are placed into a holding state and processed in a nightly batch with intelligent contact-matching and deduplication. This is almost always safer than calling `POST /api/Contact` or `POST /api/Gift` directly.

The [Virtuous CRM Data Model](/crm/concepts/data-model) section covers each resource in detail before you start building.

<Tip>
  When in doubt, prefer the Transaction endpoints (`POST /api/Contact/Transaction` and `POST /api/GiftTransaction`) over direct creation. They run Virtuous's contact-matching logic to avoid duplicates and are the path the platform team recommends for partner integrations.
</Tip>

## Where to go next

<CardGroup cols={2}>
  <Card title="Quickstart" icon="rocket" href="/crm/quickstart">
    Get an API key and make your first authenticated call in under five minutes.
  </Card>

  <Card title="Authentication" icon="key" href="/crm/authentication">
    API Key versus OAuth, how to obtain credentials, and how to attach them to requests.
  </Card>

  <Card title="Make Your First API Call" icon="terminal" href="/crm/first-api-call">
    A step-by-step walkthrough with curl and JavaScript for the first request you should send.
  </Card>

  <Card title="Virtuous CRM Data Model" icon="diagram-project" href="/crm/concepts/data-model">
    The Contact, Gift, and Designation hierarchy every integration depends on.
  </Card>

  <Card title="Common Workflows" icon="arrows-spin" href="/crm/workflows/create-a-contact">
    Sync external donations, query records, and reconcile failed syncs.
  </Card>

  <Card title="Integration Recipes" icon="layer-group" href="/crm/recipes/stripe-to-virtuous">
    Worked examples for Stripe, Mailchimp, fundraising platforms, and more.
  </Card>
</CardGroup>
