Create a donor activity log entry (call, meeting, email, note, or pledge).

Records that an interaction with a donor took place — a call you just finished, a meeting, an email, a note, or a verbal pledge. Errors come back with a stable `code`, a readable `message`, and per-field `details`, so a caller can tell what to correct. Supported activity types: `LoggedEmail`, `LoggedPhone`, `LoggedMeeting`, `LoggedNote`, `LoggedPledge`. Gifts are recorded through the Gifts endpoints instead. A typical use is working through a call list and logging each conversation as it ends, with the summary and any follow-up owner attached. Set `dry_run=true` (query param or `Dry-Run: true` header) to validate without persisting. <b>Idempotency:</b> the request supports an optional `Idempotency-Key` header (any printable-ASCII string, 1–255 chars — UUIDs work well). When supplied, the same key + same request body within 24 hours returns the original response verbatim without creating a duplicate activity. The same key with a different body returns `422 idempotency_key_request_mismatch`; a concurrent retry while the first call is still executing returns `409 idempotency_key_in_flight`. Only 2xx responses are cached — 4xx/5xx leave the key available for retry with a corrected payload.

Authentication

X-Spring-API-Keystring
Secret API key issued per institution. Send it on every request.

Path parameters

donorIdintegerRequired

AwardSpring donor (or donor-organization) user ID to attach the activity to.

Request

Activity payload — see CreateDonorActivityV1Request for field documentation.

activity_typeenum or nullRequired

The kind of activity being logged. Supported values: LoggedEmail — an email exchanged with the donor (manually logged after the fact). Example: "LoggedEmail".LoggedPhone — a phone conversation with the donor. Example: "LoggedPhone".LoggedMeeting — an in-person or virtual meeting. Example: "LoggedMeeting".LoggedNote — a free-form note attached to the donor record. Example: "LoggedNote".LoggedPledge — a recorded pledge of a future gift; requires Amount. Example: "LoggedPledge". Gifts (LoggedGift) are not supported by this endpoint — they are recorded through a separate gift-entry flow.

activity_datestring or nullRequired

ISO 8601 date or date-time the activity occurred (or is scheduled for, when in the future). A full date is required — examples: "2026-04-03", "2026-04-03T10:00:00Z", "2026-04-03T10:00:00-05:00". Time-of-day is optional. The date is interpreted in the tenant’s configured time zone and persisted in UTC.

subjectstring or nullRequired

Short human-readable title for the activity. Required, non-whitespace. Example: "Quarterly stewardship call". Surfaced in donor activity lists in the AwardSpring admin UI.

descriptionstring or nullOptional

Optional free-form details about the activity. Example: "Discussed plans for the spring scholarship gala; donor expressed interest in funding a new STEM award.".

amountdouble or nullOptional

Monetary amount for pledge activities. Required and greater than zero when activity_type is LoggedPledge; ignored for non-monetary activity types. Example: 5000.00.

fund_idstring or nullOptional

Optional fund identifier the pledge is directed toward. Only meaningful when ActivityType is LoggedPledge. When the tenant has Funds Management enabled, the value must match an existing fund’s FundIdName; otherwise a fund_not_found error is returned. When Funds Management is disabled, the value is stored as a free-form label without validation. Example: "GEN-2026".

campaign_idinteger or nullOptional

Optional campaign association for pledge activities. Only meaningful when ActivityType is LoggedPledge; ignored for non-monetary activity types. Example: 42.

assigned_to_user_idinteger or nullOptional

Optional AwardSpring user ID of the staff member the activity is assigned to (e.g., the donor manager who should follow up). Pass null or omit when no assignment is intended. Example: 12.

is_completedbooleanOptional

Whether the activity is completed. For non-monetary activity types this is ignored (treated as false). For LoggedPledge, true indicates the pledge has been fulfilled. Defaults to false.

Response

Created
objectstring or nullOptionalRead-only

Stripe-style resource discriminator. Stable, snake_case string naming the resource type. Serialized first so it reads as the leading field of every V1 resource body.

idintegerOptional

AwardSpring-assigned identifier of the newly created activity row. Stable for the lifetime of the activity.

activity_typestring or nullOptional

Echo of the activity type that was saved (e.g. "LoggedEmail", "LoggedPledge").

subjectstring or nullOptional

Echo of the saved Subject.

descriptionstring or nullOptional

Echo of the saved Description (may be null).

datedatetimeOptional

The activity date (UTC epoch seconds on the wire).

amountdouble or nullOptional

Pledge amount, or null for non-monetary activity types.

fund_idstring or nullOptional

Fund identifier the pledge was directed toward, or null for non-monetary activity types.

campaign_idinteger or nullOptional

Campaign association, or null for non-monetary activity types.

assigned_to_user_idinteger or nullOptional

Staff member the activity was assigned to, or null when not assigned.

is_completedbooleanOptional

Completion flag — meaningful only for LoggedPledge. Always false for non-monetary types.

Errors

400
Bad Request Error
404
Not Found Error
409
Conflict Error
422
Unprocessable Entity Error
429
Too Many Requests Error