Skip to content

Non-profits · Team settings​

A non-profit's own team, under /org-admin/{slug}: the page, links, programs, the team, verification.


Needs your attention​

GET
/org-admin/{slug}/nonprofit/attention

org.read, built for the caller. Counts from the same reads as the surfaces they point at (0 included): join_requests and invites_waiting (the team view's lists; an expired invite waits to be resent), stripe_requirements, registry_renewal (within 30 days, with due), check_failed (the verification view's latest checks), authority_pending. fundly_approvals joins in phase 2. Plus the month-so-far card over the org's own Fundlies' counted gifts (label is the ISO month, e.g. 2026-10).

Authorizations​

BearerAuth

In the browser, authentication rides on the httpOnly session cookies set by /cognito/signin or the Google / Apple sign-in at /cognito/oauth/{provider}. For scripts and for Swagger UI testing, paste an API key (fh_live_…, created with POST /api-keys); a Cognito JWT is accepted too. Sign-in does not return a token in its body.

Type
HTTP (bearer)

Parameters​

Path Parameters

slug*

The organization's slug (requireOrgPermission resolves it).

Type
string
Required

Responses​

OK

application/json
JSON
{
"items": [
{
"kind": "string",
"count": 0,
"href": "string",
"due": "string",
"sent_at": "string",
"emails": [
"string"
]
}
],
"month": {
"label": "string",
"raised_cents": 0,
"gifts": 0,
"donors": 0,
"payouts_href": "string",
"donations_href": "string"
}
}

Playground​

Server
Authorization
Variables
Key
Value

Samples​


Read editable nonprofit settings​

GET
/org-admin/{slug}/nonprofit

Requires org.update_settings. Returns the scoped nonprofit's editable page fields, private contact and mailing address, receipt preferences, and general fund preferences.

Authorizations​

BearerAuth

In the browser, authentication rides on the httpOnly session cookies set by /cognito/signin or the Google / Apple sign-in at /cognito/oauth/{provider}. For scripts and for Swagger UI testing, paste an API key (fh_live_…, created with POST /api-keys); a Cognito JWT is accepted too. Sign-in does not return a token in its body.

Type
HTTP (bearer)

Parameters​

Path Parameters

slug*

The organization's slug (requireOrgPermission resolves it).

Type
string
Required

Responses​

OK

application/json
JSON
"string"

Playground​

Server
Authorization
Variables
Key
Value

Samples​


Edit the page​

PATCH
/org-admin/{slug}/nonprofit

org.update_settings. The page fields; legal_name and ein are refused (422 locked). A city change applies to Fundlies launched afterwards. Audited as organization.nonprofit_settings_updated; no event.

Authorizations​

BearerAuth

In the browser, authentication rides on the httpOnly session cookies set by /cognito/signin or the Google / Apple sign-in at /cognito/oauth/{provider}. For scripts and for Swagger UI testing, paste an API key (fh_live_…, created with POST /api-keys); a Cognito JWT is accepted too. Sign-in does not return a token in its body.

Type
HTTP (bearer)

Parameters​

Path Parameters

slug*

The organization's slug (requireOrgPermission resolves it).

Type
string
Required

Request Body​

application/json
JSON
"string"

Responses​

OK

application/json
JSON
"string"

Playground​

Server
Authorization
Variables
Key
Value
Body

Samples​


The page's links, for editing​

GET
/org-admin/{slug}/links

org.update_settings. Flagged rows and 30-day clicks included.

BearerAuth

In the browser, authentication rides on the httpOnly session cookies set by /cognito/signin or the Google / Apple sign-in at /cognito/oauth/{provider}. For scripts and for Swagger UI testing, paste an API key (fh_live_…, created with POST /api-keys); a Cognito JWT is accepted too. Sign-in does not return a token in its body.

Type
HTTP (bearer)

Path Parameters

slug*

The organization's slug (requireOrgPermission resolves it).

Type
string
Required

OK

application/json
JSON
{
"data": [
],
"max": 8
}
Server
Authorization
Variables
Key
Value

Replace the page's links​

PUT
/org-admin/{slug}/links

org.update_settings. The ordered list replaces the live one (a row with its id keeps it and its clicks). Normalized, deduped, at most 8, Web Risk on save; a staff-removed URL cannot come back. Mirrors the six fixed keys of social_links. Audited as organization.links_updated; no event.

BearerAuth

In the browser, authentication rides on the httpOnly session cookies set by /cognito/signin or the Google / Apple sign-in at /cognito/oauth/{provider}. For scripts and for Swagger UI testing, paste an API key (fh_live_…, created with POST /api-keys); a Cognito JWT is accepted too. Sign-in does not return a token in its body.

Type
HTTP (bearer)

Path Parameters

slug*

The organization's slug (requireOrgPermission resolves it).

