GoFundMe · Authentication Profile

Gofundme Authentication

Authentication

GoFundMe secures its APIs with oauth2 across 2 declared security schemes, as derived from its OpenAPI definitions. OAuth 2.0 is offered via the clientCredentials, password, and authorizationCode flow(s).

FundraisingNonprofitCrowdfundingDonationsPaymentsPeer-to-Peer FundraisingRecurring GivingEventsPhilanthropySocial ImpactCRMWebhooks
Methods: oauth2 Schemes: 2 OAuth flows: clientCredentials, password, authorizationCode API key in:

Security Schemes

OAuth2Application oauth2
· flows: clientCredentials
OAuth2Member oauth2
· flows: password, authorizationCode

Source

Authentication Profile

Raw ↑
generated: '2026-08-04'
method: searched
source: openapi/gofundme-pro-api-openapi.json
docs: https://developers.gofundme.com/pro/overview/authentication
summary:
  types:
  - oauth2
  oauth2_flows:
  - clientCredentials
  - password
  - authorizationCode
  api_key_in: []
  bearer: true
schemes:
- name: OAuth2Application
  type: oauth2
  flows:
  - flow: clientCredentials
    tokenUrl: /oauth2/auth
    absolute_token_url: https://api.classy.org/oauth2/auth
    refreshUrl: /oauth2/auth
    scopes: 2
  description: OAuth bearer token for a client application (organization-wide read + write).
  sources:
  - openapi/gofundme-pro-api-openapi.json
- name: OAuth2Member
  type: oauth2
  flows:
  - flow: password
    tokenUrl: /oauth2/auth
    absolute_token_url: https://api.classy.org/oauth2/auth
    refreshUrl: /oauth2/auth
    scopes: 2
  - flow: authorizationCode
    tokenUrl: https://api.classy.org/oauth2/auth
    authorizationUrl: https://login.classy.org/authorize
    documented_only: true
    note: >-
      Documented on the authentication and Classy Login pages but NOT declared in the OpenAPI, which
      models this scheme as `password` only.
  description: OAuth bearer token carrying additional member context (acts on behalf of a member).
  sources:
  - openapi/gofundme-pro-api-openapi.json
  - https://developers.gofundme.com/pro/overview/authentication
  - https://developers.gofundme.com/pro/api-docs/login

credentials:
  fields:
  - {name: client_id, description: 'Unique string identifying the application, e.g. "75651c06c1056579497b957715144ea0".'}
  - {name: client_secret, description: Paired secret; must never be shared, hard-coded, committed or sent as a query-string parameter.}
  - {name: secret_key, description: Legacy alias for client_secret accepted by the token endpoint (observed in the endpoint's own validation error).}
  issuance: >-
    Pro and Enterprise customers self-serve credentials from GoFundMe Pro > Apps & Integrations >
    API — name the app, supply an OAuth2 redirect URI, accept the terms, create. Third-party
    developers, free-plan users and consultants must request access through the partner team form.
  request_access: https://developers.gofundme.com/pro/overview/request-access
  editable: Application name and redirect URI can be edited later under My Settings > GoFundMe Pro API.

token:
  endpoint: https://api.classy.org/oauth2/auth
  methods: [POST]
  content_types: [application/x-www-form-urlencoded, application/json]
  parameter_location: request body (never the query string)
  response:
    access_token: string
    expires_in: 3600
    token_type: bearer
  presentation: Authorization request header
  expiry_behaviour: >-
    Re-request a token when expires_in elapses; no refresh token is documented for the
    client_credentials grant.

grants:
- grant_type: client_credentials
  produces: app access token
  scope: read + write on resources belonging to the app's organization
- grant_type: authorization_code
  produces: member access token
  prerequisite: member consent obtained through the Classy Login flow
  exchange_params: [grant_type, client_id, client_secret, code]
- grant_type: password
  produces: member access token
  note: Declared in the OpenAPI and referenced in the v2 migration guide.

sso:
  name: Classy Login
  status: pre-release
  protocol: OpenID Connect
  authorization_endpoint: https://login.classy.org/authorize
  token_endpoint: https://api.classy.org/oauth2/auth
  userinfo_endpoint: https://api.classy.org/2.0/me
  response_types: [code]
  flows: [redirect, popup, iframe]
  discovery_document: null
  discovery_note: >-
    No /.well-known/openid-configuration is published on login.classy.org (probed 2026-08-04, 404),
    so a conformant OIDC client cannot discover these endpoints and must hard-code them.

evidence:
- fetched: '2026-08-04'
  url: https://api.classy.org/oauth2/auth
  method: POST
  http_status: 400
  body_excerpt: >-
    {"error":{"client_id":["The client id field is required."],"secret_key":["The secret key field
    is required when client secret is not present."], ...}}
  conclusion: >-
    Confirms api.classy.org/oauth2/auth is the live token endpoint. The same POST against
    https://pro.gofundme.com/oauth2/auth returns a 403 CSRF page, and against
    https://pro.gofundme.com/api/2.0/oauth2/auth returns 401 invalid_request — so the relative
    tokenUrl declared in the spec does not resolve to a working endpoint under the declared server.

gaps:
- >-
  The spec's `tokenUrl` is the relative "/oauth2/auth"; resolved against the declared server it
  points at a host that does not serve the token endpoint. Generated clients will fail until the
  URL is overridden.
- The authorization_code grant is documented but not declared in the OpenAPI.
- >-
  Only two coarse scopes exist (read, write). There is no per-resource scope vocabulary, so an
  integration cannot be granted least privilege at the API layer — role/scope granularity exists
  only inside the product (CerberusRole/CerberusScope).
- No OIDC discovery document for Classy Login.
- No mutual TLS, no API-key alternative, no signed-request option.