Developer Documentation
Everything you need to integrate with the FundraiserMax API. Build custom workflows, sync donor data, and connect AI assistants to your fundraising platform.
Contacts
The Contacts API lets you manage donor and constituent records. You can list, search, create, update, and delete contacts associated with your account.
Retrieve a paginated list of contacts. Supports search, sorting, and pagination.
| Name | Type | Required | Description |
|---|---|---|---|
accountId | string | Yes | Your organization account ID. |
search | string | No | Full-text search across name, email, and organization. |
limit | number | No | Number of records to return (default 20, max 100). |
offset | number | No | Number of records to skip for pagination (default 0). |
sortBy | string | No | Field to sort by: firstName, lastName, email, createdAt (default createdAt). |
sortOrder | string | No | Sort direction: asc or desc (default desc). |
curl -X GET "https://api.fundraisermax.com/api/v1/contacts?accountId=acct_123&limit=10&search=jane" \
-H "X-API-Key: fmx_your_key_id" \
-H "Authorization: Bearer your_api_secret"Response
{
"data": [
{
"id": "cnt_abc123",
"firstName": "Jane",
"lastName": "Doe",
"email": "jane.doe@example.com",
"phone": "+1-555-0100",
"organization": "Doe Foundation",
"createdAt": "2025-11-15T10:30:00Z",
"updatedAt": "2026-01-20T08:15:00Z"
}
],
"total": 1,
"limit": 10,
"offset": 0
}Retrieve a single contact by ID including all profile fields and metadata.
| Name | Type | Required | Description |
|---|---|---|---|
accountId | string | Yes | Your organization account ID (query parameter). |
id | string | Yes | The contact ID (path parameter). |
curl -X GET "https://api.fundraisermax.com/api/v1/contacts/cnt_abc123?accountId=acct_123" \
-H "X-API-Key: fmx_your_key_id" \
-H "Authorization: Bearer your_api_secret"Response
{
"id": "cnt_abc123",
"firstName": "Jane",
"lastName": "Doe",
"email": "jane.doe@example.com",
"phone": "+1-555-0100",
"organization": "Doe Foundation",
"address": "123 Main St, Springfield, IL 62701",
"notes": "Major donor - prefers email contact",
"tags": ["major-donor", "annual-gala"],
"totalDonations": 15000.00,
"lastDonationDate": "2026-01-15T00:00:00Z",
"createdAt": "2025-11-15T10:30:00Z",
"updatedAt": "2026-01-20T08:15:00Z"
}Create a new contact record. Returns the created contact with its generated ID. You can include nested sub-resource arrays (phoneNumbers, emailAddresses, addresses, education, employment, notes) to create them in a single request.
| Name | Type | Required | Description |
|---|---|---|---|
accountId | string | Yes | Your organization account ID. |
firstName | string | Yes | Contact first name. |
lastName | string | Yes | Contact last name. |
contactType | string | No | INDIVIDUAL, ORGANIZATION, or HOUSEHOLD (default INDIVIDUAL). |
status | string | No | ACTIVE, INACTIVE, DO_NOT_CONTACT, or BOUNCED (default ACTIVE). |
prefix | string | No | Name prefix (e.g. Mr., Dr.). |
middleName | string | No | Middle name. |
suffix | string | No | Name suffix (e.g. Jr., III). |
salutation | string | No | Informal salutation. |
formalSalutation | string | No | Formal salutation for letters. |
primaryEmail | string | No | Primary email address. |
primaryPhone | string | No | Primary phone number. |
organization | string | No | Organization or company name. |
title | string | No | Job title. |
employer | string | No | Employer name. |
occupation | string | No | Occupation. |
industry | string | No | Industry sector. |
spouse | string | No | Spouse name. |
birthDate | string | No | Date of birth (ISO 8601). |
gender | string | No | MALE, FEMALE, OTHER, or PREFER_NOT_TO_SAY. |
politicalParty | string | No | Political party affiliation. |
capacity | string | No | Giving capacity estimate. |
quickNotes | string | No | Quick notes displayed on the contact profile. |
source | string | No | How the contact was acquired. |
tags | string[] | No | Array of tag strings for categorization. |
preferredContactMethod | string | No | EMAIL, PHONE, TEXT, or MAIL. |
phoneNumbers | object[] | No | Array of phone number objects to create (see Contact Phones). |
emailAddresses | object[] | No | Array of email address objects to create (see Contact Emails). |
addresses | object[] | No | Array of address objects to create (see Contact Addresses). |
education | object[] | No | Array of education record objects to create (see Contact Education). |
employment | object[] | No | Array of employment record objects to create (see Contact Employment). |
notes | object[] | No | Array of note objects to create (see Contact Notes). |
curl -X POST "https://api.fundraisermax.com/api/v1/contacts" \
-H "X-API-Key: fmx_your_key_id" \
-H "Authorization: Bearer your_api_secret" \
-H "Content-Type: application/json" \
-d '{
"accountId": "acct_123",
"firstName": "John",
"lastName": "Smith",
"prefix": "Mr.",
"primaryEmail": "john.smith@example.com",
"primaryPhone": "+1-555-0200",
"organization": "Smith Family Trust",
"title": "Executive Director",
"birthDate": "1985-03-15",
"quickNotes": "Interested in annual gala sponsorship",
"tags": ["prospect"],
"phoneNumbers": [
{ "phoneNumber": "+1-555-0200", "phoneType": "MOBILE", "isPrimary": true }
],
"emailAddresses": [
{ "emailAddress": "john.smith@example.com", "emailType": "WORK", "isPrimary": true }
]
}'Response
{
"id": "cnt_def456",
"firstName": "John",
"lastName": "Smith",
"prefix": "Mr.",
"primaryEmail": "john.smith@example.com",
"primaryPhone": "+1-555-0200",
"organization": "Smith Family Trust",
"title": "Executive Director",
"birthDate": "1985-03-15",
"quickNotes": "Interested in annual gala sponsorship",
"tags": ["prospect"],
"contactType": "INDIVIDUAL",
"status": "ACTIVE",
"totalDonated": 0,
"lastDonationDate": null,
"phoneNumbers": [
{ "id": "ph_001", "phoneNumber": "+1-555-0200", "phoneType": "MOBILE", "isPrimary": true }
],
"emailAddresses": [
{ "id": "em_001", "emailAddress": "john.smith@example.com", "emailType": "WORK", "isPrimary": true }
],
"createdAt": "2026-02-16T12:00:00Z",
"updatedAt": "2026-02-16T12:00:00Z"
}Update an existing contact. Send only the fields you want to change -- unspecified fields are left unchanged. You can also pass nested sub-resource arrays (phoneNumbers, emailAddresses, addresses, education, employment, notes) for bulk sub-resource management.
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Yes | The contact ID (path parameter). |
firstName | string | No | Updated first name. |
lastName | string | No | Updated last name. |
prefix | string | No | Updated name prefix. |
suffix | string | No | Updated name suffix. |
salutation | string | No | Updated informal salutation. |
formalSalutation | string | No | Updated formal salutation. |
primaryEmail | string | No | Updated primary email. |
primaryPhone | string | No | Updated primary phone. |
organization | string | No | Updated organization name. |
title | string | No | Updated job title. |
employer | string | No | Updated employer. |
occupation | string | No | Updated occupation. |
industry | string | No | Updated industry. |
spouse | string | No | Updated spouse name. |
birthDate | string | No | Updated birth date (ISO 8601). |
gender | string | No | MALE, FEMALE, OTHER, or PREFER_NOT_TO_SAY. |
politicalParty | string | No | Updated political party. |
capacity | string | No | Updated giving capacity. |
quickNotes | string | No | Updated quick notes on the profile. |
source | string | No | Updated acquisition source. |
contactType | string | No | INDIVIDUAL, ORGANIZATION, or HOUSEHOLD. |
status | string | No | ACTIVE, INACTIVE, DO_NOT_CONTACT, or BOUNCED. |
preferredContactMethod | string | No | EMAIL, PHONE, TEXT, or MAIL. |
tags | string[] | No | Updated tags array (replaces existing tags). |
phoneNumbers | object[] | No | Bulk replace phone numbers (see Contact Phones). |
emailAddresses | object[] | No | Bulk replace email addresses (see Contact Emails). |
addresses | object[] | No | Bulk replace addresses (see Contact Addresses). |
education | object[] | No | Bulk replace education records (see Contact Education). |
employment | object[] | No | Bulk replace employment records (see Contact Employment). |
notes | object[] | No | Bulk replace notes (see Contact Notes). |
curl -X PUT "https://api.fundraisermax.com/api/v1/contacts/cnt_abc123" \
-H "X-API-Key: fmx_your_key_id" \
-H "Authorization: Bearer your_api_secret" \
-H "Content-Type: application/json" \
-d '{
"primaryPhone": "+1-555-0999",
"quickNotes": "Upgraded to major donor status",
"tags": ["major-donor", "annual-gala", "board-member"]
}'Response
{
"id": "cnt_abc123",
"firstName": "Jane",
"lastName": "Doe",
"email": "jane.doe@example.com",
"phone": "+1-555-0999",
"organization": "Doe Foundation",
"address": "123 Main St, Springfield, IL 62701",
"notes": "Major donor - prefers email contact",
"tags": ["major-donor", "annual-gala", "board-member"],
"totalDonations": 15000.00,
"lastDonationDate": "2026-01-15T00:00:00Z",
"createdAt": "2025-11-15T10:30:00Z",
"updatedAt": "2026-02-16T14:30:00Z"
}Permanently delete a contact and all associated data. This action cannot be undone.
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Yes | The contact ID (path parameter). |
accountId | string | Yes | Your organization account ID (query parameter). |
curl -X DELETE "https://api.fundraisermax.com/api/v1/contacts/cnt_abc123?accountId=acct_123" \
-H "X-API-Key: fmx_your_key_id" \
-H "Authorization: Bearer your_api_secret"Response
{
"message": "Contact cnt_abc123 has been deleted."
}