Skip to main content

Outcome

An authenticated user has a new Endaoment fund. Your app stores the fund id for donations and grants.

When

After Authenticate. Trigger when the user opens their first fund or creates an additional one. The authenticated user becomes the fund manager. See the glossary for DAF terminology.

Choose your route

Fund creation depends on how the caller authenticated: Check GET /v1/auth/whoami if unsure: OIDC callers include clientId when issued through a registered OAuth client. Proxy all calls from your backend. See Integration Patterns.

Option A: Registered OAuth client → POST /v1/funds/partner

Use this path for standard OAuth quickstart integrators. Prerequisite: The acting user must have saved identity (PII) on Endaoment before this call. The partner route builds the fund advisor from stored identity — if none exists, the API returns 400: “User must be provisioned with PII before creating a partner fund.” Complete Authenticate with profile/address data, or Provision user on the partner track first.

Auth

Pick one acting-user path (see Partner auth options): The registered OAuth user token path is the standard quickstart flow after Authenticate. Server-to-server partner flows use x-api-key (see Partner Journey).

Required inputs

Flat body (PartnerCreateFundInputDto) — no fundInput wrapper: API reference: Create fund

Example request (registered OAuth user token)

Example request (API key + impersonation header)


Option B: First-party token → POST /v1/funds

Use only when the access token has no clientId (not a registered OAuth client token).

Auth

API reference: Create fund

Required inputs

Minimum fundInput fields:

Example request


Response you need

Common mistakes

  • Calling POST /v1/funds with a registered OAuth client token (returns 400 — use /v1/funds/partner)
  • Creating a partner fund before the acting user has saved PII/identity on Endaoment
  • Using fundInput / advisor.* schema on the partner route (partner route expects a flat body)
  • Using partner identifiers shorter than 16 characters (validation rejects them)
  • Omitting partnerAccountIdentifier on the partner route
  • Calling the API from the browser with a Bearer token

Full sample

Reference implementation: GitHub quickstart — create DAF. Optional next step: Manage Collaborators. Next: Fund a DAF