curl --request POST \
--url https://api.dev.endaoment.org/v1/funds/partner \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"name": "Lovelace Family DAF",
"partnerAccountIdentifier": "a7e21d94-5c3f-4b8a-9f60-2e4d8c1b7a53",
"description": "A family DAF managed through a partner integration",
"type": "Private",
"partnerUserIdentifier": "c3f8b2e4-9d1a-4f6b-8e2c-7a5d90c41b3f"
}
'import requests
url = "https://api.dev.endaoment.org/v1/funds/partner"
payload = {
"name": "Lovelace Family DAF",
"partnerAccountIdentifier": "a7e21d94-5c3f-4b8a-9f60-2e4d8c1b7a53",
"description": "A family DAF managed through a partner integration",
"type": "Private",
"partnerUserIdentifier": "c3f8b2e4-9d1a-4f6b-8e2c-7a5d90c41b3f"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'Lovelace Family DAF',
partnerAccountIdentifier: 'a7e21d94-5c3f-4b8a-9f60-2e4d8c1b7a53',
description: 'A family DAF managed through a partner integration',
type: 'Private',
partnerUserIdentifier: 'c3f8b2e4-9d1a-4f6b-8e2c-7a5d90c41b3f'
})
};
fetch('https://api.dev.endaoment.org/v1/funds/partner', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.dev.endaoment.org/v1/funds/partner",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => 'Lovelace Family DAF',
'partnerAccountIdentifier' => 'a7e21d94-5c3f-4b8a-9f60-2e4d8c1b7a53',
'description' => 'A family DAF managed through a partner integration',
'type' => 'Private',
'partnerUserIdentifier' => 'c3f8b2e4-9d1a-4f6b-8e2c-7a5d90c41b3f'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.dev.endaoment.org/v1/funds/partner"
payload := strings.NewReader("{\n \"name\": \"Lovelace Family DAF\",\n \"partnerAccountIdentifier\": \"a7e21d94-5c3f-4b8a-9f60-2e4d8c1b7a53\",\n \"description\": \"A family DAF managed through a partner integration\",\n \"type\": \"Private\",\n \"partnerUserIdentifier\": \"c3f8b2e4-9d1a-4f6b-8e2c-7a5d90c41b3f\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.dev.endaoment.org/v1/funds/partner")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Lovelace Family DAF\",\n \"partnerAccountIdentifier\": \"a7e21d94-5c3f-4b8a-9f60-2e4d8c1b7a53\",\n \"description\": \"A family DAF managed through a partner integration\",\n \"type\": \"Private\",\n \"partnerUserIdentifier\": \"c3f8b2e4-9d1a-4f6b-8e2c-7a5d90c41b3f\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.dev.endaoment.org/v1/funds/partner")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"Lovelace Family DAF\",\n \"partnerAccountIdentifier\": \"a7e21d94-5c3f-4b8a-9f60-2e4d8c1b7a53\",\n \"description\": \"A family DAF managed through a partner integration\",\n \"type\": \"Private\",\n \"partnerUserIdentifier\": \"c3f8b2e4-9d1a-4f6b-8e2c-7a5d90c41b3f\"\n}"
response = http.request(request)
puts response.read_body{
"id": "123e4567-e89b-12d3-a456-426614174000",
"name": "Doe Family Foundation",
"type": "Private",
"manager": {
"id": "123e4567-e89b-12d3-a456-426614174000",
"walletAddress": "0x742d35Cc6634C0532925a3b844Bc454e4438f44e"
},
"chainId": 1,
"advisor": {
"firstName": "John",
"lastName": "Doe"
},
"featuredIndex": 1,
"usdcBalance": "20500000",
"availableBalance": "21000000",
"description": "A family foundation dedicated to supporting educational initiatives",
"createdAtUtc": "2024-01-01T00:00:00Z",
"updatedAtUtc": "2024-03-14T12:00:00Z",
"lifetimeDonationsUsdc": "1000000000",
"inboundFeeBps": 25,
"outboundFeeBps": 50,
"grantsGiven": 10,
"inTransitBuyUsdcAmount": "5000000",
"inTransitSellUsdcAmount": "3000000",
"investedUsdc": "50000000",
"totalGrantedUsdc": "25000000",
"processingTransfersTotalUsdc": "1000000",
"illiquidBalance": "10000000",
"poolDetails": {
"eligibleEntities": "Organizations",
"algorithmType": "QuadraticFunding",
"distributionSchedule": "Quarterly",
"distributionPercentage": 0.25,
"eligibleVotes": "GrantsAndDonations",
"voteWeight": "UsdcValue"
},
"expectedDeploymentInfo": {
"expectedManagerAddress": "0x742d35Cc6634C0532925a3b844Bc454e4438f44e",
"expectedSalt": "0x0000000000000000000000000000000000000000000000000000000000000123",
"expectedComputedAddress": "0x1234567890123456789012345678901234567890",
"expectedChainId": 1
},
"deploymentTransactionHash": "0xf89f7da1e5d79dcb1b8863d0926fe41204785b443ce2d1dca4bf50070c492567",
"contractAddress": "0x1234567890123456789012345678901234567890",
"lastBalanceSyncUtc": "2024-03-14T12:00:00Z",
"shortDescription": "Supporting education",
"vanityUrl": "doe-family-foundation",
"paypalId": "123e4567-e89b-12d3-a456-426614174000",
"logo": "https://example.com/logo.png",
"staffNotes": "<string>",
"category": "Education",
"customFeeDetail": "Special Community Fund Agreement",
"v2ContractAddress": "<string>"
}{
"id": "123e4567-e89b-12d3-a456-426614174000",
"name": "Doe Family Foundation",
"type": "Private",
"manager": {
"id": "123e4567-e89b-12d3-a456-426614174000",
"walletAddress": "0x742d35Cc6634C0532925a3b844Bc454e4438f44e"
},
"chainId": 1,
"advisor": {
"firstName": "John",
"lastName": "Doe"
},
"featuredIndex": 1,
"usdcBalance": "20500000",
"availableBalance": "21000000",
"description": "A family foundation dedicated to supporting educational initiatives",
"createdAtUtc": "2024-01-01T00:00:00Z",
"updatedAtUtc": "2024-03-14T12:00:00Z",
"lifetimeDonationsUsdc": "1000000000",
"inboundFeeBps": 25,
"outboundFeeBps": 50,
"grantsGiven": 10,
"inTransitBuyUsdcAmount": "5000000",
"inTransitSellUsdcAmount": "3000000",
"investedUsdc": "50000000",
"totalGrantedUsdc": "25000000",
"processingTransfersTotalUsdc": "1000000",
"illiquidBalance": "10000000",
"poolDetails": {
"eligibleEntities": "Organizations",
"algorithmType": "QuadraticFunding",
"distributionSchedule": "Quarterly",
"distributionPercentage": 0.25,
"eligibleVotes": "GrantsAndDonations",
"voteWeight": "UsdcValue"
},
"expectedDeploymentInfo": {
"expectedManagerAddress": "0x742d35Cc6634C0532925a3b844Bc454e4438f44e",
"expectedSalt": "0x0000000000000000000000000000000000000000000000000000000000000123",
"expectedComputedAddress": "0x1234567890123456789012345678901234567890",
"expectedChainId": 1
},
"deploymentTransactionHash": "0xf89f7da1e5d79dcb1b8863d0926fe41204785b443ce2d1dca4bf50070c492567",
"contractAddress": "0x1234567890123456789012345678901234567890",
"lastBalanceSyncUtc": "2024-03-14T12:00:00Z",
"shortDescription": "Supporting education",
"vanityUrl": "doe-family-foundation",
"paypalId": "123e4567-e89b-12d3-a456-426614174000",
"logo": "https://example.com/logo.png",
"staffNotes": "<string>",
"category": "Education",
"customFeeDetail": "Special Community Fund Agreement",
"v2ContractAddress": "<string>"
}Create fund
Creates a partner-managed DAF using the acting user identity and partnerAccountIdentifier idempotency.
The acting user is resolved in one of two ways:
- Tech-platform impersonation: a partner API key plus the
x-endaoment-user-iduser header (or partner OIDC bearer). - API-key-only body resolution: a partner API key plus a body
partnerUserIdentifierand no impersonation header, available when partner inflow routes are enabled. The identifier selects a partner-owned, previously provisioned user.
When both a header/OIDC user and a body partnerUserIdentifier are supplied they must resolve to the same user;
a contradiction is rejected with 400 and an identifier that does not match a user for this partner is 404.
curl --request POST \
--url https://api.dev.endaoment.org/v1/funds/partner \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"name": "Lovelace Family DAF",
"partnerAccountIdentifier": "a7e21d94-5c3f-4b8a-9f60-2e4d8c1b7a53",
"description": "A family DAF managed through a partner integration",
"type": "Private",
"partnerUserIdentifier": "c3f8b2e4-9d1a-4f6b-8e2c-7a5d90c41b3f"
}
'import requests
url = "https://api.dev.endaoment.org/v1/funds/partner"
payload = {
"name": "Lovelace Family DAF",
"partnerAccountIdentifier": "a7e21d94-5c3f-4b8a-9f60-2e4d8c1b7a53",
"description": "A family DAF managed through a partner integration",
"type": "Private",
"partnerUserIdentifier": "c3f8b2e4-9d1a-4f6b-8e2c-7a5d90c41b3f"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'Lovelace Family DAF',
partnerAccountIdentifier: 'a7e21d94-5c3f-4b8a-9f60-2e4d8c1b7a53',
description: 'A family DAF managed through a partner integration',
type: 'Private',
partnerUserIdentifier: 'c3f8b2e4-9d1a-4f6b-8e2c-7a5d90c41b3f'
})
};
fetch('https://api.dev.endaoment.org/v1/funds/partner', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.dev.endaoment.org/v1/funds/partner",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => 'Lovelace Family DAF',
'partnerAccountIdentifier' => 'a7e21d94-5c3f-4b8a-9f60-2e4d8c1b7a53',
'description' => 'A family DAF managed through a partner integration',
'type' => 'Private',
'partnerUserIdentifier' => 'c3f8b2e4-9d1a-4f6b-8e2c-7a5d90c41b3f'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.dev.endaoment.org/v1/funds/partner"
payload := strings.NewReader("{\n \"name\": \"Lovelace Family DAF\",\n \"partnerAccountIdentifier\": \"a7e21d94-5c3f-4b8a-9f60-2e4d8c1b7a53\",\n \"description\": \"A family DAF managed through a partner integration\",\n \"type\": \"Private\",\n \"partnerUserIdentifier\": \"c3f8b2e4-9d1a-4f6b-8e2c-7a5d90c41b3f\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.dev.endaoment.org/v1/funds/partner")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Lovelace Family DAF\",\n \"partnerAccountIdentifier\": \"a7e21d94-5c3f-4b8a-9f60-2e4d8c1b7a53\",\n \"description\": \"A family DAF managed through a partner integration\",\n \"type\": \"Private\",\n \"partnerUserIdentifier\": \"c3f8b2e4-9d1a-4f6b-8e2c-7a5d90c41b3f\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.dev.endaoment.org/v1/funds/partner")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"Lovelace Family DAF\",\n \"partnerAccountIdentifier\": \"a7e21d94-5c3f-4b8a-9f60-2e4d8c1b7a53\",\n \"description\": \"A family DAF managed through a partner integration\",\n \"type\": \"Private\",\n \"partnerUserIdentifier\": \"c3f8b2e4-9d1a-4f6b-8e2c-7a5d90c41b3f\"\n}"
response = http.request(request)
puts response.read_body{
"id": "123e4567-e89b-12d3-a456-426614174000",
"name": "Doe Family Foundation",
"type": "Private",
"manager": {
"id": "123e4567-e89b-12d3-a456-426614174000",
"walletAddress": "0x742d35Cc6634C0532925a3b844Bc454e4438f44e"
},
"chainId": 1,
"advisor": {
"firstName": "John",
"lastName": "Doe"
},
"featuredIndex": 1,
"usdcBalance": "20500000",
"availableBalance": "21000000",
"description": "A family foundation dedicated to supporting educational initiatives",
"createdAtUtc": "2024-01-01T00:00:00Z",
"updatedAtUtc": "2024-03-14T12:00:00Z",
"lifetimeDonationsUsdc": "1000000000",
"inboundFeeBps": 25,
"outboundFeeBps": 50,
"grantsGiven": 10,
"inTransitBuyUsdcAmount": "5000000",
"inTransitSellUsdcAmount": "3000000",
"investedUsdc": "50000000",
"totalGrantedUsdc": "25000000",
"processingTransfersTotalUsdc": "1000000",
"illiquidBalance": "10000000",
"poolDetails": {
"eligibleEntities": "Organizations",
"algorithmType": "QuadraticFunding",
"distributionSchedule": "Quarterly",
"distributionPercentage": 0.25,
"eligibleVotes": "GrantsAndDonations",
"voteWeight": "UsdcValue"
},
"expectedDeploymentInfo": {
"expectedManagerAddress": "0x742d35Cc6634C0532925a3b844Bc454e4438f44e",
"expectedSalt": "0x0000000000000000000000000000000000000000000000000000000000000123",
"expectedComputedAddress": "0x1234567890123456789012345678901234567890",
"expectedChainId": 1
},
"deploymentTransactionHash": "0xf89f7da1e5d79dcb1b8863d0926fe41204785b443ce2d1dca4bf50070c492567",
"contractAddress": "0x1234567890123456789012345678901234567890",
"lastBalanceSyncUtc": "2024-03-14T12:00:00Z",
"shortDescription": "Supporting education",
"vanityUrl": "doe-family-foundation",
"paypalId": "123e4567-e89b-12d3-a456-426614174000",
"logo": "https://example.com/logo.png",
"staffNotes": "<string>",
"category": "Education",
"customFeeDetail": "Special Community Fund Agreement",
"v2ContractAddress": "<string>"
}{
"id": "123e4567-e89b-12d3-a456-426614174000",
"name": "Doe Family Foundation",
"type": "Private",
"manager": {
"id": "123e4567-e89b-12d3-a456-426614174000",
"walletAddress": "0x742d35Cc6634C0532925a3b844Bc454e4438f44e"
},
"chainId": 1,
"advisor": {
"firstName": "John",
"lastName": "Doe"
},
"featuredIndex": 1,
"usdcBalance": "20500000",
"availableBalance": "21000000",
"description": "A family foundation dedicated to supporting educational initiatives",
"createdAtUtc": "2024-01-01T00:00:00Z",
"updatedAtUtc": "2024-03-14T12:00:00Z",
"lifetimeDonationsUsdc": "1000000000",
"inboundFeeBps": 25,
"outboundFeeBps": 50,
"grantsGiven": 10,
"inTransitBuyUsdcAmount": "5000000",
"inTransitSellUsdcAmount": "3000000",
"investedUsdc": "50000000",
"totalGrantedUsdc": "25000000",
"processingTransfersTotalUsdc": "1000000",
"illiquidBalance": "10000000",
"poolDetails": {
"eligibleEntities": "Organizations",
"algorithmType": "QuadraticFunding",
"distributionSchedule": "Quarterly",
"distributionPercentage": 0.25,
"eligibleVotes": "GrantsAndDonations",
"voteWeight": "UsdcValue"
},
"expectedDeploymentInfo": {
"expectedManagerAddress": "0x742d35Cc6634C0532925a3b844Bc454e4438f44e",
"expectedSalt": "0x0000000000000000000000000000000000000000000000000000000000000123",
"expectedComputedAddress": "0x1234567890123456789012345678901234567890",
"expectedChainId": 1
},
"deploymentTransactionHash": "0xf89f7da1e5d79dcb1b8863d0926fe41204785b443ce2d1dca4bf50070c492567",
"contractAddress": "0x1234567890123456789012345678901234567890",
"lastBalanceSyncUtc": "2024-03-14T12:00:00Z",
"shortDescription": "Supporting education",
"vanityUrl": "doe-family-foundation",
"paypalId": "123e4567-e89b-12d3-a456-426614174000",
"logo": "https://example.com/logo.png",
"staffNotes": "<string>",
"category": "Education",
"customFeeDetail": "Special Community Fund Agreement",
"v2ContractAddress": "<string>"
}Authorizations
Headers
UUID of the Endaoment user to act as. Optional when a body partnerUserIdentifier is supplied on an API-key-only request (no impersonation header).
Partner API key. Required for server-to-server partner flows; omit when the caller presents a registered OAuth client access token via Bearer auth.
Body
Name of the fund
255"Lovelace Family DAF"
Opaque partner-generated identifier for this fund, used as the partner-scoped idempotency key. Must be 8-64 printable ASCII characters; leading/trailing whitespace is trimmed before validation.
8 - 64^[\x20-\x7E]{8,64}$"a7e21d94-5c3f-4b8a-9f60-2e4d8c1b7a53"
Description of the fund. Defaults to the partner DAF name when omitted.
"A family DAF managed through a partner integration"
Type of the fund being created.
Private, Transparent "Private"
Opaque partner-generated identifier for the acting user. Used only to resolve or corroborate the user; it is not stored on the fund or returned in the response.
8 - 64^[\x20-\x7E]{8,64}$"c3f8b2e4-9d1a-4f6b-8e2c-7a5d90c41b3f"
Response
An existing partner-managed fund was returned idempotently.
Unique identifier of the fund
"123e4567-e89b-12d3-a456-426614174000"
Name of the fund
"Doe Family Foundation"
Access type of the fund
Private, Community, Transparent, ImpactPool "Private"
Basic information about the fund manager. The manager has technical capability to interact with the blockchain and perform programmatic functions.
Show child attributes
Show child attributes
Chain ID where the fund is deployed
1
Fund advisor information. The advisor is tied to a real-world person/entity and acts as the public contact for the fund. This can be the same person as the manager or someone the manager acts on behalf of.
Show child attributes
Show child attributes
Index determining the fund's position in featured listings. Lower numbers appear first
1
Current synced USDC balance in the smallest currency unit (1000000 = 1 USD). This does not account for asynchronous grants, asynchronous entity transfers, or asynchronous investments that may still be processing.
"20500000"
Amount available to grant or transfer in the smallest currency unit (1000000 = 1 USD), adjusted for invested value, in-transit portfolio operations, and pending asynchronous transfers.
"21000000"
Detailed description of the fund
"A family foundation dedicated to supporting educational initiatives"
UTC timestamp of fund creation
"2024-01-01T00:00:00Z"
UTC timestamp of last fund update
"2024-03-14T12:00:00Z"
Total lifetime donations received in USDC, in the smallest currency unit (1000000 = 1 USD)
"1000000000"
The fee charged for inbound operations in basis points (1 basis point = 0.01%)
25
The fee charged for outbound operations in basis points (1 basis point = 0.01%)
50
Total number of grants given by this fund
10
Amount of USDC pending purchase in the smallest currency unit (1000000 = 1 USD)
"5000000"
Amount of USDC pending sale in the smallest currency unit (1000000 = 1 USD)
"3000000"
Total amount invested in USDC, in the smallest currency unit (1000000 = 1 USD)
"50000000"
Total amount granted in USDC, in the smallest currency unit (1000000 = 1 USD)
"25000000"
Total amount in processing transfers in USDC, in the smallest currency unit (1000000 = 1 USD)
"1000000"
Total balance in illiquid portfolios in USDC, in the smallest currency unit (1000000 = 1 USD)
"10000000"
Impact Pool specific details. Only available for Impact Pool type funds
Show child attributes
Show child attributes
Information needed for on-chain deployment. Only available for funds not yet deployed
Show child attributes
Show child attributes
Transaction hash of the deployment transaction
"0xf89f7da1e5d79dcb1b8863d0926fe41204785b443ce2d1dca4bf50070c492567"
Contract address of the fund
"0x1234567890123456789012345678901234567890"
UTC timestamp of the last balance sync
"2024-03-14T12:00:00Z"
Brief description of the fund
"Supporting education"
Custom URL identifier for the fund
"doe-family-foundation"
PayPal merchant ID associated with the fund
"123e4567-e89b-12d3-a456-426614174000"
URL of the fund's logo image
"https://example.com/logo.png"
Internal notes about the fund (staff only)
Category of the fund (e.g., Education, Health)
"Education"
Details about why this fund has custom fees. Only set if either inbound or outbound fee is custom
"Special Community Fund Agreement"
Deprecated alias of contractAddress
Was this page helpful?