Type
string
Required
application/json
JSON
{
"links": [
]
}

OK

application/json
JSON
{
"data": [
],
"max": 0
}
Server
Authorization
Variables
Key
Value
Body

The page's programs​

GET
/org-admin/{slug}/programs

org.update_settings.

Authorizations​

BearerAuth

In the browser, authentication rides on the httpOnly session cookies set by /cognito/signin or the Google / Apple sign-in at /cognito/oauth/{provider}. For scripts and for Swagger UI testing, paste an API key (fh_live_…, created with POST /api-keys); a Cognito JWT is accepted too. Sign-in does not return a token in its body.

Type
HTTP (bearer)

Parameters​

Path Parameters

slug*

The organization's slug (requireOrgPermission resolves it).

Type
string
Required

Responses​

OK

application/json
JSON
{
"data": [
],
"max": 12
}

Playground​

Server
Authorization
Variables
Key
Value

Samples​


Replace the page's programs​

PUT
/org-admin/{slug}/programs

org.update_settings. The ordered list, up to 12; a row with its id keeps it. Audited as organization.programs_updated.

Authorizations​

BearerAuth

In the browser, authentication rides on the httpOnly session cookies set by /cognito/signin or the Google / Apple sign-in at /cognito/oauth/{provider}. For scripts and for Swagger UI testing, paste an API key (fh_live_…, created with POST /api-keys); a Cognito JWT is accepted too. Sign-in does not return a token in its body.

Type
HTTP (bearer)

Parameters​

Path Parameters

slug*

The organization's slug (requireOrgPermission resolves it).

Type
string
Required

Request Body​

application/json
JSON
{
"programs": [
{
"id": "string",
"title": "string",
"description": "string",
"icon": "string"
}
]
}

Responses​

OK

application/json
JSON
{
"data": [
],
"max": 0
}

Playground​

Server
Authorization
Variables
Key
Value
Body

Samples​


The team​

GET
/org-admin/{slug}/team

org.read. Emails, invites and join requests only for managers.

Authorizations​

BearerAuth

In the browser, authentication rides on the httpOnly session cookies set by /cognito/signin or the Google / Apple sign-in at /cognito/oauth/{provider}. For scripts and for Swagger UI testing, paste an API key (fh_live_…, created with POST /api-keys); a Cognito JWT is accepted too. Sign-in does not return a token in its body.

Type
HTTP (bearer)

Parameters​

Path Parameters

slug*

The organization's slug (requireOrgPermission resolves it).

Type
string
Required

Responses​

OK

application/json
JSON
"string"

Playground​

Server
Authorization
Variables
Key
Value

Samples​


Invite people to the team​

POST
/org-admin/{slug}/invites

nonprofit.team.manage. Up to 20 emails; each gets the org_invite email (link /nonprofits/invite/{token}, 30 days). Nobody grants above their own role. Audited as organization.invite_sent.

Authorizations​

BearerAuth

In the browser, authentication rides on the httpOnly session cookies set by /cognito/signin or the Google / Apple sign-in at /cognito/oauth/{provider}. For scripts and for Swagger UI testing, paste an API key (fh_live_…, created with POST /api-keys); a Cognito JWT is accepted too. Sign-in does not return a token in its body.

Type
HTTP (bearer)

Parameters​

Path Parameters

slug*

The organization's slug (requireOrgPermission resolves it).

Type
string
Required

Request Body​

application/json
JSON
{
"emails": [
"string"
],
"role": "string",
"title": "string"
}

Responses​

OK

application/json
JSON
{
"created": [
],
"skipped": [
{
"email": "string",
"reason": "string"
}
]
}

Playground​

Server
Authorization
Variables
Key
Value
Body

Samples​


Resend an invite​

POST
/org-admin/{slug}/invites/{inviteId}/resend

nonprofit.team.manage. A new token and 30 days; 5 sends at most.

Authorizations​

BearerAuth

In the browser, authentication rides on the httpOnly session cookies set by /cognito/signin or the Google / Apple sign-in at /cognito/oauth/{provider}. For scripts and for Swagger UI testing, paste an API key (fh_live_…, created with POST /api-keys); a Cognito JWT is accepted too. Sign-in does not return a token in its body.

Type
HTTP (bearer)

Parameters​

Path Parameters

slug*

The organization's slug (requireOrgPermission resolves it).

Type
string
Required
inviteId*

The invite id.

Type
string
Required
Format
"uuid"

Responses​

OK

application/json
JSON
"string"

Playground​

Server
Authorization
Variables
Key
Value

Samples​


Cancel an invite​

DELETE
/org-admin/{slug}/invites/{inviteId}

nonprofit.team.manage. Idempotent.

Authorizations​

BearerAuth

