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

  1. Go to the Partner page.
  2. Log in with your credentials.
  3. If you can't log in or can't find your company, contact GoFundMe support for assistance.

Step 2: Get your Partner code

  1. 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}
  2. The last segment of that link is your partnership's unique referral code

Step 3: Create an API key

  1. Click on your company button in the top right corner.
  2. Select "Account".
  3. At the bottom, you have the option to create an API key.
  4. 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

  1. Open Postman (or your preferred tool for sending POST requests).
  2. Set the request type to POST.
  3. Use the URL https://graphql.gofundme.com/graphql.
  4. Add headers:
    • x-partner-code: Your partner code
    • x-api-key: Your API key
  5. Add your GraphQL query as the POST body (see example query below)
  6. 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:

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.

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 page
  • redirect_uri: This is where the user will be automatically redirected upon completing the consent flow
  • scope: These are the specific permissions that you are requesting to perform on behalf of a user. For instance, the scope fundraiser:create will let you create a fundraiser directly on behalf of a user
    • openid: includes the OIDC id_token in the token response
    • fundraiser:create: needed for fundraiserCreateDraft
    • fundraiser:edit: needed for fundraiserPublish
    • fundraiser:view: needed for viewer.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.

  • country
  • category
  • expectedBeneficiaryRelation
  • charity (if expectedBeneficiaryRelation=CHARITY)
  • postalCode
  • goalAmount
  • title
  • description (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").

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.

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 YOURSELF

Options:
- 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

Response

Returns a Campaign

Arguments

Name Description
id - ID!

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

Response

Returns a Charity

Arguments

Name Description
paypalNonprofitId - ID! 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

Response

Returns a Partner

Arguments

Name Description
id - ID

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

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

DEFAULT

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

BAG

BEANIE

DOG_BANDANA

HAT

MEDAL

T_SHIRT

WATER_BOTTLE

Example

"BAG"

CampaignMetrics

Fields

Field Name Description
totalDonors - Int
totalFundraisers - Int
totalRaised - Float

Example

{"totalDonors": 987, "totalFundraisers": 123, "totalRaised": 987.65}

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
after - String
before - String
first - Int
last - Int
order - DonationOrder
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
Arguments
after - String
before - String
charityOrganized - Boolean
first - Int
last - Int
order - FundraiserOrder
recentDonations - DonationConnection List of donations by charity's top 10 funds by last donation date
Arguments
after - String
before - String
first - Int
last - Int
order - DonationOrder
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

Fields

Field Name Description
ein - String
mission - String
nteeCode - String
nteeDescription - String
pcsPopulation - [String]
pcsSubjectTran - [String]
rulingYr - Float

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

Birthday charity fundraiser

CLASSIC

Standard charity fundraiser with no specific moment type

GRADUATION

Graduation charity fundraiser

MEMORIAL

Memorial charity fundraiser

WEDDING

Wedding charity fundraiser

Example

"BIRTHDAY"

CharityPhoto

Fields

Field Name Description
scaled - CharityPhotoScaled
url - Url

Example

{
  "scaled": CharityPhotoScaled,
  "url": Url
}

CharityPhotoScaled

Fields

Field Name Description
oneByOne120 - Url 3x2-120
sixteenByNine720 - Url 1x1-120
threeByTwo120 - Url

Example

{
  "oneByOne120": Url,
  "sixteenByNine720": Url,
  "threeByTwo120": Url
}

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

ACTIVE

BANNED

HIDDEN

INACTIVE

UNKNOWN

Example

"ACTIVE"

CharityTaxonomyCategory

Description

Charity categories by taxonomy used in search filters

Values

Enum Value Description

ANIMALS

BUSINESS

COMMUNITY

CREATIVE

DISASTER_AND_CRISIS_RELIEF

EDUCATION

ENVIRONMENT

ESSENTIAL_NEEDS

EVENTS

FAITH

FAMILY_SUPPORT

INFRASTRUCTURE

MEDICAL

MEMORIALS

SOCIAL_ADVOCACY

SPORTS

TRAVEL

WISHES_AND_GIFTS

Example

"ANIMALS"

Coordinates

Fields

Field Name Description
latitude - Decimal
longitude - Decimal

Example

{
  "latitude": Decimal,
  "longitude": Decimal
}

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

AUD

CAD

CHF

DKK

EUR

GBP

MXN

NOK

SEK

USD

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

Fields

Field Name Description
displayBeneficiaryName - Boolean Flag that indicates if this recipient's name should be displayed as beneficiary in the fundraiser page
id - ID Recipient identifier
logoURL - Url Public url to the recipient's logo image
name - String Recipient name

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

Fields

Field Name Description
cursor - String
node - Donation

Example

{
  "cursor": "abc123",
  "node": Donation
}

DonationOrder

Values

Enum Value Description

AMOUNT

CREATED_AT

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

CHARITY

The person who created the fundraiser intends to fundraiser for charity. I.e. the charity will be directly receiving the funds

SOMEONE_ELSE

The person who created the fundraiser intends for someone else to receive the funds

YOURSELF

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.

  • For distance-based units: total distance in the user's chosen unit
  • For duration-based units: total duration in seconds
  • For count-based units: total number of activities
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

MANUAL

STRAVA

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:

  • Distance units (miles, kilometers, steps): progress is distance
  • Duration units (minutes, hours, days): progress is time
  • Count units (times, reps, laps, floors): progress is activity count

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:

  • Distance units (miles, kilometers, steps): progress is distance
  • Duration units (minutes, hours, days): progress is time
  • Count units (times, reps, laps, floors): progress is activity count Required before fundraiser publish

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

days

floors

hours

kilometers

laps

miles

minutes

reps

steps

times

Example

"days"

FitnessActivityType

Values

Enum Value Description

AlpineSki

BackcountrySki

Badminton

Canoeing

Crossfit

EBikeRide

EMountainBikeRide

Elliptical

Golf

GravelRide

Handcycle

HighIntensityIntervalTraining

Hike

IceSkate

InlineSkate

Kayaking

Kitesurf

MountainBikeRide

NordicSki

Pickleball

Pilates

Racquetball

Ride

RockClimbing

RollerSki

Rowing

Run

Sail

Skateboard

Snowboard

Snowshoe

Soccer

Squash

StairStepper

StandUpPaddling

Surfing

Swim

TableTennis

Tennis

TrailRun

Velomobile

VirtualRide

VirtualRow

VirtualRun

Walk

WeightTraining

Wheelchair

Windsurf

Workout

Yoga

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
Arguments
excerpt - 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
after - String
before - String
first - Int
last - Int
order - DonationOrder
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.
Arguments
excerpt - 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
after - String
before - String
first - Int
last - Int
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
Arguments
organizerDefinedGoalAmount - Int
organizerDistinctId - ID
organizerReferrer - String
organizerScreenHeight - Int
organizerScreenWidth - Int
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

ANIMALS

BUSINESS

CHARITY

COMMUNITY

COMPETITIONS

CREATIVE

EDUCATION

EMERGENCIES

ENVIRONMENT

EVENTS

FAITH

FAMILY

MEDICAL

MEMORIALS

MONTHLY_BILLS

NEWLYWEDS

OTHER

SPORTS

TRAVEL

VOLUNTEER

WISHES

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:

  1. The fundraiser is not published, OR
  2. The input does not trigger any content warnings.

If the input does trigger content warnings AND the fundraiser is published, this value must be true or the request will be rejected.

To check for warnings before submitting input, use the contentWarnings Query

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 Viewer.assignedCountryForPayments field. If that value is set, the FundraiserInput.country field must match, or the mutation will be rejected

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

AMOUNT

CREATED_AT

LAST_DONATION_AT

Example

"AMOUNT"

FundraiserPhoto

Fields

Field Name Description
scaled - FundraiserPhotoScaled
url - Url

Example

{
  "scaled": FundraiserPhotoScaled,
  "url": Url
}

FundraiserPhotoScaled

Fields

Field Name Description
fourByThree1200 - Url
oneByOne960 - Url 3x2-640
sixteenByNine270 - Url 3x2-1200 Mistyped. Use 'sixteenByNine720' instead.
sixteenByNine720 - Url
threeByTwo1200 - Url 4x3-1200
threeByTwo640 - Url 3x2-720
threeByTwo720 - Url 16x9-720

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

ACTIVE

CAMPAIGNLITE

DELETED

HIDDEN

UNKNOWN

Example

"ACTIVE"

GalleryImagesConnection

Fields

Field Name Description
edges - [GalleryImagesEdge]
pageInfo - PageInfo!

Example

{
  "edges": [GalleryImagesEdge],
  "pageInfo": PageInfo
}

GalleryImagesEdge

Fields

Field Name Description
cursor - String
node - Photo

Example

{
  "cursor": "xyz789",
  "node": Photo
}

GalleryImagesOrder

Values

Enum Value Description

CREATED_AT

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

Description

Location filter for charities

Fields

Input Field Description
latitude - Float! Latitude coordinate
longitude - Float! Longitude coordinate
radius - Int Radius in meters to search within (optional)

Example

{"latitude": 123.45, "longitude": 987.65, "radius": 123}

MediaType

Description

The type of media referenced by the mediaUrl field on a fundraiser

Values

Enum Value Description

FACEBOOK_AWS

Facebook slideshow posted to the user's account, hosted on AWS

FACEBOOK_ONLY

Facebook video updates only uploaded to the user's Facebook account

FACEBOOK_PAGE_AWS

Facebook slideshow hosted on GoFundMe's Facebook page, utilizing AWS for hosting

FACEBOOK_PAGE_RACK

Facebook slideshow hosted on GoFundMe's Facebook page, indicating specialized storage or optimization

FACEBOOK_RACK

Facebook slideshow posted to the user's account, indicating specialized storage or optimization

GFM_MUX_CLIPS

The mediaUrl points to a Mux resource owned by GoFundMe, for video hosting or streaming

PHOTO_AWS

The mediaUrl points to an AWS resource owned by GoFundMe

PHOTO_GFMPRO

The mediaUrl points to a photo hosted on GFM Pro's CDN

PHOTO_RACK

The mediaUrl points to a photo stored on GoFundMe's hosting platform

UNKNOWN

There is no data about the mediaUrl on the fundraiser

VIMEO

The mediaUrl points to a Vimeo video

YOUTUBE

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

Description

----- Shared utility classes -----

Fields

Field Name Description
id - ID!

Possible Types

Node Types

Fundraiser

Partner

User

Donation

Photo

Example

{"id": "4"}

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

Fields

Field Name Description
endCursor - String
hasNextPage - Boolean!
hasPreviousPage - Boolean!
startCursor - String

Example

{
  "endCursor": "xyz789",
  "hasNextPage": false,
  "hasPreviousPage": true,
  "startCursor": "xyz789"
}

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
after - String
before - String
first - Int
last - Int
order - DonationOrder
fundraisers - FundraiserConnection List of fundraisers attributed to the partner. This query is only available if authenticating via API Key
Arguments
after - String
before - String
first - Int
last - Int
order - FundraiserOrder
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

Fields

Field Name Description
createdAt - DateTime
display - String
id - ID!
lastUsedAt - DateTime
name - String
status - Boolean

Example

{
  "createdAt": "2007-12-03T10:15:30Z",
  "display": "abc123",
  "id": 4,
  "lastUsedAt": "2007-12-03T10:15:30Z",
  "name": "abc123",
  "status": false
}

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

FAILED

An error occurred creating the report

FINISHED

The report was successfully created

PENDING

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

FAILED

FINISHED

PENDING

Example

"FAILED"

PartnerExternalOrganizer

Fields

Field Name Description
email - String
firstName - String
inviteAcceptedAt - DateTime
lastName - String
organizerInviteUrl - Url The invitation link for the user to organize the fundraiser that was created for them. This is only queryable within the publish mutation response

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

Fields

Input Field Description
email - String!
emailOptIn - Boolean!
firstName - String!
lastName - String!
locale - String The locale in IETF's BCP 47 standard (e.g. en-US)

Example

{
  "email": "xyz789",
  "emailOptIn": true,
  "firstName": "xyz789",
  "lastName": "abc123",
  "locale": "abc123"
}

PartnerFinancialMetrics

Fields

Field Name Description
currencyCode - String
grossDonationVolume - Decimal
grossDonationVolumeUsd - Decimal
netDonationVolume - Decimal
netDonationVolumeUsd - Decimal
refundAmount - Decimal
refundAmountUsd - Decimal

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

FAILED

An error occurred creating the report

FINISHED

The report was successfully created

PENDING

The report is still being created

Example

"FAILED"

PartnerLifetimeMetrics

Fields

Field Name Description
totalAmountRaisedByCurrency - [Money]
totalAmountRaisedUSD - Decimal
totalDonationCount - Int
totalFundraisersStarted - Int

Example

{
  "totalAmountRaisedByCurrency": [Money],
  "totalAmountRaisedUSD": Decimal,
  "totalDonationCount": 123,
  "totalFundraisersStarted": 123
}

PartnerMetrics

Fields

Field Name Description
donationsAttributionsMetrics - PartnerDonationsAttributionsMetrics
Arguments
from - DateTime!
to - DateTime!
fundraiserLifetimeMetrics - PartnerLifetimeMetrics
fundraiserMetrics - PartnerFundraiserMetrics
Arguments
from - DateTime!
to - DateTime!

Example

{
  "donationsAttributionsMetrics": PartnerDonationsAttributionsMetrics,
  "fundraiserLifetimeMetrics": PartnerLifetimeMetrics,
  "fundraiserMetrics": PartnerFundraiserMetrics
}

PartnerReport

Fields

Field Name Description
donationsAttributionReport - PartnerDonationsAttributionReport Retrieve a donations attribution report
Arguments
exportId - String!
donationsReport - PartnerDonationsReport
Arguments
exportId - String!
fundraisersReport - PartnerFundraisersReport Retrieve a fundraisers report
Arguments
exportId - String!

Example

{
  "donationsAttributionReport": PartnerDonationsAttributionReport,
  "donationsReport": PartnerDonationsReport,
  "fundraisersReport": PartnerFundraisersReport
}

PartnerUpload

Fields

Field Name Description
createdAt - DateTime!
fileName - String!
fileSize - Int!
fileType - String!
id - ID!
url - String!

Example

{
  "createdAt": "2007-12-03T10:15:30Z",
  "fileName": "xyz789",
  "fileSize": 123,
  "fileType": "xyz789",
  "id": "4",
  "url": "abc123"
}

PaypalGivingFundStatus

Values

Enum Value Description

ACTIVE

INACTIVE

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

AON

CHARITY

DIRECT_TO_CHARITY

GIVING_FUND

HANDLE

PERSONAL

UNKNOWN

Example

"AON"

SmartGoalsOptInState

Description

The state of smart goals referenced by the smartGoalsOptIn field on a fundraiser

Values

Enum Value Description

DISABLED

The fundraiser has smart goals available and the user has opted out

ENABLED

The fundraiser has smart goals available and the user has opted in

NOT_ELIGIBLE

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

CHARITY

GFM

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

Fields

Field Name Description
goalAmount - Decimal The next smart goal amount for the fundraiser
isSmartGoalsDefaultEnabled - Boolean Determines if the smart goals toggle should be enabled by default

Example

{
  "goalAmount": Decimal,
  "isSmartGoalsDefaultEnabled": true
}

TShirtSize

Description

Represents a standard T-shirt size

Values

Enum Value Description

L

M

S

XL

XS

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
Arguments
encryptedDonationId - 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

Arguments
fundraiserId - 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"
}