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.
Idempotency: 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.
Assistant capability: springiq_create_activity. Required permission: Donors (applies when called on behalf of a signed-in person).
Authentication
Path parameters
The stored ID of the donor (or donor organization) to attach the activity to.
Request
Activity payload — see CreateDonorActivityV1Request for field documentation.
The kind of activity being logged. Supported values:
Gifts (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".LoggedGift) are not supported by this endpoint — they are recorded through a separate gift-entry flow.
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.
Short human-readable title for the activity. Required, non-whitespace. Example: "Quarterly stewardship call".
Surfaced in donor activity lists in the AwardSpring admin UI.
Optional free-form details about the activity. Example: "Discussed plans for the spring scholarship gala; donor expressed interest in funding a new STEM award.".
Monetary amount for pledge activities. Required and greater than zero when
activity_type is LoggedPledge; ignored for non-monetary activity
types. Example: 5000.00.
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".
Optional stored ID of a campaign at this institution, for pledge activities. Only meaningful when
ActivityType is LoggedPledge; ignored for non-monetary activity types.
Example: "7HQ2KW9XR".
Optional stored 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: "4MZ8RT2PW".
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
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.
The new activity’s stored ID: 9 characters, the same ID the donor’s timeline shows for it. A dry run
returns null, because nothing was saved.
Echo of the activity type that was saved (e.g. "LoggedEmail", "LoggedPledge").
Echo of the saved Subject.
Echo of the saved Description (may be null).
The activity date (UTC epoch seconds on the wire).
Pledge amount, or null for non-monetary activity types.
Fund identifier the pledge was directed toward, or null for non-monetary activity types.
The stored ID of the campaign the pledge belongs to, or null for non-monetary activity types.
The stored ID of the staff member the activity was assigned to, or null when not assigned.
Completion flag — meaningful only for LoggedPledge. Always false for non-monetary types.