In the browser, authentication rides on the httpOnly session cookies set by /cognito/signin or the Google / Apple sign-in at /cognito/oauth/{provider}. For scripts and for Swagger UI testing, paste an API key (fh_live_…, created with POST /api-keys); a Cognito JWT is accepted too. Sign-in does not return a token in its body.

Type
HTTP (bearer)

Parameters​

Path Parameters

slug*

The organization's slug (requireOrgPermission resolves it).

Type
string
Required
inviteId*

The invite id.

Type
string
Required
Format
"uuid"

Responses​

Done

Playground​

Server
Authorization
Variables
Key
Value

Samples​


Approve a join request​

POST
/org-admin/{slug}/join-requests/{requestId}/approve

nonprofit.team.manage. The person joins with the role and title and is emailed.

Authorizations​

BearerAuth

In the browser, authentication rides on the httpOnly session cookies set by /cognito/signin or the Google / Apple sign-in at /cognito/oauth/{provider}. For scripts and for Swagger UI testing, paste an API key (fh_live_…, created with POST /api-keys); a Cognito JWT is accepted too. Sign-in does not return a token in its body.

Type
HTTP (bearer)

Parameters​

Path Parameters

slug*

The organization's slug (requireOrgPermission resolves it).

Type
string
Required
requestId*

The request id.

Type
string
Required
Format
"uuid"

Request Body​

application/json
JSON
{
"role": "string",
"title": "string"
}

Responses​

OK

application/json
JSON
"string"

Playground​

Server
Authorization
Variables
Key
Value
Body

Samples​


Decline a join request​

POST
/org-admin/{slug}/join-requests/{requestId}/decline

nonprofit.team.manage.

Authorizations​

BearerAuth

In the browser, authentication rides on the httpOnly session cookies set by /cognito/signin or the Google / Apple sign-in at /cognito/oauth/{provider}. For scripts and for Swagger UI testing, paste an API key (fh_live_…, created with POST /api-keys); a Cognito JWT is accepted too. Sign-in does not return a token in its body.

Type
HTTP (bearer)

Parameters​

Path Parameters

slug*

The organization's slug (requireOrgPermission resolves it).

Type
string
Required
requestId*

The request id.

Type
string
Required
Format
"uuid"

Responses​

Done

Playground​

Server
Authorization
Variables
Key
Value

Samples​


Transfer ownership​

POST
/org-admin/{slug}/transfer-ownership

The owner only, to one of the admins; the old owner becomes an admin. Audited as organization.ownership_transferred.

Authorizations​

BearerAuth

In the browser, authentication rides on the httpOnly session cookies set by /cognito/signin or the Google / Apple sign-in at /cognito/oauth/{provider}. For scripts and for Swagger UI testing, paste an API key (fh_live_…, created with POST /api-keys); a Cognito JWT is accepted too. Sign-in does not return a token in its body.

Type
HTTP (bearer)

Parameters​

Path Parameters

slug*

The organization's slug (requireOrgPermission resolves it).

Type
string
Required

Request Body​

application/json
JSON
{
"user_id": "string"
}

Responses​

OK

application/json
JSON
{
"owner": "string",
"previous_owner": "string"
}

Playground​

Server
Authorization
Variables
Key
Value
Body

Samples​


Verification and tax status​

GET
/org-admin/{slug}/verification

org.read. The latest check per source, the documents (W-9 and bank documents only with org.upload_documents), the IRS record and how authority was shown.

Authorizations​

BearerAuth

In the browser, authentication rides on the httpOnly session cookies set by /cognito/signin or the Google / Apple sign-in at /cognito/oauth/{provider}. For scripts and for Swagger UI testing, paste an API key (fh_live_…, created with POST /api-keys); a Cognito JWT is accepted too. Sign-in does not return a token in its body.

Type
HTTP (bearer)

Parameters​

Path Parameters

slug*

The organization's slug (requireOrgPermission resolves it).

Type
string
Required

Responses​

OK

application/json
JSON
"string"

Playground​

Server
Authorization
Variables
Key
Value

Samples​


Run every check now​

POST
/org-admin/{slug}/verification/check-now

org.update_settings. At most once an hour (else 429 too_soon). Answers as GET.

Authorizations​

BearerAuth

In the browser, authentication rides on the httpOnly session cookies set by /cognito/signin or the Google / Apple sign-in at /cognito/oauth/{provider}. For scripts and for Swagger UI testing, paste an API key (fh_live_…, created with POST /api-keys); a Cognito JWT is accepted too. Sign-in does not return a token in its body.

Type
HTTP (bearer)

Parameters​

Path Parameters

slug*

The organization's slug (requireOrgPermission resolves it).

Type
string
Required

Responses​

OK

application/json
JSON
"string"

Playground​

Server
Authorization
Variables
Key
Value

Samples​


Powered by VitePress OpenAPI

Built with VitePress