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.

GET/v1/contacts

Retrieve a paginated list of contacts. Supports search, sorting, and pagination.

NameTypeRequiredDescription
accountIdstringYesYour organization account ID.
searchstringNoFull-text search across name, email, and organization.
limitnumberNoNumber of records to return (default 20, max 100).
offsetnumberNoNumber of records to skip for pagination (default 0).
sortBystringNoField to sort by: firstName, lastName, email, createdAt (default createdAt).
sortOrderstringNoSort 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
}
GET/v1/contacts/:id

Retrieve a single contact by ID including all profile fields and metadata.

NameTypeRequiredDescription
accountIdstringYesYour organization account ID (query parameter).
idstringYesThe 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"
}
POST/v1/contacts

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.

NameTypeRequiredDescription
accountIdstringYesYour organization account ID.
firstNamestringYesContact first name.
lastNamestringYesContact last name.
contactTypestringNoINDIVIDUAL, ORGANIZATION, or HOUSEHOLD (default INDIVIDUAL).
statusstringNoACTIVE, INACTIVE, DO_NOT_CONTACT, or BOUNCED (default ACTIVE).
prefixstringNoName prefix (e.g. Mr., Dr.).
middleNamestringNoMiddle name.
suffixstringNoName suffix (e.g. Jr., III).
salutationstringNoInformal salutation.
formalSalutationstringNoFormal salutation for letters.
primaryEmailstringNoPrimary email address.
primaryPhonestringNoPrimary phone number.
organizationstringNoOrganization or company name.
titlestringNoJob title.
employerstringNoEmployer name.
occupationstringNoOccupation.
industrystringNoIndustry sector.
spousestringNoSpouse name.
birthDatestringNoDate of birth (ISO 8601).
genderstringNoMALE, FEMALE, OTHER, or PREFER_NOT_TO_SAY.
politicalPartystringNoPolitical party affiliation.
capacitystringNoGiving capacity estimate.
quickNotesstringNoQuick notes displayed on the contact profile.
sourcestringNoHow the contact was acquired.
tagsstring[]NoArray of tag strings for categorization.
preferredContactMethodstringNoEMAIL, PHONE, TEXT, or MAIL.
phoneNumbersobject[]NoArray of phone number objects to create (see Contact Phones).
emailAddressesobject[]NoArray of email address objects to create (see Contact Emails).
addressesobject[]NoArray of address objects to create (see Contact Addresses).
educationobject[]NoArray of education record objects to create (see Contact Education).
employmentobject[]NoArray of employment record objects to create (see Contact Employment).
notesobject[]NoArray 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"
}
PUT/v1/contacts/:id

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.

NameTypeRequiredDescription
idstringYesThe contact ID (path parameter).
firstNamestringNoUpdated first name.
lastNamestringNoUpdated last name.
prefixstringNoUpdated name prefix.
suffixstringNoUpdated name suffix.
salutationstringNoUpdated informal salutation.
formalSalutationstringNoUpdated formal salutation.
primaryEmailstringNoUpdated primary email.
primaryPhonestringNoUpdated primary phone.
organizationstringNoUpdated organization name.
titlestringNoUpdated job title.
employerstringNoUpdated employer.
occupationstringNoUpdated occupation.
industrystringNoUpdated industry.
spousestringNoUpdated spouse name.
birthDatestringNoUpdated birth date (ISO 8601).
genderstringNoMALE, FEMALE, OTHER, or PREFER_NOT_TO_SAY.
politicalPartystringNoUpdated political party.
capacitystringNoUpdated giving capacity.
quickNotesstringNoUpdated quick notes on the profile.
sourcestringNoUpdated acquisition source.
contactTypestringNoINDIVIDUAL, ORGANIZATION, or HOUSEHOLD.
statusstringNoACTIVE, INACTIVE, DO_NOT_CONTACT, or BOUNCED.
preferredContactMethodstringNoEMAIL, PHONE, TEXT, or MAIL.
tagsstring[]NoUpdated tags array (replaces existing tags).
phoneNumbersobject[]NoBulk replace phone numbers (see Contact Phones).
emailAddressesobject[]NoBulk replace email addresses (see Contact Emails).
addressesobject[]NoBulk replace addresses (see Contact Addresses).
educationobject[]NoBulk replace education records (see Contact Education).
employmentobject[]NoBulk replace employment records (see Contact Employment).
notesobject[]NoBulk 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"
}
DELETE/v1/contacts/:id

Permanently delete a contact and all associated data. This action cannot be undone.

NameTypeRequiredDescription
idstringYesThe contact ID (path parameter).
accountIdstringYesYour 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."
}