Classy Organizations API
Nonprofit organization records and their nested collections.
Nonprofit organization records and their nested collections.
openapi: 3.0.3
info:
title: Classy API (GoFundMe Pro) Authentication Organizations API
description: 'The Classy API is a resource-oriented REST API for the Classy online fundraising platform (rebranding to GoFundMe Pro). It exposes Organizations, Campaigns, Fundraising Pages, Fundraising Teams, Transactions, Recurring Donation Plans, Members, Supporters, and Designations, among other resources, under a versioned base path (https://api.classy.org/2.0). Authentication uses OAuth2 client credentials: POST client_id/client_secret/grant_type as a JSON body to /oauth2/auth to receive a Bearer access_token. List endpoints return a Laravel-style pagination envelope (current_page, data, per_page, total, next_page_url, etc.) and support a `with` query parameter to eager-load related sub-resources (for example ?with=items or ?with=source_tracking_codes). This document models the endpoints confirmed against the official classy-org/classy-node resource map and the official classy-org/postman-collections examples; the full resource surface is broader (52+ resource types) and is documented in full only behind Classy/GoFundMe Pro developer credentials. Endpoint coverage: endpointsConfirmed - a curated set of the most-used endpoints across Organizations, Campaigns, Fundraising Pages, Fundraising Teams, Transactions, Recurring Donation Plans, Members, Supporters, and Designations, grounded in classy-org/classy-node''s src/resources.json and classy-org/postman-collections examples. endpointsModeled - request/response shapes for those endpoints, inferred from the Postman collection example bodies (field names, types, and the pagination envelope) since Classy does not publish a machine-readable OpenAPI/Swagger document.'
version: '2.0'
contact:
name: Classy (GoFundMe Pro)
url: https://www.classy.org
servers:
- url: https://api.classy.org/2.0
description: Classy / GoFundMe Pro production API
security:
- bearerAuth: []
tags:
- name: Organizations
description: Nonprofit organization records and their nested collections.
paths:
/organizations/{id}:
parameters:
- $ref: '#/components/parameters/Id'
get:
operationId: getOrganization
tags:
- Organizations
summary: Retrieve an organization
responses:
'200':
description: The requested organization.
content:
application/json:
schema:
$ref: '#/components/schemas/Organization'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/organizations/{id}/campaigns:
parameters:
- $ref: '#/components/parameters/Id'
- $ref: '#/components/parameters/With'
get:
operationId: listOrganizationCampaigns
tags:
- Organizations
summary: List an organization's campaigns
responses:
'200':
description: A paginated list of campaigns.
content:
application/json:
schema:
$ref: '#/components/schemas/CampaignPage'
'401':
$ref: '#/components/responses/Unauthorized'
post:
operationId: createOrganizationCampaign
tags:
- Organizations
summary: Create a campaign for an organization
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CampaignInput'
responses:
'200':
description: The created campaign.
content:
application/json:
schema:
$ref: '#/components/schemas/Campaign'
'401':
$ref: '#/components/responses/Unauthorized'
'422':
$ref: '#/components/responses/ValidationError'
/organizations/{id}/designations:
parameters:
- $ref: '#/components/parameters/Id'
get:
operationId: listOrganizationDesignations
tags:
- Organizations
summary: List an organization's designations
responses:
'200':
description: A paginated list of designations.
content:
application/json:
schema:
$ref: '#/components/schemas/DesignationPage'
'401':
$ref: '#/components/responses/Unauthorized'
post:
operationId: createOrganizationDesignation
tags:
- Organizations
summary: Create a designation for an organization
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/DesignationInput'
responses:
'200':
description: The created designation.
content:
application/json:
schema:
$ref: '#/components/schemas/Designation'
'401':
$ref: '#/components/responses/Unauthorized'
'422':
$ref: '#/components/responses/ValidationError'
/organizations/{id}/fundraising-pages:
parameters:
- $ref: '#/components/parameters/Id'
- $ref: '#/components/parameters/With'
get:
operationId: listOrganizationFundraisingPages
tags:
- Organizations
summary: List an organization's fundraising pages
responses:
'200':
description: A paginated list of fundraising pages.
content:
application/json:
schema:
$ref: '#/components/schemas/FundraisingPagePage'
'401':
$ref: '#/components/responses/Unauthorized'
/organizations/{id}/supporters:
parameters:
- $ref: '#/components/parameters/Id'
get:
operationId: listOrganizationSupporters
tags:
- Organizations
summary: List an organization's supporters
responses:
'200':
description: A paginated list of supporters.
content:
application/json:
schema:
$ref: '#/components/schemas/SupporterPage'
'401':
$ref: '#/components/responses/Unauthorized'
post:
operationId: createOrganizationSupporter
tags:
- Organizations
summary: Create a supporter for an organization
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/SupporterInput'
responses:
'200':
description: The created supporter.
content:
application/json:
schema:
$ref: '#/components/schemas/Supporter'
'401':
$ref: '#/components/responses/Unauthorized'
'422':
$ref: '#/components/responses/ValidationError'
/organizations/{id}/transactions:
parameters:
- $ref: '#/components/parameters/Id'
- $ref: '#/components/parameters/With'
get:
operationId: listOrganizationTransactions
tags:
- Organizations
summary: List an organization's transactions
description: Supports ?with=items to eager-load transaction line items, matching the official "Fetch Multi-Item Order" Postman collection example.
responses:
'200':
description: A paginated list of transactions.
content:
application/json:
schema:
$ref: '#/components/schemas/TransactionPage'
'401':
$ref: '#/components/responses/Unauthorized'
/organizations/{id}/recurring-donation-plans:
parameters:
- $ref: '#/components/parameters/Id'
get:
operationId: listOrganizationRecurringDonationPlans
tags:
- Organizations
summary: List an organization's recurring donation plans
responses:
'200':
description: A paginated list of recurring donation plans.
content:
application/json:
schema:
$ref: '#/components/schemas/RecurringDonationPlanPage'
'401':
$ref: '#/components/responses/Unauthorized'
/organizations/{id}/source-tracking-codes:
parameters:
- $ref: '#/components/parameters/Id'
- name: fundraisingTeams
in: query
schema:
type: boolean
- name: fundraisingPages
in: query
schema:
type: boolean
- name: transactions
in: query
schema:
type: boolean
get:
operationId: listOrganizationSourceTrackingCodes
tags:
- Organizations
summary: List an organization's source tracking codes
description: Confirmed against the official classy-org/postman-collections "Fetch Source Codes" example. Optional flags control whether fundraising teams, fundraising pages, and transactions attributed to each code are included.
responses:
'200':
description: A list of source tracking codes.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/SourceTrackingCode'
'401':
$ref: '#/components/responses/Unauthorized'
components:
schemas:
SupporterInput:
type: object
properties:
first_name:
type: string
last_name:
type: string
email_address:
type: string
format: email
phone:
type: string
additionalProperties: true
TransactionItem:
type: object
properties:
id:
type: integer
transaction_id:
type: integer
type:
type: string
description: e.g. donation, ticket, merchandise, fee.
donation_gross_amount:
type: number
donation_net_amount:
type: number
campaign_id:
type: integer
fundraising_page_id:
type: integer
nullable: true
organization_id:
type: integer
raw_final_price:
type: number
currency_code:
type: string
promo_code_id:
type: integer
nullable: true
additionalProperties: true
DesignationInput:
type: object
required:
- name
properties:
name:
type: string
description:
type: string
active:
type: boolean
additionalProperties: true
RecurringDonationPlan:
type: object
properties:
id:
type: integer
campaign_id:
type: integer
member_id:
type: integer
status:
type: string
enum:
- active
- paused
- cancelled
frequency:
type: string
description: e.g. monthly, weekly, annually.
raw_amount:
type: number
currency_code:
type: string
next_charge_date:
type: string
format: date
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
additionalProperties: true
Supporter:
allOf:
- $ref: '#/components/schemas/SupporterInput'
- type: object
properties:
id:
type: integer
organization_id:
type: integer
member_id:
type: integer
nullable: true
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
CampaignPage:
allOf:
- $ref: '#/components/schemas/PaginationEnvelope'
- type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Campaign'
SourceTrackingCode:
type: object
description: Confirmed against the official "Fetch Source Codes" Postman collection example.
properties:
id:
type: integer
campaign_id:
type: integer
code:
type: string
source:
type: string
medium:
type: string
fundraising_teams:
type: array
items:
type: object
additionalProperties: true
fundraising_pages:
type: array
items:
type: object
additionalProperties: true
transactions:
type: array
items:
type: object
additionalProperties: true
additionalProperties: true
DesignationPage:
allOf:
- $ref: '#/components/schemas/PaginationEnvelope'
- type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Designation'
FundraisingPagePage:
allOf:
- $ref: '#/components/schemas/PaginationEnvelope'
- type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/FundraisingPage'
Designation:
allOf:
- $ref: '#/components/schemas/DesignationInput'
- type: object
properties:
id:
type: integer
organization_id:
type: integer
campaign_id:
type: integer
nullable: true
raw_current_amount:
type: number
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
Error:
type: object
properties:
error:
type: string
error_description:
type: string
permissions:
type: array
items:
type: object
properties:
action:
type: string
entity:
type: string
RecurringDonationPlanPage:
allOf:
- $ref: '#/components/schemas/PaginationEnvelope'
- type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/RecurringDonationPlan'
CampaignInput:
type: object
required:
- name
- type
properties:
name:
type: string
type:
type: string
description: Campaign type, e.g. donation, peer_to_peer, crowdfunding, event, ticketed_event.
goal:
type: number
currency_code:
type: string
started_at:
type: string
format: date-time
ended_at:
type: string
format: date-time
additionalProperties: true
Transaction:
type: object
description: Field names confirmed against the official "Fetch Multi-Item Order" Postman collection example response.
properties:
id:
type: integer
campaign_id:
type: integer
organization_id:
type: integer
fundraising_page_id:
type: integer
nullable: true
fundraising_team_id:
type: integer
nullable: true
supporter_id:
type: integer
status:
type: string
enum:
- success
- pending
- failed
- refunded
billing_first_name:
type: string
billing_last_name:
type: string
billing_address1:
type: string
billing_city:
type: string
billing_state:
type: string
billing_postal_code:
type: string
billing_country:
type: string
card_type:
type: string
card_last_four:
type: integer
charged_at:
type: string
format: date-time
charged_currency_code:
type: string
charged_total_gross_amount:
type: number
classy_fees_amount:
type: number
total_gross_amount:
type: number
comment:
type: string
acknowledgements_count:
type: integer
items:
type: array
items:
$ref: '#/components/schemas/TransactionItem'
updated_at:
type: string
format: date-time
additionalProperties: true
FundraisingPage:
allOf:
- $ref: '#/components/schemas/FundraisingPageInput'
- type: object
properties:
id:
type: integer
campaign_id:
type: integer
fundraising_team_id:
type: integer
nullable: true
status:
type: string
url:
type: string
raw_current_amount:
type: number
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
Campaign:
allOf:
- $ref: '#/components/schemas/CampaignInput'
- type: object
properties:
id:
type: integer
organization_id:
type: integer
status:
type: string
raw_current_raised_amount:
type: number
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
Organization:
type: object
properties:
id:
type: integer
name:
type: string
currency_code:
type: string
status:
type: string
website_url:
type: string
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
additionalProperties: true
FundraisingPageInput:
type: object
required:
- title
properties:
title:
type: string
goal:
type: number
story:
type: string
member_id:
type: integer
additionalProperties: true
SupporterPage:
allOf:
- $ref: '#/components/schemas/PaginationEnvelope'
- type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Supporter'
PaginationEnvelope:
type: object
properties:
current_page:
type: integer
first_page_url:
type: string
from:
type: integer
last_page:
type: integer
last_page_url:
type: string
next_page_url:
type: string
nullable: true
path:
type: string
per_page:
type: integer
prev_page_url:
type: string
nullable: true
to:
type: integer
total:
type: integer
TransactionPage:
allOf:
- $ref: '#/components/schemas/PaginationEnvelope'
- type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Transaction'
responses:
NotFound:
description: The requested resource was not found.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
Unauthorized:
description: Missing, invalid, or expired Bearer token.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
ValidationError:
description: The request payload failed validation.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
parameters:
With:
name: with
in: query
required: false
description: Comma-separated list of related sub-resources to eager-load, e.g. items, source_tracking_codes, organization, member.
schema:
type: string
Id:
name: id
in: path
required: true
description: The numeric ID of the resource.
schema:
type: integer
securitySchemes:
bearerAuth:
type: http
scheme: bearer
description: 'OAuth2 client_credentials access token obtained from POST /oauth2/auth. Passed as `Authorization: Bearer {access_token}`.'
This is an independent, third-party profile of Classy Organizations API, published by API Evangelist. We do not operate, host, resell, or support these APIs, and we are not affiliated with or endorsed by the company unless stated above. Everything here is built from publicly available information — the company's own site, developer portal, documentation, public repositories, and the specifications it publishes for public use. Nothing is obtained by breaching a system, defeating an access control, or using credentials.
The Kin Score and Agent Readiness rating are independently calculated assessments of a company's public API artifacts, scored against a published rubric. They are not certifications, endorsements, security assessments, or audits.
Corrections, re-scores, and removal are free — no partnership or purchase required, and you do not need to justify the request. A removed company is recorded as unrated, never scored zero for having asked. Acknowledgement within one business day; removal within two.
info@apievangelist.com
·
Read the full data-sourcing policy →
On a security or compliance team? Put security in the subject line and
you will get a person, not a form — we will tell you exactly which public URLs this profile was built from.