GoFundMe GraphQL API
Welcome
The GoFundMe API enables partners to allow their users to create fundraiser pages without ever leaving the website, retrieve fundraiser and donation data to report and display, search through supported GoFundMe charities, and (coming soon) integrate donations and fundraiser search & discovery capabilities into their platforms.
By using GoFundMe's API, you're not just coding; you're contributing to a global movement of mutual support, one line of code at a time.
Getting started
Welcome to our platform! This guide will help you get started with our services.
Step 1: Log in to Partner page
- Go to the Partner page.
- Log in with your credentials.
- If you can't log in or can't find your company, contact GoFundMe support for assistance.
Step 2: Get your Partner code
- Once you can see your partner dashboard, you should see a referral link at the bottom of the dashboard e.g. https://gofundme.com/partners/create/{code}
- The last segment of that link is your partnership's unique referral code
Step 3: Create an API key
- Click on your company button in the top right corner.
- Select "Account".
- At the bottom, you have the option to create an API key.
- Create a new API key and save it somewhere secure, as you will only be able to view it once.
Step 4: Set up your request
- Open Postman (or your preferred tool for sending POST requests).
- Set the request type to POST.
- Use the URL
https://graphql.gofundme.com/graphql. - Add headers:
x-partner-code: Your partner codex-api-key: Your API key
- Add your GraphQL query as the POST body (see example query below)
- Send the request
curl --location 'https://graphql.gofundme.com/graphql' \
--header 'x-partner-code: YOUR_PARTNER_CODE' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data '{"query":"query GetPartnerInfo { partner { code name } }"}'
query GetPartnerInfo {
partner {
code
name
}
}
If you provided your key correctly, you should get back a response containing your partnership's name and code.
{
"data": {
"partner": {
"code": "GFM",
"name": "GoFundMe"
}
}
}
Next steps
Congratulations! You have successfully completed the getting started guide. Here are some next steps to explore:
- Explore additional GraphQL queries such as https://docs.gofundme.com/#query-fundraiser or https://docs.gofundme.com/#query-charitySearch
- Integrate the API responses into your application.
Query Requirements
All GraphQL queries and mutations sent to the GoFundMe API MUST follow these requirements:
1. Use Named Operations
Every query or mutation must have a name. Anonymous operations are not supported.
Do this (named query):
query GetPartnerInfo {
partner {
code
name
}
}
Don't do this (anonymous query):
query {
partner {
code
name
}
}
2. Use Variables Instead of Inline Values
Pass dynamic values as variables rather than embedding them directly in the query string.
Do this (parameterized with variables):
query GetFundraiser($slug: ID!) {
fundraiser(slug: $slug) {
title
}
}
With variables passed separately in the request:
{
"query": "query GetFundraiser($slug: ID!) { fundraiser(slug: $slug) { title } }",
"variables": { "slug": "my-fundraiser-slug" }
}
Don't do this (inline values):
query GetFundraiser {
fundraiser(slug: "my-fundraiser-slug") {
title
}
}
Searching for charities
This guide will help you get started with searching for charities supported by GoFundMe or retrieving specific charity details using the nonprofit’s PPGF ID.
How it works
The charitySearch query allows you to retrieve a list of charities that GoFundMe supports based on keywords. This can be used to offer users an option to search for charities to select as a beneficiary for their fundraiser.
The charityByPaypalNonprofitId query allows you to retrieve details of a specific charity using the PPGF ID of that nonprofit. This endpoint is useful for determining which GoFundMe ID a charity has if a pre-selected charity will be the beneficiary of the fundraiser.
Example use cases
charitySearch
Let’s say you want to allow your users to search for any nonprofit to fundraiser for out of the list of available GoFundMe beneficiaries in a particular country. Pass the user’s search term into charitySearch and display the corresponding response back to the user to allow them to select which charity they would like to fundraise for. We encourage using the charity’s npoId (PPGF ID) in the fundraiserCreateDraft mutation.
Search for Red Cross with a country filter GB and return:
- GoFundMe ID
- PPGF ID
- Charity Name
- Charity Country
Query example:
query SearchCharities($searchTerm: String!, $countryCode: CountryCode) {
charitySearch(searchTerm: $searchTerm, filter: { countryCode: $countryCode }) {
id
npoId
name
country
}
}
Variables:
{
"searchTerm": "red cross",
"countryCode": "GB"
}
Response:
{
"data": {
"charitySearch": [
{
"id": "4",
"npoId": "12345",
"name": "British Red Cross",
"country": "GB"
}
]
}
}
charityByPaypalNonprofitId
Now let’s say you want to enable one (or several) pre-selected charities to the beneficiary. To find the GoFundMe ID for that specific charity, to use as a CharityInput in fundraiserCreateDraft, query charityByPaypalNonprofitId using the corresponding PPGF ID as a parameter.
Search a charity given its PPGF ID and return:
- GoFundMe ID
- Charity Name
- Charity Description
Query example:
query GetCharityByPaypalId($paypalNonprofitId: ID!) {
charityByPaypalNonprofitId(paypalNonprofitId: $paypalNonprofitId) {
npoId
name
}
}
Variables:
{
"paypalNonprofitId": 14886
}
Response:
{
"data": {
"charityByPaypalNonprofitId": {
"npoId": "14886",
"name": "British Red Cross"
}
}
}
Connecting to GoFundMe via oAuth
When working with the GoFundMe API your application may need to perform actions directly on behalf of a user. Each user will need to authenticate with GoFundMe to verify their identity and to give your application permission to use and access their data.
OAuth 2.0 is a protocol that allows third-party applications to authenticate with APIs. OAuth 2.0 facilitates two main actions: obtaining an access token through user authorization, and using that access token to make API requests. At the end of a successful OAuth 2.0 exchange, an access token is returned to your application. You will need to submit this token with each API request in order to properly identify your application and access end-user data in a secure manner.
Your application does not need to store or transmit user account names or passwords, but instead relies on application credentials in the form of a Client ID and Client Secret that are unique to your application. The OAuth 2.0 protocol uses these credentials as part of an authorization step in which the user chooses to allow (or deny) your application access their data in GoFundMe. An end user may revoke access granted to your application at any time.
If you are brand new to OAuth 2.0, you can review the official OAuth 2.0 specification. See their Community Resources section for some simplified explanations.
Credentials
There are two credentials that you will need to exercise the OAuth 2.0 Authorization Code Flow: Client ID and Client Secret. You can reach out to GoFundMe to obtain these. Your Client Secret is sensitive and should be stored securely. Never expose your Client Secret in client-facing code e.g. a browser or installed mobile app.
Obtaining Consent
To initiate an OAuth2.0 authorization code flow, you can construct and direct your user to the authorize URL:
https://auth.gofundme.com/oauth2/v1/apps/authorize?response_type=code&client_id={client_id}&redirect_uri={redirect_uri}&scope=openid%20fundraiser:create%20fundraiser:edit&state={state}
Request Parts
response_type=code: This indicates that you are initiating the Authorization Code Flow (which is the only flow we support)client_id: This tells us which client is making the request, and allows us to display your branding on our consent pageredirect_uri: This is where the user will be automatically redirected upon completing the consent flowscope: These are the specific permissions that you are requesting to perform on behalf of a user. For instance, the scopefundraiser:createwill let you create a fundraiser directly on behalf of a useropenid: includes the OIDCid_tokenin the token responsefundraiser:create: needed forfundraiserCreateDraftfundraiser:edit: needed forfundraiserPublishfundraiser:view: needed forviewer.involvedFundraisers
state: The state parameter helps to mitigate CSRF attacks, and can also provide you a way to store state that you want to be returned in the redirect. This value should be unique for each new call to/authorize
Token Exchange
Once a user authenticates and completes the consent flow, they will be redirected back to the redirect_uri that was provided to the /authorize request along with an additional code query parameter: {redirect_uri}?code={code}&state={state}
Note: the state value will be identical to what was initially provided to /authorize Using the received code in combination with your Client Secret you can now use the /token endpoint to retrieve an access_token which allows you to act specifically on behalf of the consenting user.
For this request to succeed, you will need to provide your Client ID and Client Secret using the Authorization header in the following base64 encoded format:
Authorization: Basic <Base64(client_id:client_secret)>
For example, with a client_id of 123 and client_secret secret, the expected Authorization header becomes: Authorization: Basic MTIzOnNlY3JldA==
Note: MTIzOnNlY3JldA== is 123:secret base64 encoded.
Additionally, you will need to provide the code in the POST body. A complete example request for the above scenario would look like:
curl --location '<https://auth.gofundme.com/oauth2/v1/apps/token>' \\
--header 'Authorization: Basic MTIzOnNlY3JldA==' \\
--header 'Content-Type: application/x-www-form-urlencoded' \\
--data-urlencode 'grant_type=authorization_code' \\
--data-urlencode 'code=3fa0ed2389a5492e94626606ccb0f9e35deed098cb3dde2abce59f2c508132a6'
The response will follow the format:
{
"access_token": "{jwt}",
"token_type": "Bearer",
"refresh_token": "{jwt}",
"id_token": "{jwt}",
"expires_in": 600
}
These tokens are short-lived, and intended to be ephemeral. In the case that a user revokes their consent to your application, your tokens will become invalid.
Using Access Tokens
Once you have obtained an access_token, you will be able to make requests directly on behalf of your user. You will only be able to make requests that fall within what the user consented to during the /authorize step.
To make a request on behalf of a user, you simply need to provide the access_token as an Authorization header following the format: Authorization: Bearer {access_token}
Having done that, you will be able to perform fundraiserCreateDraft (see Creating Fundraisers via API) or other mutations directly on behalf of the user.
A complete example request looks like:
curl --location '<https://graphql.gofundme.com/graphql>' \\
--header 'Authorization: Bearer {access_token}' \\
--header 'Content-Type: application/json' \\
--data-raw '{
"query": "mutation fundraiserCreateDraft($title: String!) {
fundraiserCreateDraft(input: {
title: $title
}) {
fundraiser {
title
}
}
}",
"variables": {
"title": "My Fundraiser Title"
}
}'
Creating and launching fundraisers via API
This guide will help you get started with programmatically creating and publishing fundraisers on GoFundMe.
How it works
The fundraiserCreateDraft mutation allows you to create a draft for a new fundraiser. The partnerPhotoUpload mutation is used in the create process to upload an image and then supply the fundraiserCreateDraft with an image URL.
The fundraiserPublish mutation allows you to publish the created fundraiser. The fundraiser will not be live to the user until it is published.
Example use cases
partnerPhotoUpload
First, upload an image to be used as the cover media for the fundraiser, using the partnerPhotoUpload mutation. Because the request must be multipart/form-data, how your query is structured will vary based on which graphql client you are using. Regardless of which client you use, you must also provide graphql-require-preflight: true on this request because it is multipart.
CURL example:
curl --location 'https://graphql.gofundme.com/graphql' \
--header 'graphql-require-preflight: true' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'x-partner-code: YOUR_PARTNER_CODE' \
--form 'operations={"query":"mutation partnerPhotoUpload($input: Upload!) { partnerPhotoUpload(input: $input) { id url fileSize fileType createdAt}}", "variables":{"input":null}}'
--form 'map={"0": ["variables.input"]}' \
--form '0=@"/path/to/local/file/file.png"'
Response:
{
"data": {
"partnerPhotoUpload": {
"id": "59",
"url": "https://www.gofundme.com/partnerassets/pitdev/partner-uploads/1722550606/ca7a4e16-5ac6-4c18-a1be-7bcce969bd08.jpeg",
"fileSize": 15273,
"fileType": "image/jpeg",
"createdAt": "2024-08-01T17:16:47.000-05:00"
}
}
}
fundraiserCreateDraft
Then create a draft fundraiser, calling the fundraiserCreateDraft mutation with required inputs. Note: use the URL from the response of partnerPhotoUpload as the mediaUrl.
countrycategoryexpectedBeneficiaryRelationcharity(ifexpectedBeneficiaryRelation=CHARITY)postalCodegoalAmounttitledescription(note: at the moment we do not support full HTML fundraiser descriptions, including emojis)mediaUrl
Mutation example (charity fundraiser):
mutation CreateCharityFundraiserDraft($input: FundraiserInput!) {
fundraiserCreateDraft(input: $input) {
fundraiser {
slug
fundId
title
}
userErrors {
field
message
}
}
}
Variables:
{
"input": {
"title": "A Charity Fundraiser",
"category": "MEDICAL",
"charity": {
"paypalNonprofitId": 14886
},
"country": "GB",
"postalCode": "E1 8RU",
"goalAmount": 5000,
"expectedBeneficiaryRelation": "CHARITY",
"mediaUrl": "https://www.gofundme.com/partnerassets/pitdev/partner-uploads/1722481246/5a20d214-6685-4348-9789-57fd1b80d0bd.jpeg",
"partnerAffiliation": {
"sourceApplication": "Another Application"
},
"description": "We are raising money for the British Red Cross. Please show your support by donating and sharing this fundraiser with your community."
}
}
To create a fund on behalf of the user, use the PartnerExternalOrganizerInput. This indicates that the fundraiser is being created by the partner, on the user's behalf.
FundraiserInput: {
PartnerExternalOrganizerInput: {
firstName: "John",
lastName: "Doe",
email: "johndoe@gmail.com",
emailOptIn: true,
locale: "en-US"
}
}
Once published, the API will return a FundraiserResponse object. Inside, the FundraiserResponse.Fundraiser.PartnerExternalInput.organizerInviteUrl field contains a unique URL which should be shared with the user so they can officially claim the fundraiser and connect it to their GoFundMe account. For best results, provide the claim link to the user in your UI. GoFundMe will also send this link via email to the user to maximize the claim experience touchpoints.
Important: the fundraiser will not be fully associated to their GoFundMe account until the user completes the claim process, but they can still fundraise as normal.
Mutation example (individual fundraiser):
mutation CreatePersonalFundraiserDraft($input: FundraiserInput!) {
fundraiserCreateDraft(input: $input) {
fundraiser {
slug
fundId
title
}
userErrors {
field
message
}
}
}
Variables:
{
"input": {
"title": "A Personal Fundraiser",
"category": "EMERGENCY",
"country": "GB",
"postalCode": "E1 8RU",
"goalAmount": 5000,
"expectedBeneficiaryRelation": "YOURSELF",
"mediaUrl": "https://www.gofundme.com/partnerassets/pitdev/partner-uploads/1722481246/5a20d214-6685-4348-9789-57fd1b80d0bd.jpeg",
"partnerAffiliation": {
"sourceApplication": "Another Application"
},
"description": "I'm raising money for my school's wildfire relief efforts. Please show your support by donating and sharing this fundraiser with your community."
}
}
Response:
{
"data": {
"fundraiserCreateDraft": {
"fundraiser": {
"slug": "e5957e20-5335-4b8c-b1e3-cd8fc8d5d112",
"fundId": "59024133",
"title": "A Charity Fundraiser"
},
"userErrors": []
}
}
}
fundraiserPublish
To publish the draft fundraiser, use the fundraiserPublish mutation with the fundId from fundraiserCreateDraft as the input.
Mutation example:
mutation PublishFundraiser($id: ID!) {
fundraiserPublish(id: $id) {
userErrors {
message
}
fundraiser {
title
slug
fundId
}
}
}
Variables:
{
"id": 59024133
}
Response:
{
"data": {
"fundraiserPublish": {
"userErrors": [],
"fundraiser": {
"title": "A Charity/ Personal Fundraiser",
"slug": "a-fundraiser-slug",
"fundId": "59024133"
}
}
}
}
Additional examples
Automated Goals
Smart Goals is an optional feature that helps high-performing fundraisers raise more by automatically increasing the goal amount once it has been met or surpassed. This gradual adjustment helps maintain momentum and encourages continued donations without the organizer needing to take action.
To enable Smart Goals, use the smartGoalsEnabled field. This feature can be turned off at any time by the fundraiser organizers and by default is off unless explicitly enabled.
FundraiserInput: {
smartGoalsEnabled: true
}
If Smart Goals are enabled, we recommend showing this copy to the user so they are aware why their goal has changed:
GoFundMe will use data from similar fundraisers to gradually adjust your goal as donations come in, to increase fundraiser success. You can turn this off at any time.
Communications consent
To let GoFundMe contact the organizer with fundraiser best practices, tips, and coaching, include this when creating the fundraiser:
partnerExternalOrganizerInput: {
emailOptIn: true
}
This allows us to support users directly—improving fundraiser outcomes and increasing the likelihood of success. It’s especially helpful for new organizers who may not know where to start.
Please use the following standard consent language for users to launch their fundraisers:
By clicking on the GoFundMe button above, you agree to have your submitted information used to create a fundraiser on the third-party website or app of our partner GoFundMe, and for GoFundMe to use your information to contact you. You acknowledge that GoFundMe will process your information in accordance with its privacy notice.
If you’re creating a charity-linked fundraiser, and you’d like the nonprofit to receive basic information about the fundraiser creator (such as name and email) so they can provide support or say thank you, include the following.
FundraiserInput: {
npoMarketingConsent: true
}
This gives the nonprofit visibility into who’s creating fundraisers on their behalf and enables them to deepen relationships with their supporters.
Working with test data
When creating fundraisers for development or testing purposes only, please use the isTestData field.
PartnerAffiliation: {
isTestData: true
}
This ensures that fundraisers won't appear in GoFundMe search or other public discovery surfaces, that test donations are excluded from core metrics, and a clean separation from production fundraisers.
To further reinforce that these fundraisers are for testing, we recommend including the word "test" or "Test" in the fundraiser title (example: Test Fundraiser for "Partner Name").
Creating Partner fundraisers via referral links
The Partner referral flow is designed to enable partners to refer users to GoFundMe to create fundraisers with minimal development effort on the partner’s end. This is achieved by using specific URL query parameters to pre-fill information where possible, providing a streamlined experience for users and removing steps in the GoFundMe creation user flow.
These fundraisers are attributed to the Partner who refers them through their partnerCode. Attributed fundraisers and donations are accessible in the Partner Dashboard.
How it works
Organizations can refer their users to the Partner flow by appending URL query parameters to their GFM partner link (see partner.gofundme.com for the URL). These query parameters pre-fill specific fields on the fundraiser, reducing the amount of manual input required, and improving the onboarding experience for users.
Below are the supported query parameters.
Parameters able to be passed via referral link
| Parameter | Required | Type | Description |
|---|---|---|---|
| zip_code | optional | number | Zip code of the organizer/ fundraiser |
| country | required | string | Country code of the organizer’s fundraiser (ex: US) |
| beneficiary_type | optional | string | Beneficiary of the organizer’s fundraiser. Defaults to YOURSELFOptions: - YOURSELF- SOMEONE_ELSE |
| category | optional | string | Category of the fundraiser. See category list |
| service_date | optional | datetime (UTC) string | Memorial date of the fundraiser. Should only be used with the MEMORIALS category |
| tp_id | optional | string | A unique external identifier provided by the partner to identify users on GoFundMe’s system. It is used in tandem with other identifiers to ensure a precise mapping of users |
Information always collected on GoFundMe (not by the Partner)
| Parameter | Description |
|---|---|
| Goal amount | Target amount to raise |
| Image | Main image to display on the fundraiser page |
| Title | Title/ name of the fundraiser |
| Story | Description of the fundraiser |
Examples
Create a Fundraiser with no query params
If no query parameters are passed along with the Partner referral link then the user will be redirected to gofundme.com/create and go through the regular GoFundMe creation process.
https://www.gofundme.com/partners/create/{partnerCode}
Create a Fundraiser with just country as a param
This is the minimum viable set of query parameters to create a draft fundraiser using the streamlined Partner flow. This query uses the required country parameter.
https://www.gofundme.com/partners/create/{partnerCode}?country=US
Create a Fundraiser with country, zip_code, category, beneficiary_type as params
https://www.gofundme.com/partners/create/{partnerCode}?country=US&zip_code=92618&category=Animals&beneficiary_type=YOURSELF
Create a Fundraiser with category, category, service_date, & tp_id as params
https://www.gofundme.com/partners/create/{partnerCode}?country=US&category=Memorials&service_date=2025-01-03T10%3A15%3A30Z&tp_id=01234
Retrieving donations/ fundraisers
This guide will help you get started with querying data to retrieve all the fundraisers or donations associated with fundraisers that were published via your GoFundMe partner account.
How it works
The partner.fundraiser query allows you to retrieve all fundraisers associated with your partner account. The fundraiser.donations query allows you to retrieve all donations to a given fundraiser. The partner.donations query allows you to retrieve all donations to all fundraisers associated with your partner account.
Example use cases
partner.fundraisers
To query all fundraisers associated with your partner account partner.fundraisers.
Query example:
query GetPartnerFundraisers {
partner {
fundraisers {
edges {
node {
title
description
}
}
}
}
}
Response:
{
"data": {
"partner": {
"fundraisers": {
"edges": [
{
"node": {
"title": "Partner Fundraiser 1",
"description": "A fundraiser description for a test campaign"
}
},
{
"node": {
"title": "Partner Fundraiser 2",
"description": "Another description for a test campaign"
}
}
]
}
}
}
}
fundraiser.donations
To query all donations to one particular fundraiser, use fundraiser.donations. Use pagination and hasNextPage to determine when you’ve reached the end of a connection.
Query example:
query GetFundraiserDonations($slug: ID!) {
fundraiser(slug: $slug) {
donations {
pageInfo {
hasNextPage
hasPreviousPage
startCursor
}
edges {
cursor
node {
name
amount {
currencyCode
amount
}
createdAt
}
}
}
}
}
Variables:
{
"slug": "example-campaign"
}
Response:
{
"data": {
"fundraiser": {
"donations": {
"pageInfo": {
"hasNextPage": true,
"hasPreviousPage": false,
"startCursor": "RG9uYXRpb246aWQ6NzYyODM4OTI1"
},
"edges": [
{
"cursor": "RG9uYXRpb246aWQ6NzYyODM4OTI1",
"node": {
"name": "Test Donor",
"amount": {
"currencyCode": "USD",
"amount": 5
},
"createdAt": "2023-03-17T12:40:33.000-05:00"
}
},
{
"cursor": "RG9uYXRpb246aWQ6NzYyODg4ODk1",
"node": {
"name": "John Doh",
"amount": {
"currencyCode": "USD",
"amount": 5
},
"createdAt": "2023-03-27T16:32:20.000-05:00"
}
},
{
"cursor": "RG9uYXRpb246aWQ6NzYyODkyODY1",
"node": {
"name": "Another Donor",
"amount": {
"currencyCode": "USD",
"amount": 5
},
"createdAt": "2023-03-28T13:42:06.000-05:00"
}
}
]
}
}
}
partner.donations
To query all donations associated with your partner account partner.donations. Use pagination and hasNextPage to determine when you’ve reached the end of a connection.
Query example:
query GetPartnerDonations {
partner {
donations {
pageInfo {
hasNextPage
hasPreviousPage
startCursor
}
edges {
node {
name
amount {
currencyCode
amount
}
fundraiser {
title
fundId
}
}
}
}
}
}
Response:
{
"data": {
"partner": {
"donations": {
"pageInfo": {
"hasNextPage": true,
"hasPreviousPage": false,
"startCursor": "RG9uYXRpb246aWQ6NzYxNTg1NjIz"
},
"edges": [
{
"node": {
"name": "Archer Woolery",
"amount": {
"currencyCode": "USD",
"amount": 5
},
"fundraiser": {
"title": "Adyen test campaign",
"fundId": "33760977"
}
}
},
{
"node": {
"name": "Archer Woolery",
"amount": {
"currencyCode": "USD",
"amount": 5
},
"fundraiser": {
"title": "Adyen test campaign",
"fundId": "33760977"
}
}
},
{
"node": {
"name": "Archer Woolery",
"amount": {
"currencyCode": "USD",
"amount": 5
},
"fundraiser": {
"title": "Adyen test campaign",
"fundId": "33760977"
}
}
},
{
"node": {
"name": "Product Testing",
"amount": {
"currencyCode": "USD",
"amount": 7
},
"fundraiser": {
"title": "Adyen test campaign",
"fundId": "33760977"
}
}
},
{
"node": {
"name": "Ksenia Cat",
"amount": {
"currencyCode": "USD",
"amount": 7
},
"fundraiser": {
"title": "Adyen test campaign",
"fundId": "33760977"
}
}
}
]
}
}
}
}
Retrieving a user's fundraisers via OAuth
This guide will help you get started with querying data to retrieve all the fundraisers organized by a user that has consented to share this information with your partner account.
How it works
The viewer.involvedFundraisers query allows you to retrieve fundraisers for the user associated with the OAuth access token you provide. This query will not return data if the access token does not include the fundraiser:view scope.
Example use cases
viewer.involvedFundraisers
Query example:
query GetViewerFundraisers($filter: FundraiserFilter, $first: Int, $order: FundraiserOrder) {
viewer {
involvedFundraisers(filter: $filter, first: $first, order: $order) {
edges {
node {
fundId
title
description
}
}
}
}
}
Variables:
{
"filter": {
"myRelationships": ["ORGANIZER"],
"isPublished": true
},
"first": 50,
"order": "CREATED_AT"
}
Response:
{
"data": {
"viewer": {
"involvedFundraisers": {
"edges": [
{
"node": {
"fundId": "12345",
"title": "Test fundraiser 1",
"description": "test fundraiser description 1"
}
},
{
"node": {
"fundId": "123456",
"title": "Test fundraiser 2",
"description": "test fundraiser description 2"
}
},
{
"node": {
"fundId": "123457",
"title": "Test fundraiser 3",
"description": "test fundraiser description 3"
}
}
]
}
}
}
}
Creating and managing campaigns
This guide will help you get started with creating and managing campaigns on GoFundMe. Campaigns allow nonprofits and partners to organize coordinated fundraising events where multiple supporters create individual fundraisers under a shared banner.
We'll walk through the full lifecycle of a campaign using a running challenge as our example: "100 Miles in January" — a campaign where participants commit to running 100 miles during the month of January to raise money for a charity.
How it works
A Campaign represents a fundraising event that groups together multiple fundraisers under a common goal. Partners can create campaigns via the campaignCreate mutation, access their campaigns via the partner.campaigns query, and associate individual fundraisers with a campaign at creation time using partnerFundraiserInput.campaignRegistration.
Optionally, you can add a fitness challenge to any campaign after it has been created by using the campaignConfigurationUpdate mutation. This enables activity tracking (e.g., run 100 miles) for all fundraisers created under the campaign.
Creating a campaign
Use the campaignCreate mutation to create a new campaign. You must provide the campaign details and a list of charity IDs that the campaign supports.
In this example, we create the "100 Miles in January" campaign, set a $25,000 overall fundraising goal, and configure default values that will be pre-filled for participants when they create their own fundraisers.
Mutation example:
mutation {
campaignCreate(
input: {
name: "100 Miles in January"
description: "Kick off the new year by committing to run 100 miles in January. Every mile you run raises money for children's health programs."
goal: 25000.00
imageUrl: "https://www.gofundme.com/campaignassets/100-miles-january.jpeg"
startDate: "2026-01-01T00:00:00Z"
endDate: "2026-01-31T23:59:59Z"
defaultFundraiserTitle: "My 100 Miles in January"
defaultFundraiserDesc: "I'm running 100 miles this January to support children's health programs. Every donation keeps me going — please support my challenge!"
defaultFundraiserImageUrl: "https://www.gofundme.com/campaignassets/100-miles-default.jpeg"
defaultFundraiserGoal: 250
fundraiserSmartGoal: true
enableLeaderboards: true
challengeTimeframe: true
challengeStartDate: "2026-01-01T00:00:00Z"
challengeEndDate: "2026-01-31T23:59:59Z"
selectedCategoryOptions: [
{ optionId: "10", optionType: DEFAULT }
{ optionId: "11", optionType: DEFAULT }
]
}
charityIds: ["14886"]
) {
campaign {
id
name
description
goal
startDate
endDate
}
userErrors {
field
message
}
}
}
Response:
{
"data": {
"campaignCreate": {
"campaign": {
"id": "456",
"name": "100 Miles in January",
"description": "Kick off the new year by committing to run 100 miles in January. Every mile you run raises money for children's health programs.",
"goal": 25000.00,
"startDate": "2026-01-01",
"endDate": "2026-01-31"
},
"userErrors": []
}
}
}
The CampaignCreateInput supports the following fields:
| Field | Required | Description |
|---|---|---|
name |
Yes | The name of the campaign |
description |
No | A description of the campaign |
goal |
No | The overall fundraising goal for the campaign |
imageUrl |
No | URL of the campaign's cover image |
startDate |
No | The start date of the campaign |
endDate |
No | The end date of the campaign |
defaultFundraiserTitle |
No | Default title pre-filled for fundraisers created under this campaign |
defaultFundraiserDesc |
No | Default description pre-filled for fundraisers created under this campaign |
defaultFundraiserImageUrl |
No | Default cover image for fundraisers created under this campaign |
defaultFundraiserGoal |
No | Default goal amount for fundraisers created under this campaign |
fundraiserSmartGoal |
No | Whether to enable Smart Goals for campaign fundraisers |
enableLeaderboards |
No | Whether to enable leaderboards for the campaign |
challengeTimeframe |
No | (If challenge) Whether the challenge is time-bounded |
challengeStartDate |
No | (If challenge) Start date of the challenge period |
challengeEndDate |
No | (If challenge) End date of the challenge period |
selectedCategoryOptions |
No | (If challenge) List of activity types available to participants. Each entry requires an optionId and an optionType (e.g., DEFAULT). Example: [{ optionId: "10", optionType: DEFAULT }] |
Adding a challenge to the campaign
Campaign configuration must be done after the campaign has been created. To add a fitness challenge, use the campaignConfigurationUpdate mutation with the campaign ID returned from campaignCreate. Set the challenge goal and unit inside the challenge input.
For the "100 Miles in January" campaign, we configure a 100-mile running challenge that participants will track progress against:
Mutation example:
mutation {
campaignConfigurationUpdate(
id: "456"
input: {
challenge: {
goal: 100
unit: miles
}
}
) {
configuration {
challenge {
goal
unit
}
}
userErrors {
field
message
}
}
}
Response:
{
"data": {
"campaignConfigurationUpdate": {
"configuration": {
"challenge": {
"goal": 100,
"unit": "miles"
}
},
"userErrors": []
}
}
}
The CampaignChallengeConfiguration defines the following fields:
| Field | Description |
|---|---|
goal |
The numeric target for the challenge (e.g., 100 for 100 miles) |
unit |
The unit of measurement. One of: miles, kilometers, steps, hours, minutes, days, laps, reps, floors, times |
When a campaign has a challenge configured, fundraisers created under that campaign can track their progress via fitnessActivityTrackingSettings on the fundraiser. If the campaign has challengeTimeframe set to true, the challenge is time-bounded by challengeStartDate and challengeEndDate.
Challenge category options
When a campaign has a challenge, you can specify which activity types are available to participants via selectedCategoryOptions on campaignCreate or campaignUpdate. These control which fitness activities participants can choose when creating a fundraiser under the challenge.
To discover the available category options and their IDs, use the campaignCategoryOptions query:
Query example:
query {
campaignCategoryOptions(filter: { type: DEFAULT }) {
id
name
categoryId
categoryName
type
}
}
Response:
{
"data": {
"campaignCategoryOptions": [
{
"id": "10",
"name": "Run",
"categoryId": "1",
"categoryName": "Running",
"type": "DEFAULT"
},
{
"id": "11",
"name": "TrailRun",
"categoryId": "1",
"categoryName": "Running",
"type": "DEFAULT"
}
]
}
}
Use the id values from this response as the optionId when setting selectedCategoryOptions on campaignCreate.
Once a campaign has category options configured, you can also query them via categoryOptions on the campaign itself, which returns a list of CampaignCategoryMapping objects.
The following activity types are available as category options:
| Activity Type | Activity Type | Activity Type |
|---|---|---|
Crossfit |
Run |
VirtualRide |
Hike |
Swim |
VirtualRun |
Pickleball |
TrailRun |
Walk |
Ride |
WeightTraining |
Yoga |
For the "100 Miles in January" campaign, the category options might look like this:
Query example:
query {
partner {
campaigns {
id
name
categoryOptions {
categoryId
categoryName
categoryOptionId
categoryOptionName
categoryOptionDisplayName
categoryOptionDescription
trackingUnits
selected
}
}
}
}
Response:
{
"data": {
"partner": {
"campaigns": [
{
"id": "456",
"name": "100 Miles in January",
"categoryOptions": [
{
"categoryId": "1",
"categoryName": "Running",
"categoryOptionId": "10",
"categoryOptionName": "Run",
"categoryOptionDisplayName": "Running",
"categoryOptionDescription": "Track your running miles toward the 100-mile goal",
"trackingUnits": ["miles", "kilometers"],
"selected": true
},
{
"categoryId": "1",
"categoryName": "Running",
"categoryOptionId": "11",
"categoryOptionName": "TrailRun",
"categoryOptionDisplayName": "Trail Running",
"categoryOptionDescription": "Hit the trails and log your miles toward the 100-mile goal",
"trackingUnits": ["miles", "kilometers"],
"selected": true
}
]
}
]
}
}
}
Updating a campaign
Use the campaignUpdate mutation to update an existing campaign. All fields in the input are optional — only the fields you provide will be updated.
For example, if the "100 Miles in January" campaign is gaining traction and you want to raise the overall fundraising goal:
Mutation example:
mutation {
campaignUpdate(
id: "456"
input: {
goal: 50000.00
description: "Kick off the new year by committing to run 100 miles in January. We've doubled our goal — every mile you run raises money for children's health programs."
}
) {
campaign {
id
name
goal
description
}
userErrors {
field
message
}
}
}
Response:
{
"data": {
"campaignUpdate": {
"campaign": {
"id": "456",
"name": "100 Miles in January",
"goal": 50000.00,
"description": "Kick off the new year by committing to run 100 miles in January. We've doubled our goal — every mile you run raises money for children's health programs."
},
"userErrors": []
}
}
}
Querying campaigns
partner.campaigns
To retrieve all campaigns associated with your partner account, use partner.campaigns.
Query example:
query {
partner {
campaigns {
id
name
description
goal
startDate
endDate
imageUrl
configuration {
challenge {
goal
unit
}
}
metrics {
totalDonors
totalFundraisers
totalRaised
}
}
}
}
Response:
{
"data": {
"partner": {
"campaigns": [
{
"id": "456",
"name": "100 Miles in January",
"description": "Kick off the new year by committing to run 100 miles in January. Every mile you run raises money for children's health programs.",
"goal": 25000.00,
"startDate": "2026-01-01",
"endDate": "2026-01-31",
"imageUrl": "https://www.gofundme.com/campaignassets/100-miles-january.jpeg",
"configuration": {
"challenge": {
"goal": 100,
"unit": "miles"
}
},
"metrics": {
"totalDonors": 210,
"totalFundraisers": 45,
"totalRaised": 11250.00
}
}
]
}
}
}
fundraiser.campaign
To check which campaign a fundraiser belongs to, query the campaign field on a fundraiser.
Query example:
query {
fundraiser(slug: "sarahs-january-miles") {
title
campaign {
id
name
goal
configuration {
challenge {
goal
unit
}
}
metrics {
totalRaised
totalFundraisers
}
}
}
}
Response:
{
"data": {
"fundraiser": {
"title": "Sarah's 100 Miles in January",
"campaign": {
"id": "456",
"name": "100 Miles in January",
"goal": 25000.00,
"configuration": {
"challenge": {
"goal": 100,
"unit": "miles"
}
},
"metrics": {
"totalRaised": 11250.00,
"totalFundraisers": 45
}
}
}
}
}
Campaign metrics
Use CampaignMetrics to track the overall performance of a campaign. This is available on the metrics field of a Campaign.
| Field | Description |
|---|---|
totalDonors |
Total number of unique donors across all campaign fundraisers |
totalFundraisers |
Total number of fundraisers created under the campaign |
totalRaised |
Total amount raised across all campaign fundraisers |
Creating a fundraiser for a campaign
To create a fundraiser that is part of the "100 Miles in January" campaign, use partnerFundraiserInput.campaignRegistration in fundraiserCreateDraft. This associates the new fundraiser with the campaign and registers the participant at the same time.
After creating the draft, use the fundraiserPublish mutation to make the fundraiser publicly visible. See Creating Fundraisers via API for details on publishing.
Mutation example:
mutation {
fundraiserCreateDraft(input: {
title: "Sarah's 100 Miles in January"
category: CHARITY
charity: {
paypalNonprofitId: 14886
}
country: "US"
postalCode: "92618"
goalAmount: 250
expectedBeneficiaryRelation: CHARITY
mediaUrl: "https://www.gofundme.com/partnerassets/partner-uploads/sarah-running.jpeg"
description: "I'm taking on the 100 Miles in January challenge! I'll be running every day this month to raise money for children's health programs. Please support my miles!"
partnerFundraiserInput: {
campaignRegistration: {
campaignId: "456"
firstName: "Sarah"
lastName: "Johnson"
email: "sarah.johnson@example.com"
locale: "en-US"
}
}
partnerAffiliation: {
sourceApplication: "Partner App"
}
}) {
fundraiser {
slug
fundId
title
campaign {
id
name
}
}
userErrors {
field
message
}
}
}
Response:
{
"data": {
"fundraiserCreateDraft": {
"fundraiser": {
"slug": "sarahs-january-miles",
"fundId": "59024200",
"title": "Sarah's 100 Miles in January",
"campaign": {
"id": "456",
"name": "100 Miles in January"
}
},
"userErrors": []
}
}
}
Queries
campaignById
Query
query campaignById($id: ID!) {
campaignById(id: $id) {
categoryOptions {
...CampaignCategoryMappingFragment
}
challengeEndDate
challengeStartDate
challengeTimeframe
charities {
...CharityFragment
}
configuration {
...CampaignConfigurationFragment
}
defaultFundraiserDesc
defaultFundraiserGoal
defaultFundraiserImageUrl
defaultFundraiserTitle
description
enableLeaderboards
endDate
fundraiserSmartGoal
goal
id
imageUrl
metrics {
...CampaignMetricsFragment
}
name
startDate
}
}
Variables
{"id": 4}
Response
{
"data": {
"campaignById": {
"categoryOptions": [CampaignCategoryMapping],
"challengeEndDate": "2007-12-03T10:15:30Z",
"challengeStartDate": "2007-12-03T10:15:30Z",
"challengeTimeframe": false,
"charities": [Charity],
"configuration": CampaignConfiguration,
"defaultFundraiserDesc": "abc123",
"defaultFundraiserGoal": 123,
"defaultFundraiserImageUrl": Url,
"defaultFundraiserTitle": "xyz789",
"description": "abc123",
"enableLeaderboards": false,
"endDate": "2007-12-03",
"fundraiserSmartGoal": false,
"goal": 123.45,
"id": "4",
"imageUrl": Url,
"metrics": CampaignMetrics,
"name": "xyz789",
"startDate": "2007-12-03"
}
}
}
campaignCategoryOptions
Response
Returns [CampaignCategoryOption!]!
Arguments
| Name | Description |
|---|---|
filter - CampaignCategoryOptionFilterInput
|
Query
query campaignCategoryOptions($filter: CampaignCategoryOptionFilterInput) {
campaignCategoryOptions(filter: $filter) {
categoryId
categoryName
id
name
trackingUnits
type
}
}
Variables
{"filter": CampaignCategoryOptionFilterInput}
Response
{
"data": {
"campaignCategoryOptions": [
{
"categoryId": 4,
"categoryName": "xyz789",
"id": "4",
"name": "xyz789",
"trackingUnits": ["days"],
"type": "DEFAULT"
}
]
}
}
charityByPaypalNonprofitId
Description
Gets a charity by Paypal Nonprofit ID
Query
query charityByPaypalNonprofitId($paypalNonprofitId: ID!) {
charityByPaypalNonprofitId(paypalNonprofitId: $paypalNonprofitId) {
categoryCode
city
country
currencyCode
description
ein
id
logo {
...CharityPhotoFragment
}
name
npoId
slug
state
status
addressLine1
details {
...CharityDetailsFragment
}
donations {
...DonationConnectionFragment
}
fundraiserCategory
fundraisers {
...FundraiserConnectionFragment
}
recentDonations {
...DonationConnectionFragment
}
zipCode
}
}
Variables
{"paypalNonprofitId": 4}
Response
{
"data": {
"charityByPaypalNonprofitId": {
"categoryCode": "abc123",
"city": "abc123",
"country": "xyz789",
"currencyCode": "xyz789",
"description": "xyz789",
"ein": "xyz789",
"id": 4,
"logo": CharityPhoto,
"name": "abc123",
"npoId": "abc123",
"slug": "abc123",
"state": "abc123",
"status": "ACTIVE",
"addressLine1": "xyz789",
"details": CharityDetails,
"donations": DonationConnection,
"fundraiserCategory": "ANIMALS",
"fundraisers": FundraiserConnection,
"recentDonations": DonationConnection,
"zipCode": "abc123"
}
}
}
charitySearch
Description
Gets charities with keywords similar to the searchTerm. If searchTerm is not specified, returns top charities by Algolia's ranking score
Response
Returns [Charity!]!
Arguments
| Name | Description |
|---|---|
filter - CharityFilter
|
|
searchTerm - String
|
Query
query charitySearch(
$filter: CharityFilter,
$searchTerm: String
) {
charitySearch(
filter: $filter,
searchTerm: $searchTerm
) {
categoryCode
city
country
currencyCode
description
ein
id
logo {
...CharityPhotoFragment
}
name
npoId
slug
state
status
addressLine1
details {
...CharityDetailsFragment
}
donations {
...DonationConnectionFragment
}
fundraiserCategory
fundraisers {
...FundraiserConnectionFragment
}
recentDonations {
...DonationConnectionFragment
}
zipCode
}
}
Variables
{
"filter": CharityFilter,
"searchTerm": "xyz789"
}
Response
{
"data": {
"charitySearch": [
{
"categoryCode": "abc123",
"city": "xyz789",
"country": "abc123",
"currencyCode": "xyz789",
"description": "abc123",
"ein": "xyz789",
"id": 4,
"logo": CharityPhoto,
"name": "xyz789",
"npoId": "xyz789",
"slug": "abc123",
"state": "abc123",
"status": "ACTIVE",
"addressLine1": "xyz789",
"details": CharityDetails,
"donations": DonationConnection,
"fundraiserCategory": "ANIMALS",
"fundraisers": FundraiserConnection,
"recentDonations": DonationConnection,
"zipCode": "xyz789"
}
]
}
}
fundraiser
Description
Gets a fundraiser by slug / url
Response
Returns a Fundraiser
Arguments
| Name | Description |
|---|---|
slug - ID!
|
Fundraiser slug |
Query
query fundraiser($slug: ID!) {
fundraiser(slug: $slug) {
category
categoryId
charity {
...CharityFragment
}
charityOrganized
deactivated
defaultSlug
defaultUrl
description
donationsEnabled
fundId
fundName
fundraiserImageUrl
fundraiserPhoto {
...FundraiserPhotoFragment
}
goalDeadline
hasDonations
id
isLaunched
isPublished
lastDonationAt
mediaId
mediaType
mediaUrl
organizer {
...UserFragment
}
partner {
...PartnerFragment
}
photo {
...FundraiserPhotoFragment
}
projectType
publishedAt
slug
state
title
url
campaign {
...CampaignFragment
}
charityFundMomentType
charityFundraiserMomentType
currentAmount {
...MoneyFragment
}
currentNetAmount {
...MoneyFragment
}
donations {
...DonationConnectionFragment
}
donationsInLast24HoursCount
donationsInLast48HoursCount
expectedBeneficiaryRelation
fitnessActivityMetrics {
...FitnessActivityMetricsFragment
}
fitnessActivityTrackingSettings {
...FitnessActivityTrackingSettingsFragment
}
fundDescription
galleryImages {
...GalleryImagesConnectionFragment
}
goalAmount {
...MoneyFragment
}
npoMarketingConsent
partnerCobrandingEnabled
partnerExternalOrganizer {
...PartnerExternalOrganizerFragment
}
shareHistoryActivityCount
smartGoalsEnabled
smartGoalsOptIn
suggestedGoalAmount {
...SuggestedGoalAmountFragment
}
thirdPartyId
totalDonations
totalFitnessActivityMetrics {
...FitnessActivityDistanceMetricsFragment
}
uniqueDonorCount
}
}
Variables
{"slug": "4"}
Response
{
"data": {
"fundraiser": {
"category": "ANIMALS",
"categoryId": 4,
"charity": Charity,
"charityOrganized": true,
"deactivated": false,
"defaultSlug": "xyz789",
"defaultUrl": "abc123",
"description": "xyz789",
"donationsEnabled": true,
"fundId": 4,
"fundName": "xyz789",
"fundraiserImageUrl": Url,
"fundraiserPhoto": FundraiserPhoto,
"goalDeadline": "2007-12-03T10:15:30Z",
"hasDonations": true,
"id": "4",
"isLaunched": true,
"isPublished": true,
"lastDonationAt": "2007-12-03T10:15:30Z",
"mediaId": "xyz789",
"mediaType": "FACEBOOK_AWS",
"mediaUrl": Url,
"organizer": User,
"partner": Partner,
"photo": FundraiserPhoto,
"projectType": "AON",
"publishedAt": "2007-12-03T10:15:30Z",
"slug": "abc123",
"state": "ACTIVE",
"title": "xyz789",
"url": "xyz789",
"campaign": Campaign,
"charityFundMomentType": "BIRTHDAY",
"charityFundraiserMomentType": "xyz789",
"currentAmount": Money,
"currentNetAmount": Money,
"donations": DonationConnection,
"donationsInLast24HoursCount": 123,
"donationsInLast48HoursCount": 987,
"expectedBeneficiaryRelation": "CHARITY",
"fitnessActivityMetrics": [FitnessActivityMetrics],
"fitnessActivityTrackingSettings": FitnessActivityTrackingSettings,
"fundDescription": "xyz789",
"galleryImages": GalleryImagesConnection,
"goalAmount": Money,
"npoMarketingConsent": false,
"partnerCobrandingEnabled": false,
"partnerExternalOrganizer": PartnerExternalOrganizer,
"shareHistoryActivityCount": 987,
"smartGoalsEnabled": false,
"smartGoalsOptIn": "DISABLED",
"suggestedGoalAmount": SuggestedGoalAmount,
"thirdPartyId": "abc123",
"totalDonations": 987,
"totalFitnessActivityMetrics": FitnessActivityDistanceMetrics,
"uniqueDonorCount": 987
}
}
}
fundraisersByThirdPartyId
Description
Gets a list of fundraisers by third party id
Response
Returns [Fundraiser]
Arguments
| Name | Description |
|---|---|
fundTPId - ID!
|
Fundraiser third party id |
Query
query fundraisersByThirdPartyId($fundTPId: ID!) {
fundraisersByThirdPartyId(fundTPId: $fundTPId) {
category
categoryId
charity {
...CharityFragment
}
charityOrganized
deactivated
defaultSlug
defaultUrl
description
donationsEnabled
fundId
fundName
fundraiserImageUrl
fundraiserPhoto {
...FundraiserPhotoFragment
}
goalDeadline
hasDonations
id
isLaunched
isPublished
lastDonationAt
mediaId
mediaType
mediaUrl
organizer {
...UserFragment
}
partner {
...PartnerFragment
}
photo {
...FundraiserPhotoFragment
}
projectType
publishedAt
slug
state
title
url
campaign {
...CampaignFragment
}
charityFundMomentType
charityFundraiserMomentType
currentAmount {
...MoneyFragment
}
currentNetAmount {
...MoneyFragment
}
donations {
...DonationConnectionFragment
}
donationsInLast24HoursCount
donationsInLast48HoursCount
expectedBeneficiaryRelation
fitnessActivityMetrics {
...FitnessActivityMetricsFragment
}
fitnessActivityTrackingSettings {
...FitnessActivityTrackingSettingsFragment
}
fundDescription
galleryImages {
...GalleryImagesConnectionFragment
}
goalAmount {
...MoneyFragment
}
npoMarketingConsent
partnerCobrandingEnabled
partnerExternalOrganizer {
...PartnerExternalOrganizerFragment
}
shareHistoryActivityCount
smartGoalsEnabled
smartGoalsOptIn
suggestedGoalAmount {
...SuggestedGoalAmountFragment
}
thirdPartyId
totalDonations
totalFitnessActivityMetrics {
...FitnessActivityDistanceMetricsFragment
}
uniqueDonorCount
}
}
Variables
{"fundTPId": "4"}
Response
{
"data": {
"fundraisersByThirdPartyId": [
{
"category": "ANIMALS",
"categoryId": 4,
"charity": Charity,
"charityOrganized": true,
"deactivated": false,
"defaultSlug": "xyz789",
"defaultUrl": "xyz789",
"description": "xyz789",
"donationsEnabled": false,
"fundId": 4,
"fundName": "xyz789",
"fundraiserImageUrl": Url,
"fundraiserPhoto": FundraiserPhoto,
"goalDeadline": "2007-12-03T10:15:30Z",
"hasDonations": false,
"id": "4",
"isLaunched": true,
"isPublished": true,
"lastDonationAt": "2007-12-03T10:15:30Z",
"mediaId": "xyz789",
"mediaType": "FACEBOOK_AWS",
"mediaUrl": Url,
"organizer": User,
"partner": Partner,
"photo": FundraiserPhoto,
"projectType": "AON",
"publishedAt": "2007-12-03T10:15:30Z",
"slug": "xyz789",
"state": "ACTIVE",
"title": "xyz789",
"url": "abc123",
"campaign": Campaign,
"charityFundMomentType": "BIRTHDAY",
"charityFundraiserMomentType": "xyz789",
"currentAmount": Money,
"currentNetAmount": Money,
"donations": DonationConnection,
"donationsInLast24HoursCount": 987,
"donationsInLast48HoursCount": 123,
"expectedBeneficiaryRelation": "CHARITY",
"fitnessActivityMetrics": [
FitnessActivityMetrics
],
"fitnessActivityTrackingSettings": FitnessActivityTrackingSettings,
"fundDescription": "abc123",
"galleryImages": GalleryImagesConnection,
"goalAmount": Money,
"npoMarketingConsent": true,
"partnerCobrandingEnabled": false,
"partnerExternalOrganizer": PartnerExternalOrganizer,
"shareHistoryActivityCount": 987,
"smartGoalsEnabled": false,
"smartGoalsOptIn": "DISABLED",
"suggestedGoalAmount": SuggestedGoalAmount,
"thirdPartyId": "xyz789",
"totalDonations": 123,
"totalFitnessActivityMetrics": FitnessActivityDistanceMetrics,
"uniqueDonorCount": 987
}
]
}
}
partner
Description
Data and Queries that are pertinent to a partner. Some properties under Partner are public, but others require either access to the Partner Dashboard, or a valid API Key. The ID parameter is not required if authenticating via API Key
Query
query partner($id: ID) {
partner(id: $id) {
allowCobranding
code
designatedRecipient {
...DesignatedRecipientFragment
}
id
logoUrl
name
apiKeys {
...PartnerApiKeyFragment
}
campaigns {
...CampaignFragment
}
contactEmail
defaultCobranding
donations {
...DonationConnectionFragment
}
fundraisers {
...FundraiserConnectionFragment
}
isActive
metrics {
...PartnerMetricsFragment
}
oAuthApplication {
...OAuthApplicationFragment
}
regularLogoUrl
reports {
...PartnerReportFragment
}
revenueShare
}
}
Variables
{"id": "4"}
Response
{
"data": {
"partner": {
"allowCobranding": true,
"code": "abc123",
"designatedRecipient": DesignatedRecipient,
"id": 4,
"logoUrl": Url,
"name": "abc123",
"apiKeys": [PartnerApiKey],
"campaigns": [Campaign],
"contactEmail": "xyz789",
"defaultCobranding": true,
"donations": DonationConnection,
"fundraisers": FundraiserConnection,
"isActive": true,
"metrics": PartnerMetrics,
"oAuthApplication": OAuthApplication,
"regularLogoUrl": Url,
"reports": PartnerReport,
"revenueShare": Decimal
}
}
}
Mutations
campaignConfigurationUpdate
Description
Update the configuration of an existing campaign
Response
Returns a CampaignConfigurationUpdateResponse
Arguments
| Name | Description |
|---|---|
id - ID!
|
|
input - CampaignConfigurationInput!
|
Query
mutation campaignConfigurationUpdate(
$id: ID!,
$input: CampaignConfigurationInput!
) {
campaignConfigurationUpdate(
id: $id,
input: $input
) {
configuration {
...CampaignConfigurationFragment
}
userErrors {
...UserErrorFragment
}
}
}
Variables
{"id": 4, "input": CampaignConfigurationInput}
Response
{
"data": {
"campaignConfigurationUpdate": {
"configuration": CampaignConfiguration,
"userErrors": [UserError]
}
}
}
campaignCreate
Description
Create a new campaign
Response
Returns a CampaignResponse
Arguments
| Name | Description |
|---|---|
charityIds - [ID!]!
|
|
input - CampaignCreateInput!
|
Query
mutation campaignCreate(
$charityIds: [ID!]!,
$input: CampaignCreateInput!
) {
campaignCreate(
charityIds: $charityIds,
input: $input
) {
campaign {
...CampaignFragment
}
userErrors {
...UserErrorFragment
}
}
}
Variables
{
"charityIds": ["4"],
"input": CampaignCreateInput
}
Response
{
"data": {
"campaignCreate": {
"campaign": Campaign,
"userErrors": [UserError]
}
}
}
campaignUpdate
Description
Update an existing campaign
Response
Returns a CampaignResponse
Arguments
| Name | Description |
|---|---|
charityIds - [ID!]
|
|
id - ID!
|
|
input - CampaignUpdateInput!
|
Query
mutation campaignUpdate(
$charityIds: [ID!],
$id: ID!,
$input: CampaignUpdateInput!
) {
campaignUpdate(
charityIds: $charityIds,
id: $id,
input: $input
) {
campaign {
...CampaignFragment
}
userErrors {
...UserErrorFragment
}
}
}
Variables
{"charityIds": [4], "id": 4, "input": CampaignUpdateInput}
Response
{
"data": {
"campaignUpdate": {
"campaign": Campaign,
"userErrors": [UserError]
}
}
}
fundraiserCreateDraft
Description
Create a new fundraiser, which will initially be in a draft state. Use the fundraiserPublish mutation to make a fundraiser publicly visible
Response
Returns a FundraiserResponse
Arguments
| Name | Description |
|---|---|
input - FundraiserInput!
|
Query
mutation fundraiserCreateDraft($input: FundraiserInput!) {
fundraiserCreateDraft(input: $input) {
fundraiser {
...FundraiserFragment
}
userErrors {
...UserErrorFragment
}
}
}
Variables
{"input": FundraiserInput}
Response
{
"data": {
"fundraiserCreateDraft": {
"fundraiser": Fundraiser,
"userErrors": [UserError]
}
}
}
fundraiserPublish
Description
Publish a fundraiser
Response
Returns a FundraiserResponse
Arguments
| Name | Description |
|---|---|
id - ID!
|
|
input - FundraiserPublishInput
|
Query
mutation fundraiserPublish(
$id: ID!,
$input: FundraiserPublishInput
) {
fundraiserPublish(
id: $id,
input: $input
) {
fundraiser {
...FundraiserFragment
}
userErrors {
...UserErrorFragment
}
}
}
Variables
{
"id": "4",
"input": FundraiserPublishInput
}
Response
{
"data": {
"fundraiserPublish": {
"fundraiser": Fundraiser,
"userErrors": [UserError]
}
}
}
fundraiserUpdate
Description
Update a fundraiser Use the fundraiserPublish mutation to make a fundraiser publicly visible
Response
Returns a FundraiserResponse
Arguments
| Name | Description |
|---|---|
id - ID!
|
|
input - FundraiserInput!
|
Query
mutation fundraiserUpdate(
$id: ID!,
$input: FundraiserInput!
) {
fundraiserUpdate(
id: $id,
input: $input
) {
fundraiser {
...FundraiserFragment
}
userErrors {
...UserErrorFragment
}
}
}
Variables
{"id": 4, "input": FundraiserInput}
Response
{
"data": {
"fundraiserUpdate": {
"fundraiser": Fundraiser,
"userErrors": [UserError]
}
}
}
partnerPhotoUpload
Description
Allows a partner to upload a public asset. The content-type for this mutation must be multipart/form-data
Response
Returns a PartnerUpload
Arguments
| Name | Description |
|---|---|
input - Upload!
|
The file to upload |
Query
mutation partnerPhotoUpload($input: Upload!) {
partnerPhotoUpload(input: $input) {
createdAt
fileName
fileSize
fileType
id
url
}
}
Variables
{"input": Upload}
Response
{
"data": {
"partnerPhotoUpload": {
"createdAt": "2007-12-03T10:15:30Z",
"fileName": "xyz789",
"fileSize": 123,
"fileType": "abc123",
"id": "4",
"url": "xyz789"
}
}
}
Types
Boolean
Description
The Boolean scalar type represents true or false
Example
true
Campaign
Fields
| Field Name | Description |
|---|---|
categoryOptions - [CampaignCategoryMapping!]
|
|
challengeEndDate - DateTime
|
|
challengeStartDate - DateTime
|
|
challengeTimeframe - Boolean
|
|
charities - [Charity]
|
|
configuration - CampaignConfiguration
|
|
defaultFundraiserDesc - String
|
|
defaultFundraiserGoal - Int
|
|
defaultFundraiserImageUrl - Url
|
|
defaultFundraiserTitle - String
|
|
description - String
|
|
enableLeaderboards - Boolean
|
|
endDate - Date
|
|
fundraiserSmartGoal - Boolean
|
|
goal - Float
|
|
id - ID
|
|
imageUrl - Url
|
|
metrics - CampaignMetrics
|
|
name - String
|
|
startDate - Date
|
Example
{
"categoryOptions": [CampaignCategoryMapping],
"challengeEndDate": "2007-12-03T10:15:30Z",
"challengeStartDate": "2007-12-03T10:15:30Z",
"challengeTimeframe": true,
"charities": [Charity],
"configuration": CampaignConfiguration,
"defaultFundraiserDesc": "xyz789",
"defaultFundraiserGoal": 123,
"defaultFundraiserImageUrl": Url,
"defaultFundraiserTitle": "abc123",
"description": "abc123",
"enableLeaderboards": false,
"endDate": "2007-12-03",
"fundraiserSmartGoal": true,
"goal": 987.65,
"id": 4,
"imageUrl": Url,
"metrics": CampaignMetrics,
"name": "abc123",
"startDate": "2007-12-03"
}
CampaignCategoryMapping
Fields
| Field Name | Description |
|---|---|
categoryId - ID
|
|
categoryName - String
|
|
categoryOptionDescription - String
|
|
categoryOptionDisplayName - String
|
|
categoryOptionId - ID
|
|
categoryOptionName - String
|
|
createdAt - Date
|
|
selected - Boolean
|
|
trackingUnits - [FitnessActivityTrackingUnit]
|
|
type - String
|
|
updatedAt - Date
|
Example
{
"categoryId": 4,
"categoryName": "abc123",
"categoryOptionDescription": "abc123",
"categoryOptionDisplayName": "abc123",
"categoryOptionId": "4",
"categoryOptionName": "xyz789",
"createdAt": "2007-12-03",
"selected": true,
"trackingUnits": ["days"],
"type": "abc123",
"updatedAt": "2007-12-03"
}
CampaignCategoryOption
Fields
| Field Name | Description |
|---|---|
categoryId - ID!
|
|
categoryName - String!
|
|
id - ID!
|
|
name - String!
|
|
trackingUnits - [FitnessActivityTrackingUnit!]
|
|
type - CampaignCategoryOptionType!
|
Example
{
"categoryId": 4,
"categoryName": "abc123",
"id": "4",
"name": "abc123",
"trackingUnits": ["days"],
"type": "DEFAULT"
}
CampaignCategoryOptionFilterInput
Fields
| Input Field | Description |
|---|---|
type - CampaignCategoryOptionType
|
Example
{"type": "DEFAULT"}
CampaignCategoryOptionInput
Fields
| Input Field | Description |
|---|---|
optionId - ID!
|
|
optionType - CampaignCategoryOptionType!
|
Example
{"optionId": 4, "optionType": "DEFAULT"}
CampaignCategoryOptionType
Values
| Enum Value | Description |
|---|---|
|
|
Example
"DEFAULT"
CampaignChallengeConfiguration
Description
Campaign Challenge Configuration
Fields
| Field Name | Description |
|---|---|
goal - Decimal
|
The challenge goal (e.g., total distance to achieve) |
unit - FitnessActivityTrackingUnit
|
The unit for the challenge (miles or kilometers) |
Example
{"goal": Decimal, "unit": "days"}
CampaignChallengeConfigurationInput
Fields
| Input Field | Description |
|---|---|
goal - Decimal
|
The challenge goal (e.g., total distance to achieve) |
unit - FitnessActivityTrackingUnit
|
The unit for the challenge (miles or kilometers) |
Example
{"goal": Decimal, "unit": "days"}
CampaignConfiguration
Fields
| Field Name | Description |
|---|---|
challenge - CampaignChallengeConfiguration
|
|
contact - CampaignContactConfiguration
|
|
incentives - [CampaignIncentiveConfiguration]
|
Example
{
"challenge": CampaignChallengeConfiguration,
"contact": CampaignContactConfiguration,
"incentives": [CampaignIncentiveConfiguration]
}
CampaignConfigurationInput
Description
Tri-state semantics: omitted -> no change, null -> delete, value present -> create/update
Fields
| Input Field | Description |
|---|---|
challenge - CampaignChallengeConfigurationInput
|
|
contact - CampaignContactConfigurationInput
|
|
incentives - [CampaignIncentiveConfigurationInput]
|
Example
{
"challenge": CampaignChallengeConfigurationInput,
"contact": CampaignContactConfigurationInput,
"incentives": [CampaignIncentiveConfigurationInput]
}
CampaignConfigurationUpdateResponse
Description
Response payload after updating a campaign configuration
Fields
| Field Name | Description |
|---|---|
configuration - CampaignConfiguration
|
|
userErrors - [UserError!]!
|
Example
{
"configuration": CampaignConfiguration,
"userErrors": [UserError]
}
CampaignContactConfiguration
Fields
| Field Name | Description |
|---|---|
sms - Sms
|
Example
{"sms": Sms}
CampaignContactConfigurationInput
Fields
| Input Field | Description |
|---|---|
sms - SmsInput
|
Example
{"sms": SmsInput}
CampaignCreateInput
Fields
| Input Field | Description |
|---|---|
challengeEndDate - DateTime
|
|
challengeStartDate - DateTime
|
|
challengeTimeframe - Boolean
|
|
collectionId - Int
|
|
defaultFundraiserDesc - String
|
|
defaultFundraiserGoal - Float
|
|
defaultFundraiserImageUrl - Url
|
|
defaultFundraiserTitle - String
|
|
description - String
|
|
enableLeaderboards - Boolean
|
|
endDate - DateTime
|
|
fundraiserCoachingEmail - Boolean
|
|
fundraiserSmartGoal - Boolean
|
|
genaiFundraiserCreateEnabled - Boolean
|
|
goal - Float
|
|
imageUrl - Url
|
|
incentive - Boolean
|
|
mission - String
|
|
name - String!
|
|
proCampaignId - Int
|
|
selectedCategoryOptions - [CampaignCategoryOptionInput]
|
|
startDate - DateTime
|
Example
{
"challengeEndDate": "2007-12-03T10:15:30Z",
"challengeStartDate": "2007-12-03T10:15:30Z",
"challengeTimeframe": false,
"collectionId": 987,
"defaultFundraiserDesc": "abc123",
"defaultFundraiserGoal": 123.45,
"defaultFundraiserImageUrl": Url,
"defaultFundraiserTitle": "xyz789",
"description": "abc123",
"enableLeaderboards": true,
"endDate": "2007-12-03T10:15:30Z",
"fundraiserCoachingEmail": false,
"fundraiserSmartGoal": true,
"genaiFundraiserCreateEnabled": false,
"goal": 987.65,
"imageUrl": Url,
"incentive": false,
"mission": "abc123",
"name": "abc123",
"proCampaignId": 987,
"selectedCategoryOptions": [
CampaignCategoryOptionInput
],
"startDate": "2007-12-03T10:15:30Z"
}
CampaignIncentiveConfiguration
Description
Campaign Incentive Configuration
Fields
| Field Name | Description |
|---|---|
amountToRaise - Decimal
|
|
color - String
|
|
image - Url
|
|
size - String
|
|
type - CampaignIncentiveType
|
Example
{
"amountToRaise": Decimal,
"color": "abc123",
"image": Url,
"size": "abc123",
"type": "BAG"
}
CampaignIncentiveConfigurationInput
Description
Input types for Campaign Configuration
Fields
| Input Field | Description |
|---|---|
amountToRaise - Decimal
|
|
color - String
|
|
image - Url
|
|
size - String
|
|
type - CampaignIncentiveType
|
Example
{
"amountToRaise": Decimal,
"color": "xyz789",
"image": Url,
"size": "abc123",
"type": "BAG"
}
CampaignIncentiveType
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"BAG"
CampaignMetrics
CampaignRegistrationInput
Fields
| Input Field | Description |
|---|---|
address - String
|
The user's mailing address |
campaignId - ID
|
The ID of the campaign |
email - String!
|
The user's email address |
emailOptIn - Boolean
|
Whether the user has opted in to receive emails |
firstName - String!
|
The user's first name |
incentive - String
|
The user's selected incentive data |
lastName - String!
|
The user's last name |
locale - String
|
The locale for communications in IETF's BCP 47 standard (e.g. en-US) |
phone - String
|
The user's phone number |
smsOptIn - Boolean
|
Whether the user has opted in to receive sms |
tshirtSize - TShirtSize
|
The user's selected T-shirt size |
Example
{
"address": "xyz789",
"campaignId": "4",
"email": "xyz789",
"emailOptIn": false,
"firstName": "xyz789",
"incentive": "abc123",
"lastName": "abc123",
"locale": "xyz789",
"phone": "xyz789",
"smsOptIn": true,
"tshirtSize": "L"
}
CampaignResponse
Description
Response payload after creating or updating a campaign
Fields
| Field Name | Description |
|---|---|
campaign - Campaign
|
Campaign record that was saved or updated |
userErrors - [UserError!]!
|
Fixable validation errors. These are meant to display to the end-user |
Example
{
"campaign": Campaign,
"userErrors": [UserError]
}
CampaignUpdateInput
Fields
| Input Field | Description |
|---|---|
challengeEndDate - DateTime
|
|
challengeStartDate - DateTime
|
|
challengeTimeframe - Boolean
|
|
defaultFundraiserDesc - String
|
|
defaultFundraiserGoal - Float
|
|
defaultFundraiserImageUrl - Url
|
|
defaultFundraiserTitle - String
|
|
description - String
|
|
enableLeaderboards - Boolean
|
|
endDate - DateTime
|
|
fundraiserCoachingEmail - Boolean
|
|
fundraiserSmartGoal - Boolean
|
|
genaiFundraiserCreateEnabled - Boolean
|
|
goal - Float
|
|
imageUrl - Url
|
|
incentive - Boolean
|
|
mission - String
|
|
name - String
|
|
selectedCategoryOptions - [CampaignCategoryOptionInput]
|
|
startDate - DateTime
|
Example
{
"challengeEndDate": "2007-12-03T10:15:30Z",
"challengeStartDate": "2007-12-03T10:15:30Z",
"challengeTimeframe": false,
"defaultFundraiserDesc": "xyz789",
"defaultFundraiserGoal": 123.45,
"defaultFundraiserImageUrl": Url,
"defaultFundraiserTitle": "abc123",
"description": "abc123",
"enableLeaderboards": false,
"endDate": "2007-12-03T10:15:30Z",
"fundraiserCoachingEmail": false,
"fundraiserSmartGoal": true,
"genaiFundraiserCreateEnabled": true,
"goal": 987.65,
"imageUrl": Url,
"incentive": true,
"mission": "xyz789",
"name": "xyz789",
"selectedCategoryOptions": [
CampaignCategoryOptionInput
],
"startDate": "2007-12-03T10:15:30Z"
}
Charity
Description
Describes a registered charity that a fundraiser can raise money for
Fields
| Field Name | Description |
|---|---|
categoryCode - String
|
from charity_community |
city - String
|
|
country - String
|
|
currencyCode - String
|
Currency code for the charity |
description - String
|
from charity_community |
ein - String
|
|
id - ID!
|
|
logo - CharityPhoto
|
from charity_community |
name - String
|
|
npoId - String
|
|
slug - String
|
|
state - String
|
|
status - CharityStatus
|
from charity_community |
addressLine1 - String
|
|
details - CharityDetails
|
Charity organization detail |
donations - DonationConnection
|
List of donations by charity |
Arguments |
|
fundraiserCategory - FundraiserCategory
|
The fundraiser category most applicable to this charity. Used to automatically select the category when creating a one-click fundraiser from the NPO page |
fundraisers - FundraiserConnection
|
List of fundraisers, optional list based on charityOrganized flag |
recentDonations - DonationConnection
|
List of donations by charity's top 10 funds by last donation date |
Arguments |
|
zipCode - String
|
|
Example
{
"categoryCode": "xyz789",
"city": "xyz789",
"country": "abc123",
"currencyCode": "abc123",
"description": "abc123",
"ein": "abc123",
"id": 4,
"logo": CharityPhoto,
"name": "xyz789",
"npoId": "abc123",
"slug": "abc123",
"state": "abc123",
"status": "ACTIVE",
"addressLine1": "abc123",
"details": CharityDetails,
"donations": DonationConnection,
"fundraiserCategory": "ANIMALS",
"fundraisers": FundraiserConnection,
"recentDonations": DonationConnection,
"zipCode": "abc123"
}
CharityDetails
Example
{
"ein": "abc123",
"mission": "abc123",
"nteeCode": "xyz789",
"nteeDescription": "abc123",
"pcsPopulation": ["abc123"],
"pcsSubjectTran": ["xyz789"],
"rulingYr": 987.65
}
CharityFilter
Description
Fields for filtering a list of charities
Fields
| Input Field | Description |
|---|---|
activeNpoPageOnly - Boolean
|
Filter for charities with active NPO pages. If true, returns only charities with active NPO pages. If false or null, returns all charities regardless of NPO page status |
categories - [CharityTaxonomyCategory!]
|
Filter by charity categories by taxonomy |
countryCode - CountryCode
|
Country a charity was started in |
location - LocationFilter
|
Filter by location using latitude and longitude coordinates |
paypalGivingFundStatus - PaypalGivingFundStatus
|
Filter by PayPal Giving Fund status. If provided, returns only charities with the specified status. If not provided, no filter is applied |
Example
{
"activeNpoPageOnly": false,
"categories": ["ANIMALS"],
"countryCode": "US",
"location": LocationFilter,
"paypalGivingFundStatus": "ACTIVE"
}
CharityFundMomentType
Description
The type of moment for charity fundraisers
Values
| Enum Value | Description |
|---|---|
|
|
Birthday charity fundraiser |
|
|
Standard charity fundraiser with no specific moment type |
|
|
Graduation charity fundraiser |
|
|
Memorial charity fundraiser |
|
|
Wedding charity fundraiser |
Example
"BIRTHDAY"
CharityPhoto
Fields
| Field Name | Description |
|---|---|
scaled - CharityPhotoScaled
|
|
url - Url
|
Example
{
"scaled": CharityPhotoScaled,
"url": Url
}
CharityPhotoScaled
CharitySelectInput
Description
Input for selecting a Charity when creating or updating a Fundraiser. If a charity is provided, a user will not be able to withdraw funds to their own bank account. Instead, the funds will go directly to the Charity. A charity may be referenced though its id, which is a GoFundMe id. Or, it may be referenced through its PayPal Nonprofit id. Supplying multiple values in this input, e.g. a value for both "id" and "paypalNonprofitId", is invalid and will return an error
Fields
| Input Field | Description |
|---|---|
charityFundraiserMomentType - String
|
Type of moment to check for. If null, uses default CLASSIC. Alternate to momentType enum which will be deprecated in the future. Default = "CLASSIC" |
id - ID
|
The GoFundMe id of the Charity that will be receiving the proceeds of this fundraiser |
momentType - CharityFundMomentType
|
The type of moment associated with this charity fundraiser. Only applicable when creating a fundraiser for a specific charity moment/campaign @deprecated(reason: "Use 'charityFundraiserMomentType' field instead to allow more moments in the future.") |
paypalNonprofitId - ID
|
The PayPal Nonprofit id of the Charity that will be receiving the proceeds of this fundraiser |
Example
{
"charityFundraiserMomentType": "xyz789",
"id": "4",
"momentType": "BIRTHDAY",
"paypalNonprofitId": 4
}
CharityStatus
Description
Possible status for the charity
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"ACTIVE"
CharityTaxonomyCategory
Description
Charity categories by taxonomy used in search filters
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"ANIMALS"
Coordinates
CountryCode
Description
The CountryCode scalar type as defined by ISO 3166-1 alpha-2
Example
"US"
CurrencyCode
Description
A representation of the currencies in which GoFundMe supports fundraisers raising money
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"AUD"
Date
Description
An RFC-3339 compliant Full Date Scalar
Example
"2007-12-03"
DateTime
Description
A slightly refined version of RFC-3339 compliant DateTime Scalar
Example
"2007-12-03T10:15:30Z"
Decimal
Example
Decimal
DesignatedRecipient
Description
Info about partner designated recipient
Example
{
"displayBeneficiaryName": false,
"id": 4,
"logoURL": Url,
"name": "abc123"
}
DesignatedRecipientInput
Description
The partner designated recipient
Fields
| Input Field | Description |
|---|---|
recipientId - ID!
|
Identifier for the designated recipient |
Example
{"recipientId": "4"}
Donation
Description
A donation to a given fundraiser made by a donor
Fields
| Field Name | Description |
|---|---|
amount - Money!
|
The amount of money donated to a fundraiser |
createdAt - DateTime!
|
The timestamp of the donor donating to the fundraiser |
deanonymizedName - String
|
The hidden name of the donor donating to the fundraiser when isAnonymous is true, and null otherwise |
donorEmail - String
|
The email address of the donor |
donorLocation - Location
|
The donor's location |
firstName - String
|
The first name of the donor donating to the fundraiser |
fundraiser - Fundraiser
|
The fundraiser to which this donation was made |
giftAidConsent - Boolean
|
Whether the donor has consented to allocate a portion of their donation towards Gift Aid |
id - ID!
|
|
isAnonymous - Boolean!
|
An indicator whether the donation was made anonymously, any anonymous donation should have an empty name field and an empty profileUrl field |
isOffline - Boolean!
|
An indicator whether the donation was processed offline, i.e. not through GoFundMe's Payments Rails |
isRecurring - Boolean
|
Indicate if the donation is a recurring donation |
isVerified - Boolean!
|
An indicator that the donation was completed and counts towards the fundraisers balance |
lastName - String
|
The last name of the donor donating to the fundraiser |
name - String!
|
The name of the donor donating to the fundraiser. When isAnonymous is true, name must be the string 'Anonymous' |
netAmount - Money
|
The net amount of money donated to a fundraiser |
npoMarketingConsent - Boolean
|
Indicates whether the donor has consented to sharing their personal data with nonprofits |
paymentStatus - String
|
The status of the payment tied to the donation |
paymentStatusMessage - String
|
The message associated with the payment status |
refundNote - String
|
Note associated withe the donation refund |
refundedAt - DateTime
|
The datetime the donation was refunded (null if it has not been refunded) |
Example
{
"amount": Money,
"createdAt": "2007-12-03T10:15:30Z",
"deanonymizedName": "xyz789",
"donorEmail": "xyz789",
"donorLocation": Location,
"firstName": "xyz789",
"fundraiser": Fundraiser,
"giftAidConsent": false,
"id": "4",
"isAnonymous": false,
"isOffline": false,
"isRecurring": false,
"isVerified": false,
"lastName": "abc123",
"name": "xyz789",
"netAmount": Money,
"npoMarketingConsent": true,
"paymentStatus": "abc123",
"paymentStatusMessage": "xyz789",
"refundNote": "abc123",
"refundedAt": "2007-12-03T10:15:30Z"
}
DonationConnection
Fields
| Field Name | Description |
|---|---|
edges - [DonationEdge]
|
|
pageInfo - PageInfo!
|
Example
{
"edges": [DonationEdge],
"pageInfo": PageInfo
}
DonationEdge
DonationOrder
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"AMOUNT"
ExpectedBeneficiaryRelation
Description
The intended relationship of the organizer of the fundraiser to the beneficiary of the fundraiser. This field only indicates an intention at the time of fundraiser creation. It is not indicative of who the actual beneficiary is
Values
| Enum Value | Description |
|---|---|
|
|
The person who created the fundraiser intends to fundraiser for charity. I.e. the charity will be directly receiving the funds |
|
|
The person who created the fundraiser intends for someone else to receive the funds |
|
|
The person who created the fundraiser intends to be one receiving the funds |
Example
"CHARITY"
FitnessActivityDistanceMetrics
Fields
| Field Name | Description |
|---|---|
goal - Decimal
|
The goal value for this challenge, if set. V1 field - returned for convenience in goal progress calculation |
goalProgressPercent - Decimal
|
Percentage of goal completed (0-100+), calculated server-side. V1 field - null if no goal is set or if using V0 tracking |
hasFitnessActivitiesFromStrava - Boolean
|
Whether any of the fitness activities being tracked for this fundraiser are from Strava. Returns true if at least one activity has source STRAVA, false otherwise |
totalActivities - Int
|
Total number of activities included in these metrics. May be null if no activities exist |
totalDistance - Decimal
|
Total distance across all activities. May be null if no distance-based activities exist. V0 field - kept for backward compatibility Use totalProgress instead for V1 tracking |
totalDuration - Int
|
Total duration across all activities in seconds. May be null if no duration data exists. V0 field - kept for backward compatibility Use totalProgress instead for V1 tracking |
totalProgress - Decimal
|
Total progress across all activities, interpreted based on unit. V1 field - for unit-agnostic progress tracking.
|
unit - FitnessActivityTrackingUnit
|
Example
{
"goal": Decimal,
"goalProgressPercent": Decimal,
"hasFitnessActivitiesFromStrava": true,
"totalActivities": 987,
"totalDistance": Decimal,
"totalDuration": 987,
"totalProgress": Decimal,
"unit": "days"
}
FitnessActivityMetrics
Fields
| Field Name | Description |
|---|---|
date - DateTime
|
|
duration - Int
|
Duration of the activity in seconds. May be null if not tracked. V0 field - kept for backward compatibility Use progress instead for V1 tracking |
id - ID
|
|
progress - Decimal
|
Progress value for V1 activities. May be null for V0 activities |
source - FitnessActivitySource
|
|
totalDistance - Decimal
|
Total distance for the activity. May be null for non-distance activities (e.g., yoga, push-ups). V0 field - kept for backward compatibility Use progress instead for V1 tracking |
type - FitnessActivityType
|
FitnessActivityType this activity belongs to |
unit - FitnessActivityTrackingUnit
|
Example
{
"date": "2007-12-03T10:15:30Z",
"duration": 987,
"id": "4",
"progress": Decimal,
"source": "MANUAL",
"totalDistance": Decimal,
"type": "AlpineSki",
"unit": "days"
}
FitnessActivitySource
Description
Enums
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"MANUAL"
FitnessActivityTrackingSettings
Description
Fitness activity tracking settings for a fundraiser
Fields
| Field Name | Description |
|---|---|
activityTypes - [FitnessActivityType!]
|
The types of activities to track |
autoSyncActivityDisplayPreference - Boolean
|
Indicates the CO has turned on or off autosynced fitness activities |
goal - Decimal
|
The goal value to achieve (interpreted based on unit) |
startDate - DateTime
|
The start date for tracking fitness activities |
stopDate - DateTime
|
The optional stop date for tracking fitness activities |
unit - FitnessActivityTrackingUnit
|
The unit for measuring progress. Determines how progress is interpreted:
|
Example
{
"activityTypes": ["AlpineSki"],
"autoSyncActivityDisplayPreference": false,
"goal": Decimal,
"startDate": "2007-12-03T10:15:30Z",
"stopDate": "2007-12-03T10:15:30Z",
"unit": "days"
}
FitnessActivityTrackingSettingsInput
Description
Input for configuring fitness activity tracking settings for a fundraiser. All fields are optional to allow partial updates, but startDate, activityTypes, and unit are required before a fundraiser can be published
Fields
| Input Field | Description |
|---|---|
activityTypes - [FitnessActivityType!]
|
The types of activities to track. Required before fundraiser publish |
autoSyncActivityDisplayPreference - Boolean
|
Indicates the CO has turned on or off autosynced fitness activities |
goal - Decimal
|
The goal value to achieve (interpreted based on unit) |
startDate - DateTime
|
The start date for tracking fitness activities. Required before fundraiser publish |
stopDate - DateTime
|
The optional stop date for tracking fitness activities |
unit - FitnessActivityTrackingUnit
|
The unit for measuring progress. Determines how progress is interpreted:
|
Example
{
"activityTypes": ["AlpineSki"],
"autoSyncActivityDisplayPreference": false,
"goal": Decimal,
"startDate": "2007-12-03T10:15:30Z",
"stopDate": "2007-12-03T10:15:30Z",
"unit": "days"
}
FitnessActivityTrackingUnit
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"days"
FitnessActivityType
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"AlpineSki"
Float
Description
The Float scalar type represents signed double-precision fractional values as specified by IEEE 754
Example
987.65
Fundraiser
Description
A Fundraiser is an Entity that allows Fundraiser Organizers to raise money for themselves or others from Donors
Fields
| Field Name | Description |
|---|---|
category - FundraiserCategory
|
The category of the fundraiser |
categoryId - ID
|
The categoryId of the fundraiser. Used for legacy purposes Use the 'category' field. |
charity - Charity
|
Information about the charity beneficiary of the fundraiser if there is one. Temporary field only, do not use |
charityOrganized - Boolean
|
An indicator whether the fundraiser is a charity organized fundraiser |
deactivated - Boolean
|
An indicator whether the fundraiser is currently deactivated |
defaultSlug - String
|
|
defaultUrl - String
|
Use the 'defaultSlug' field. |
description - String!
|
Fundraiser organizer supplied description of the fundraiser, in HTML |
Argumentsexcerpt - Boolean
Flag to specify whether to return an excerpt of the description; defaults to false |
|
donationsEnabled - Boolean
|
An indicator for whether donors are able to make donations to the fundraiser |
fundId - ID!
|
The fundraiser's unique, stable id |
fundName - String!
|
Fundraiser organizer supplied name for the fundraiser Use the 'title' field. |
fundraiserImageUrl - Url
|
The Url of the image to be used for the fundraiser Use 'mediaUrl' field. |
fundraiserPhoto - FundraiserPhoto
|
Object with image url and various scaling options Use 'photo' field. |
goalDeadline - DateTime
|
Fundraiser organizer supplied deadline for raising funds for the fundraiser Use the 'serviceDate' field. |
hasDonations - Boolean
|
An indicator for whether the fundraiser has received any donations |
id - ID!
|
A unique identifier for the fundraiser |
isLaunched - Boolean
|
An indicator whether the fundraiser is currently launched Use the 'isPublished' field. |
isPublished - Boolean
|
An indicator whether the fundraiser is currently published. A published fundraiser is publicly visible, unless it has been flagged. A "draft" fundraiser is one that is not published |
lastDonationAt - DateTime
|
Time of the last donation to the fundraiser |
mediaId - String
|
Reference to the content used for the fundraiser page |
mediaType - MediaType
|
The kind of content used for the fundraiser page |
mediaUrl - Url
|
The Url of the image to be used for the fundraiser |
organizer - User
|
User information for the Fundraiser Organizer who created the fundraiser |
partner - Partner
|
Information about the partner that facilitated the creation of the fundraiser. Temporary field only, do not use |
photo - FundraiserPhoto
|
Object with image url and various scaling options |
projectType - ProjectType
|
Is the fundraiser personal, or for charity? Money goes directly to the charity for charity fundraisers |
publishedAt - DateTime
|
The timestamp of when the fundraiser was first published |
slug - String
|
The unique slug of the fundraiser |
state - FundraiserState
|
|
title - String!
|
Fundraiser organizer supplied title for the fundraiser |
url - String
|
The Url of the fundraiser. Deprecated in favor of 'slug' This value is not a URL, it is a slug. Use the 'slug' field. |
campaign - Campaign
|
The campaign associated with the fundraiser. A campaign represents a NPO initiated fundraising event, sometimes referred to as a "challenge" and groups together fundraisers that are part of the effort |
charityFundMomentType - CharityFundMomentType
|
The type of moment associated with this fundraiser (e.g., BIRTHDAY, CLASSIC). This field is only applicable for charity fundraisers (when projectType is CHARITY). Will be null for non-charity fundraisers. @deprecated(reason: "Use 'charityFundraiserMomentType' field instead to allow more moments in the future.") |
charityFundraiserMomentType - String
|
Type of moment to check for. If null, uses default CLASSIC. Alternate to momentType enum which will be deprecated in the future |
currentAmount - Money
|
The current amount of money raised for a fundraiser |
currentNetAmount - Money
|
The current net amount of money raised for a fundraiser |
donations - DonationConnection
|
List of donations for a fundraiser using cursor based pagination |
Arguments |
|
donationsInLast24HoursCount - Int
|
|
donationsInLast48HoursCount - Int
|
|
expectedBeneficiaryRelation - ExpectedBeneficiaryRelation
|
Who the organizer of the fundraiser originally expected to receive the funds. E.g. "Yourself", "Someone else", or "Charity". This value does not represent who is actually receiving the funds, just an intent at the time the fundraiser was created |
fitnessActivityMetrics - [FitnessActivityMetrics]
|
Fitness activity metrics for fundraisers with fitness tracking enabled. Returns null if the fundraiser does not have fitness activity tracking configured |
fitnessActivityTrackingSettings - FitnessActivityTrackingSettings
|
Fitness activity tracking settings for this fundraiser, if configured |
fundDescription - String
|
Fundraiser organizer supplied description of the fundraiser Use the 'description' field. |
Argumentsexcerpt - Boolean
Flag to specify whether to return an excerpt of the description; defaults to false |
|
galleryImages - GalleryImagesConnection
|
List of additional uncropped fundraiser gallery images submitted by the organizer |
Arguments |
|
goalAmount - Money
|
Displayed goal amount for the fundraiser |
npoMarketingConsent - Boolean
|
Indicates whether the campaign organizer has consented to sharing their personal data with nonprofits when creating a fundraiser |
partnerCobrandingEnabled - Boolean
|
Indicates whether or not the fundraiser should be cobranded with the partner |
partnerExternalOrganizer - PartnerExternalOrganizer
|
A partner-created fund can be associated with an external user that might claim the fund later on; or has already done so |
shareHistoryActivityCount - Int
|
Get total counts of Share History items of a fundraiser |
smartGoalsEnabled - Boolean
|
An indicator for whether smart goals are enabled on the fundraiser. If null, the organizer has not opted into smart goals, which will mean smart goals are disabled Use the 'smartGoalsOptIn' field |
smartGoalsOptIn - SmartGoalsOptInState
|
An indicator for whether smart goals are enabled/disabled on the fundraiser. If in the not eligible state, the organizer has not opted into smart goals, which will mean smart goals are disabled |
suggestedGoalAmount - SuggestedGoalAmount
|
Get suggested goal amount based on fundraiser and browser/device data. Returns null if there is no suggestion |
thirdPartyId - String
|
Optional identifier provided by a partner for partner-referred fundraisers |
totalDonations - Int
|
Total number of donations for a fundraiser |
totalFitnessActivityMetrics - FitnessActivityDistanceMetrics
|
Total aggregated fitness activity metrics for fundraisers with fitness tracking enabled. Returns the sum of all activities matching the tracking settings. Returns null if the fundraiser does not have fitness activity tracking configured or has no activities |
uniqueDonorCount - Int
|
No longer supported |
Example
{
"category": "ANIMALS",
"categoryId": "4",
"charity": Charity,
"charityOrganized": true,
"deactivated": true,
"defaultSlug": "xyz789",
"defaultUrl": "xyz789",
"description": "xyz789",
"donationsEnabled": false,
"fundId": 4,
"fundName": "xyz789",
"fundraiserImageUrl": Url,
"fundraiserPhoto": FundraiserPhoto,
"goalDeadline": "2007-12-03T10:15:30Z",
"hasDonations": false,
"id": 4,
"isLaunched": true,
"isPublished": false,
"lastDonationAt": "2007-12-03T10:15:30Z",
"mediaId": "xyz789",
"mediaType": "FACEBOOK_AWS",
"mediaUrl": Url,
"organizer": User,
"partner": Partner,
"photo": FundraiserPhoto,
"projectType": "AON",
"publishedAt": "2007-12-03T10:15:30Z",
"slug": "abc123",
"state": "ACTIVE",
"title": "xyz789",
"url": "xyz789",
"campaign": Campaign,
"charityFundMomentType": "BIRTHDAY",
"charityFundraiserMomentType": "xyz789",
"currentAmount": Money,
"currentNetAmount": Money,
"donations": DonationConnection,
"donationsInLast24HoursCount": 123,
"donationsInLast48HoursCount": 987,
"expectedBeneficiaryRelation": "CHARITY",
"fitnessActivityMetrics": [FitnessActivityMetrics],
"fitnessActivityTrackingSettings": FitnessActivityTrackingSettings,
"fundDescription": "abc123",
"galleryImages": GalleryImagesConnection,
"goalAmount": Money,
"npoMarketingConsent": true,
"partnerCobrandingEnabled": true,
"partnerExternalOrganizer": PartnerExternalOrganizer,
"shareHistoryActivityCount": 987,
"smartGoalsEnabled": true,
"smartGoalsOptIn": "DISABLED",
"suggestedGoalAmount": SuggestedGoalAmount,
"thirdPartyId": "abc123",
"totalDonations": 987,
"totalFitnessActivityMetrics": FitnessActivityDistanceMetrics,
"uniqueDonorCount": 987
}
FundraiserCategory
Description
The fundraiser category, such as "Funerals & Memorials" or "Medical". When someone is creating a fundraiser, one of the form fields they fill out is called "Category", and this type represents an option
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"ANIMALS"
FundraiserConnection
Fields
| Field Name | Description |
|---|---|
edges - [FundraiserEdge]
|
|
pageInfo - PageInfo!
|
Example
{
"edges": [FundraiserEdge],
"pageInfo": PageInfo
}
FundraiserEdge
Fields
| Field Name | Description |
|---|---|
cursor - String
|
|
node - Fundraiser
|
Example
{
"cursor": "xyz789",
"node": Fundraiser
}
FundraiserInput
Description
Input for creating or updating a fundraiser
Fields
| Input Field | Description |
|---|---|
acknowledgeContentWarnings - Boolean
|
A confirmation that the organizer of this fundraiser has acknowledged any warnings that may have been triggered by the content of their fundraiser. This field is optional if:
If the input does trigger content warnings AND the fundraiser is published, this value must be To check for warnings before submitting input, use the |
aiContentEnabled - Boolean
|
A setting that controls whether or not AI-generated content is enabled for this fundraiser. When true (default), AI features like content suggestions are available. When false, AI content generation is disabled for this fundraiser |
aiShareTextEnabled - Boolean
|
A setting that controls whether or not GenAI Suggested Share Text is enabled If enabled, the sharesheet will automatically generate share text for the user. If disabled, the sharesheet will use hardcoded fallback text |
areCollectionsDisplayed - Boolean
|
A setting that controls whether or not collections are displayed on the fundraiser page. When true, the fundraiser page will show collections of related fundraisers. When false, the fundraiser page will not show collections |
batchDonationEmailsEnabled - Boolean
|
A setting that controls whether or not to batch donation email notifications for this fundraiser. When true, donation notifications emails are batched and sent periodically instead of individually for each donation received. When false, donation notifications are sent individually for each donation received |
category - FundraiserCategory
|
The fundraiser's category |
charity - CharitySelectInput
|
The charity that will directly receive the money raised from this fundraiser. If a charity is selected, the organizer will not be able to withdraw funds to their own bank account |
clientGeneratedDraftId - String
|
A draft id generated client-sided during the initial create step |
collectionId - ID
|
The UUID of the collection to which the fundraiser should be added |
commentsEnabled - Boolean
|
A setting that controls whether or not comments are enabled for this fundraiser. When true (default), donors can leave comments on the fundraiser. When false, comments are disabled |
country - CountryCode
|
The country the fundraiser is located in. The user creating this fundraiser will only be able to withdraw funds if their mailing address is located in this country. Once a user has published their first fundraiser, all subsequent fundraisers must have the same country. To check this requirement, use the |
description - String
|
The HTML description for the fundraiser. This must be a well-formed HTML fragment containing only the following HTML tags: "p", "div", "h1", "h2", "h3", "h4", "h5", "h6", "ul", "ol", "li", "blockquote", "b", "i", "font", "s", "u", "o", "sup", "sub", "ins", "del", "strong", "strike", "tt", "code", "big", "small", "br", "span", "em" |
donationsEnabled - Boolean
|
A setting that controls whether or not donations are enabled for this fundraiser. When true (default), donors can make donations to the fundraiser. When false, donations are disabled and the donate button is hidden |
encourageRecurringDonations - Boolean
|
A setting that controls whether or not the Fundraiser Organizer suggest that donors make recurring donations rather than one time |
expectedBeneficiaryRelation - ExpectedBeneficiaryRelation
|
Who the organizer of the fundraiser intends will receive the funds. E.g. "Yourself" if they intend to receive funds themselves, "Someone else" if they intend for another individual to receive the funds, or "Charity" if they're fundraising on behalf of charity. This value only represents an expectation at the time of creating or updating the fundraiser. It is not a source of truth for who is actually receiving the funds |
fitnessActivityTrackingSettings - FitnessActivityTrackingSettingsInput
|
Fitness activity tracking settings for this fundraiser |
goalAmount - Int
|
The fundraiser's goal amount. This amount is denominated in the currency provided in the "currency" input value. This is a deprecated field, userDefinedGoalAmount should be used instead |
isPrivate - Boolean
|
The fundraiser's privacy setting. This will control whether the fundraiser can appear on featured pages and collections. This setting is used, alongside other factors, in determining if the fundraiser should appear in search |
mediaUrl - Url
|
The URL of the main image or video that appears on the fundraiser's public page |
npoMarketingConsent - Boolean
|
Indicates whether the campaign organizer has consented to sharing their personal data with nonprofits when creating a fundraiser |
partnerAffiliation - PartnerAffiliation
|
Optional information necessary to associate this fundraiser to a partner, if the organizer came to us from a partner. Basic affiliation will be inferred automatically if a fundraiser is created using an API Key |
partnerExternalOrganizer - PartnerExternalOrganizerInput
|
Associates a partner-created fundraiser with an external user. If provided, the user will be sent an invitation to organize the fundraiser upon publish |
partnerFundraiserInput - PartnerFundraiserInput
|
Input data concerning the partner to be associated with the fundraiser |
peerToPeerFundraiserInput - PeerToPeerFundraiserInput
|
Input data for peer-to-peer campaign fundraisers |
postalCode - String
|
The zip/postal code of the fundraiser |
posterSharingEnabled - Boolean
|
A setting that controls whether or not Poster Sharing is enabled If enabled, the sharesheet will allow poster sharing for the user. If disabled, the sharesheet will not allow poster sharing for the user |
serviceDate - DateTime
|
Date that funds need to be raised by for a funeral or memorial service. This value should only be set for fundraisers that are for funerals or memorials |
slug - String
|
The unique slug that will be used to construct the URL to your fundraiser (gofundme.com/f/{slug}). If not provided, a slug will be inferred from your title. If a custom slug is provided, but it is already taken, an error will be thrown. Slug can be edited freely while in draft. After publish, only one additional update to slug is permitted |
smartGoalAmount - Int
|
Internal use only. An automatically determined starting goal amount that will be updated over time, if the organizer has opted into smart goals. This amount is denominated in the currency provided in the "currency" input value. Partners setting this value will result in an error |
smartGoalsEnabled - Boolean
|
A setting that controls whether or not the goal amount should be automatically adjusted over time. If enabled, the current smart goal amount (goalAmount) will be shown on the fundraiser page. If disabled, the userDefinedGoalAmount will always be shown |
title - String
|
The fundraiser's title. This will appear as the headline and show up in shared links and social media posts |
userDefinedGoalAmount - Int
|
The organizer's manually entered goal amount. This represents their final goal, but may not be what be what displays on the fundraiser page if the organizer has opted into smart goals. This amount is denominated in the currency provided in the "currency" input value |
videoSharingEnabled - Boolean
|
A setting that controls whether or not Video Sharing is enabled If enabled, an AI generated video will be created and shareable in the sharesheet. If disabled, no video will be generated |
Example
{
"acknowledgeContentWarnings": false,
"aiContentEnabled": true,
"aiShareTextEnabled": false,
"areCollectionsDisplayed": true,
"batchDonationEmailsEnabled": true,
"category": "ANIMALS",
"charity": CharitySelectInput,
"clientGeneratedDraftId": "abc123",
"collectionId": "4",
"commentsEnabled": false,
"country": "US",
"description": "abc123",
"donationsEnabled": true,
"encourageRecurringDonations": false,
"expectedBeneficiaryRelation": "CHARITY",
"fitnessActivityTrackingSettings": FitnessActivityTrackingSettingsInput,
"goalAmount": 987,
"isPrivate": false,
"mediaUrl": Url,
"npoMarketingConsent": false,
"partnerAffiliation": PartnerAffiliation,
"partnerExternalOrganizer": PartnerExternalOrganizerInput,
"partnerFundraiserInput": PartnerFundraiserInput,
"peerToPeerFundraiserInput": PeerToPeerFundraiserInput,
"postalCode": "abc123",
"posterSharingEnabled": false,
"serviceDate": "2007-12-03T10:15:30Z",
"slug": "abc123",
"smartGoalAmount": 123,
"smartGoalsEnabled": true,
"title": "abc123",
"userDefinedGoalAmount": 123,
"videoSharingEnabled": false
}
FundraiserOrder
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
Example
"AMOUNT"
FundraiserPhoto
Fields
| Field Name | Description |
|---|---|
scaled - FundraiserPhotoScaled
|
|
url - Url
|
Example
{
"scaled": FundraiserPhotoScaled,
"url": Url
}
FundraiserPhotoScaled
Example
{
"fourByThree1200": Url,
"oneByOne960": Url,
"sixteenByNine270": Url,
"sixteenByNine720": Url,
"threeByTwo1200": Url,
"threeByTwo640": Url,
"threeByTwo720": Url
}
FundraiserPublishInput
Description
Input for creating or updating a fundraiser
Fields
| Input Field | Description |
|---|---|
acknowledgeContentWarnings - Boolean
|
Publish the fundraiser regardless of whether or not the description is flagged as containing potential PII / crisis content |
Example
{"acknowledgeContentWarnings": true}
FundraiserResponse
Description
Response payload after creating or updating a fundraiser
Fields
| Field Name | Description |
|---|---|
fundraiser - Fundraiser
|
The newly-created fundraiser |
userErrors - [UserError!]!
|
Fixable validation errors. These are meant to display to the end-user |
Example
{
"fundraiser": Fundraiser,
"userErrors": [UserError]
}
FundraiserState
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"ACTIVE"
GalleryImagesConnection
Fields
| Field Name | Description |
|---|---|
edges - [GalleryImagesEdge]
|
|
pageInfo - PageInfo!
|
Example
{
"edges": [GalleryImagesEdge],
"pageInfo": PageInfo
}
GalleryImagesEdge
GalleryImagesOrder
Values
| Enum Value | Description |
|---|---|
|
|
Example
"CREATED_AT"
ID
Description
The ID scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as "4") or integer (such as 4) input value will be accepted as an ID
Example
"4"
Int
Description
The Int scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1
Example
123
Location
Fields
| Field Name | Description |
|---|---|
city - String
|
|
coordinates - Coordinates
|
|
countryCode - CountryCode
|
|
postalCode - String
|
|
statePrefix - String
|
Example
{
"city": "xyz789",
"coordinates": Coordinates,
"countryCode": "US",
"postalCode": "abc123",
"statePrefix": "xyz789"
}
LocationFilter
MediaType
Description
The type of media referenced by the mediaUrl field on a fundraiser
Values
| Enum Value | Description |
|---|---|
|
|
Facebook slideshow posted to the user's account, hosted on AWS |
|
|
Facebook video updates only uploaded to the user's Facebook account |
|
|
Facebook slideshow hosted on GoFundMe's Facebook page, utilizing AWS for hosting |
|
|
Facebook slideshow hosted on GoFundMe's Facebook page, indicating specialized storage or optimization |
|
|
Facebook slideshow posted to the user's account, indicating specialized storage or optimization |
|
|
The mediaUrl points to a Mux resource owned by GoFundMe, for video hosting or streaming |
|
|
The mediaUrl points to an AWS resource owned by GoFundMe |
|
|
The mediaUrl points to a photo hosted on GFM Pro's CDN |
|
|
The mediaUrl points to a photo stored on GoFundMe's hosting platform |
|
|
There is no data about the mediaUrl on the fundraiser |
|
|
The mediaUrl points to a Vimeo video |
|
|
The mediaUrl points to a YouTube video |
Example
"FACEBOOK_AWS"
Money
Description
A representation of a monetary amount. Amount is a decimal represented as a string with 0, 1, or 2 decimal places
Fields
| Field Name | Description |
|---|---|
amount - Decimal!
|
|
currencyCode - CurrencyCode!
|
Example
{"amount": Decimal, "currencyCode": "AUD"}
Node
OAuthApplication
Fields
| Field Name | Description |
|---|---|
approvedCallBackUrls - [String]
|
The set of FQDN's that will be permitted in the redirect_uri query parameter when initiating an /authorize request. Any redirect_uri provided that is not in this set will be rejected |
clientId - String
|
A OAuth2.0 standard clientId, which can be used to initiate an /authorize request |
clientSecret - String
|
A OAuth2.0 standard clientSecret, which can be used to exchange authorization codes for access_tokens |
id - ID
|
|
scopes - [OAuthScope]
|
The set of scopes that this application is permitted to request |
Example
{
"approvedCallBackUrls": ["xyz789"],
"clientId": "xyz789",
"clientSecret": "abc123",
"id": 4,
"scopes": [OAuthScope]
}
OAuthScope
Description
A distinct permission that authorizes a single type of operation
Fields
| Field Name | Description |
|---|---|
description - String
|
Textual description of the operation this scope authorizes e.g. Create a Fundraiser |
name - String
|
The name of the scope as it will appear on the access_token e.g. fundraiser:create |
optional - Boolean
|
Whether or not this scope is reject-able when navigating the consent flow |
Example
{
"description": "xyz789",
"name": "xyz789",
"optional": true
}
PageInfo
Partner
Fields
| Field Name | Description |
|---|---|
allowCobranding - Boolean!
|
Whether this partner wants attributed fundraisers to show co-branding |
code - String!
|
|
designatedRecipient - DesignatedRecipient
|
Entity that will receive the funds from the fundraiser created by a partner |
id - ID!
|
|
logoUrl - Url!
|
|
name - String!
|
|
apiKeys - [PartnerApiKey]
|
|
campaigns - [Campaign]
|
List of campaigns belonging to the partner |
contactEmail - String
|
|
defaultCobranding - Boolean!
|
Initial state of cobranding on new campaigns |
donations - DonationConnection
|
A flat list of donations belonging to all of a partner's affiliated fundraisers. This query is only available if authenticating via API Key |
Arguments |
|
fundraisers - FundraiserConnection
|
List of fundraisers attributed to the partner. This query is only available if authenticating via API Key |
Arguments |
|
isActive - Boolean
|
|
metrics - PartnerMetrics
|
|
oAuthApplication - OAuthApplication
|
A partner's registered OAuth Application. The OAuth Application contains the information necessary to exercise a standard OAuth2.0 Authorization Code flow. This query is only available to users with permission to view the Partner Dashboard |
regularLogoUrl - Url
|
|
reports - PartnerReport
|
|
revenueShare - Decimal
|
|
Example
{
"allowCobranding": true,
"code": "abc123",
"designatedRecipient": DesignatedRecipient,
"id": 4,
"logoUrl": Url,
"name": "xyz789",
"apiKeys": [PartnerApiKey],
"campaigns": [Campaign],
"contactEmail": "abc123",
"defaultCobranding": false,
"donations": DonationConnection,
"fundraisers": FundraiserConnection,
"isActive": true,
"metrics": PartnerMetrics,
"oAuthApplication": OAuthApplication,
"regularLogoUrl": Url,
"reports": PartnerReport,
"revenueShare": Decimal
}
PartnerAffiliation
Fields
| Input Field | Description |
|---|---|
code - String
|
A Partner's unique referral code |
isTestData - Boolean
|
Intended for external developers, and CI/CD pipelines. This flag will mark the fundraiser as test data. Fundraisers marked as test data will be deleted after two weeks |
sourceApplication - String
|
This information will be used in future communications with the user. Allows partners to optionally provide a sourceApplication for their created fundraiser. For example, "Thank you for joining us from {source}, click here to manage your fundraiser." |
thirdPartyId - String
|
An optional third-party ID a partner can associate to a referral |
thirdPartyUrl - String
|
An optional origin the partner can associate to their referral |
Example
{
"code": "abc123",
"isTestData": true,
"sourceApplication": "xyz789",
"thirdPartyId": "abc123",
"thirdPartyUrl": "xyz789"
}
PartnerApiKey
PartnerDonationsAttributionReport
Description
The attribution report for a partner's donations
Fields
| Field Name | Description |
|---|---|
status - PartnerDonationsAttributionReportStatus
|
The status of the report. Possible values: [PENDING|FINISHED|FAILED] |
url - String
|
The URL of the donations attribution report |
Example
{"status": "FAILED", "url": "abc123"}
PartnerDonationsAttributionReportStatus
Description
The status of the donations attribution report
Values
| Enum Value | Description |
|---|---|
|
|
An error occurred creating the report |
|
|
The report was successfully created |
|
|
The report is still being created |
Example
"FAILED"
PartnerDonationsAttributionsMetrics
Description
Donation metrics attributed to a partner over a time period
Fields
| Field Name | Description |
|---|---|
donationCount - Int
|
Number of attributed donations in the date range |
financialMetrics - [PartnerFinancialMetrics]
|
Aggregated donation volume in different currencies |
Example
{
"donationCount": 123,
"financialMetrics": [PartnerFinancialMetrics]
}
PartnerDonationsReport
Fields
| Field Name | Description |
|---|---|
status - PartnerDonationsReportStatus
|
|
url - String
|
Example
{"status": "FAILED", "url": "abc123"}
PartnerDonationsReportStatus
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
Example
"FAILED"
PartnerExternalOrganizer
Example
{
"email": "abc123",
"firstName": "xyz789",
"inviteAcceptedAt": "2007-12-03T10:15:30Z",
"lastName": "xyz789",
"organizerInviteUrl": Url
}
PartnerExternalOrganizerInput
Description
Input for partners to provide info about the user they are creating a fundraiser on behalf of
Example
{
"email": "xyz789",
"emailOptIn": true,
"firstName": "xyz789",
"lastName": "abc123",
"locale": "abc123"
}
PartnerFinancialMetrics
Example
{
"currencyCode": "abc123",
"grossDonationVolume": Decimal,
"grossDonationVolumeUsd": Decimal,
"netDonationVolume": Decimal,
"netDonationVolumeUsd": Decimal,
"refundAmount": Decimal,
"refundAmountUsd": Decimal
}
PartnerFundraiserInput
Description
All partner related data to be associated with the fundraiser
Fields
| Input Field | Description |
|---|---|
campaignRegistration - CampaignRegistrationInput
|
For Campaign Registration Form inputs |
designatedRecipient - DesignatedRecipientInput
|
Info to identify the designated recipient for the fundraiser |
Example
{
"campaignRegistration": CampaignRegistrationInput,
"designatedRecipient": DesignatedRecipientInput
}
PartnerFundraiserMetrics
Fields
| Field Name | Description |
|---|---|
donationCount - Int
|
|
financialMetrics - [PartnerFinancialMetrics]
|
|
fundraisersStarted - Int
|
Example
{
"donationCount": 987,
"financialMetrics": [PartnerFinancialMetrics],
"fundraisersStarted": 123
}
PartnerFundraisersReport
Description
The fundraisers report for a partner
Fields
| Field Name | Description |
|---|---|
status - PartnerFundraisersReportStatus
|
The status of the report. Possible values: [PENDING|FINISHED|FAILED] |
url - String
|
The URL of the fundraisers report |
Example
{"status": "FAILED", "url": "xyz789"}
PartnerFundraisersReportStatus
Description
The status of the fundraisers report
Values
| Enum Value | Description |
|---|---|
|
|
An error occurred creating the report |
|
|
The report was successfully created |
|
|
The report is still being created |
Example
"FAILED"
PartnerLifetimeMetrics
PartnerMetrics
Fields
| Field Name | Description |
|---|---|
donationsAttributionsMetrics - PartnerDonationsAttributionsMetrics
|
|
fundraiserLifetimeMetrics - PartnerLifetimeMetrics
|
|
fundraiserMetrics - PartnerFundraiserMetrics
|
|
Example
{
"donationsAttributionsMetrics": PartnerDonationsAttributionsMetrics,
"fundraiserLifetimeMetrics": PartnerLifetimeMetrics,
"fundraiserMetrics": PartnerFundraiserMetrics
}
PartnerReport
Fields
| Field Name | Description |
|---|---|
donationsAttributionReport - PartnerDonationsAttributionReport
|
Retrieve a donations attribution report |
ArgumentsexportId - String!
|
|
donationsReport - PartnerDonationsReport
|
|
ArgumentsexportId - String!
|
|
fundraisersReport - PartnerFundraisersReport
|
Retrieve a fundraisers report |
ArgumentsexportId - String!
|
|
Example
{
"donationsAttributionReport": PartnerDonationsAttributionReport,
"donationsReport": PartnerDonationsReport,
"fundraisersReport": PartnerFundraisersReport
}
PartnerUpload
PaypalGivingFundStatus
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"ACTIVE"
PeerToPeerFundraiserInput
Description
Input data for associating a fundraiser with a peer-to-peer campaign
Fields
| Input Field | Description |
|---|---|
campaignId - ID!
|
The ID of the peer-to-peer campaign this fundraiser is associated with |
Example
{"campaignId": "4"}
Photo
Fields
| Field Name | Description |
|---|---|
caption - String
|
Caption for the photo |
createdAt - DateTime!
|
The date and time when the photo was created |
filename - String!
|
Name of the file |
id - ID!
|
|
mediaId - String
|
The slug of the YouTube video. Only applicable if the photo is a thumbnail for a YouTube video |
mediaType - MediaType!
|
Type of media the photo represents |
url - Url!
|
URL where the photo is accessible |
Example
{
"caption": "abc123",
"createdAt": "2007-12-03T10:15:30Z",
"filename": "xyz789",
"id": 4,
"mediaId": "xyz789",
"mediaType": "FACEBOOK_AWS",
"url": Url
}
ProjectType
Description
Type of fundraiser
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"AON"
SmartGoalsOptInState
Description
The state of smart goals referenced by the smartGoalsOptIn field on a fundraiser
Values
| Enum Value | Description |
|---|---|
|
|
The fundraiser has smart goals available and the user has opted out |
|
|
The fundraiser has smart goals available and the user has opted in |
|
|
The fundraiser is not eligible for smart goals (user has not opted in or out), do not show smart goals at all |
Example
"DISABLED"
Sms
Fields
| Field Name | Description |
|---|---|
source - SmsSource
|
Example
{"source": "CHARITY"}
SmsInput
Fields
| Input Field | Description |
|---|---|
source - SmsSource
|
Example
{"source": "CHARITY"}
SmsSource
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"CHARITY"
String
Description
The String scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text
Example
"xyz789"
SuggestedGoalAmount
Description
Suggested goal amount for the create, fundraiser, and manage pages
Example
{
"goalAmount": Decimal,
"isSmartGoalsDefaultEnabled": true
}
TShirtSize
Description
Represents a standard T-shirt size
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"L"
Upload
Example
Upload
Url
Description
A Url scalar
Example
Url
User
Fields
| Field Name | Description |
|---|---|
firstName - String
|
The users first name |
id - ID!
|
The users's Person_id |
lastName - String
|
The users last name |
profileUrl - Url
|
|
userId - ID!
|
The users's user_id |
activityCommentsDisabled - Boolean
|
Whether activity comments are disabled for this user. When true, comments on activities owned by this user are disabled |
assignedCountryForPayments - CountryCode
|
The country in which the user is assigned to create fundraisers and receive payments. If a user has no fundraisers, then this value will be null, and they may create a fundraiser in any valid country. Once a user has published a fundraiser, this value is set and is not able to be changed. Publishing a fundraiser sets up payments for that country, and they are assigned to that country moving forward |
birthday - Date
|
Gets birthday for logged in user. The year is ignored and hardcoded to 3000 |
country - CountryCode
|
Country of the user |
createdAt - DateTime
|
Timestamp of when the viewer was created |
detectedLocation - Location
|
The Location detected for the user based on information in request headers |
donation - Donation
|
Donation made by the user |
ArgumentsencryptedDonationId - String
|
|
locale - String
|
The viewer's language (ex. en_US) |
manageDashboardViews - Int
|
The recorded number of times this user has viewed the "Manage Fundraiser Dashboard", which is the product surface for managing and updating a fundraiser. Note that this total is fundraiser specific |
ArgumentsfundraiserId - ID!
|
|
Example
{
"firstName": "abc123",
"id": 4,
"lastName": "xyz789",
"profileUrl": Url,
"userId": 4,
"activityCommentsDisabled": false,
"assignedCountryForPayments": "US",
"birthday": "2007-12-03",
"country": "US",
"createdAt": "2007-12-03T10:15:30Z",
"detectedLocation": Location,
"donation": Donation,
"locale": "xyz789",
"manageDashboardViews": 123
}
UserError
Description
Represents a fixable error that occurred during the execution of a mutation, such as failed validation. Each UserError provides context about the error, making it possible to identify which part of the user input caused the failure, and to display a meaningful message to the end-user
Fields
| Field Name | Description |
|---|---|
field - String
|
Specifies the input field associated with the error. This name corresponds to the field names as defined in the GraphQL input types. If the error is not specific to a single field but rather to the operation as a whole, this can be left empty |
message - String!
|
A human-readable explanation of the error. This message can be displayed directly to the end-users to inform them about what went wrong and potentially how to fix it |
Example
{
"field": "xyz789",
"message": "xyz789"
}