Skip to content

Non-profits​

Non-profits (#2098): the directory, a verified 501(c)(3)'s page and its tabs, follow, join requests, team invites, and the add flow.


The non-profit directory​

GET
/nonprofits

Verified pages only (paused ones after them); never drafts, never pages under review. Facets count causes and cities over the other filter. Each card is built for the caller (viewer: their role and Follow state).

Authorizations​

or
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​

Query Parameters

q

Name, mission or a 9-digit EIN (2+ characters).

Type
string
city

A city (place) slug.

Type
string
cause

A cause key.

Type
string
Valid values
"animals""arts_culture""children_youth""community_development""disaster_relief""education""environment""food_security""health""housing_homelessness""human_rights""immigrant_refugee""mental_health""seniors""veterans""women_girls""religious""other"
sort

Order.

Type
string
Valid values
"impact""newest""name"
Default
"impact"
limit

Page size.

Type
integer
Default
24
Maximum
48
offset

Offset.

Type
integer
Default
0

Responses​

OK

application/json
JSON
{
"data": [
],
"pagination": {
"total": 0,
"limit": 0,
"offset": 0
},
"facets": {
"causes": [
{
"key": "string",
"count": 0
}
],
"cities": [
{
"slug": "string",
"name": "string",
"count": 0
}
]
}
}

Playground​

Server
Variables
Key
Value

Samples​


Create a non-profit draft from an EIN​

POST
/nonprofits

Add flow (requireVerifiedEmail). Allowed for lookup outcomes verified and manual_review (and revoked with route: reinstatement). Creates the org (kind nonprofit, verification pending) with the caller as owner; one unfinished draft per person per EIN (the existing one is returned).

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)

Request Body​

application/json
JSON
{
"ein": "12-3456789",
"route": "string"
}

Responses​

OK

application/json
JSON
{
"id": "string",
"slug": "string",
"status": "string",
"step": 0
}

Playground​

Server
Authorization
Body

Samples​


Look an EIN up​

POST
/nonprofits/lookup

Add flow step 1 (requireVerifiedEmail; 20 per hour per person). The six outcomes, first match wins: existing, revoked, verified, manual_review (church, group, private_foundation), not_eligible, not_found.

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)

Request Body​

application/json
JSON
{
"ein": "12-3456789"
}

Responses​

OK

application/json
JSON
"string"

Playground​

Server
Authorization
Body

Samples​


My unfinished non-profit drafts​

GET
/nonprofits/drafts/mine

The add flow's resume list.

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)

Responses​

OK

application/json
JSON
{
"data": [
{
"id": "string",
"slug": "string",
"display_name": "string",
"ein": "string",
"step": 0,
"updated_at": "string"
}
]
}

Playground​

Server
Authorization

Samples​


Notify me when an EIN appears​

POST
/nonprofits/notify-me

EIN lookup outcome 6: the monthly IRS load emails the person when the EIN becomes an eligible 501(c)(3).

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)

Request Body​

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

Responses​

Done

Playground​

Server
Authorization
Body

Samples​


Report a wrong claim on an EIN​

POST
/nonprofits/claims/report

Writes an org_reports row (category impersonation) on the existing page.

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)

Request Body​

application/json
JSON
{
"ein": "string",
"details": "string"
}

Responses​

Reported

Playground​

Server
Authorization
Body

Samples​


Read a team invite​

GET
/nonprofits/invite/{token}

Public, built for the caller. What the invite page shows: the invited address as a hint, and in full only to a caller one of whose verified emails it is; whether accepting will work and whether the caller is already on the team.

Authorizations​

or
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

token*

The invite token from the email.

Type
string
Required

Responses​

OK

application/json
JSON
{
"org": {
"slug": "string",
"display_name": "string",
"logo": "string",
"place": "string",
"status": "string"
},
"role": "string",
"title": "string",
"invited_by": {
"name": "string"
},
"email_hint": "i***@kalynafamilyaid.org",
"email": "string",
"sent_at": "string",
"expires_at": "string",
"show_on_page": true,
"state": "string",
"viewer": {
"signed_in": true,
"role": "string",
"email_matches": true
}
}

Playground​

Server
Variables
Key
Value

Samples​


Accept a team invite​

POST
/nonprofits/invite/{token}/accept

Joins with the invite's role and title; On page as chosen, else on for owner/admin/fundraiser/viewer and off for member. One of the person's VERIFIED emails must equal the invited address. Publishes org.invite_accepted and emails the inviter.

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

token*

The invite token from the email.

Type
string
Required

Request Body​

application/json
JSON
{
"show_on_page": true
}

Responses​

OK

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

Playground​

Server
Authorization
Variables
Key
Value
Body

Samples​


Decline a team invite​

POST
/nonprofits/invite/{token}/decline

The invited person says no. One of the person's VERIFIED emails must equal the invited address. The invite stops waiting, so the team can invite the address again. Declining twice answers the same.

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

token*

The invite token from the email.

Type
string
Required

Responses​

OK

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

Playground​

Server
Authorization
Variables
Key
Value

Samples​


A non-profit page​

GET
/nonprofits/{slug}

404 for a draft unless the viewer is its owner or staff; a page under review (or rejected, suspended) only for its team and staff. An old slug answers with the current one in slug.

Authorizations​

or
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 non-profit's slug (an old slug resolves too) or id.

Type
string
Required

Responses​

OK

application/json
JSON
"string"

Playground​

Server
Variables
Key
Value

Samples​


Delete my non-profit draft​

DELETE
/nonprofits/{slug}

The owner deletes their own draft only (slug is the draft's id).

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 draft's id.

Type
string
Required

Responses​

Done

Playground​

Server
Authorization
Variables
Key
Value

Samples​


A draft's add-flow state​

GET
/nonprofits/{id}/onboarding

Owner of the draft only, else 404.

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

id*

The non-profit's id.

Type
string
Required
Format
"uuid"

Responses​

OK

application/json
JSON
"string"

Playground​

Server
Authorization
Variables
Key
Value

Samples​


Save add-flow fields​

PATCH
/nonprofits/{id}/onboarding

Any of {step, title, attestation} and the page settings fields (validated as Settings), links replaced as a list.

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

id*

The non-profit's id.

Type
string
Required
Format
"uuid"

Request Body​

application/json
JSON
{
"display_name": "string",
"logo": "string",
"banner_image": "string",
"place": {
"place_id": "string"
},
"cause": "string",
"mission": "string",
"website": "string",
"contact_email": "string",
"contact_email_public": true,
"address": "string",
"founded_year": 0,
"receipt_signer_name": "string",
"receipt_signer_title": "string",
"receipt_thank_you": "string",
"year_end_summary": true,
"general_fund_enabled": true,
"general_fund_visibility": "string",
"monthly_gifts_enabled": true,
"links": [
],
"step": 0,
"title": "string",
"attestation": true
}

Responses​

OK

application/json
JSON
"string"

Playground​

Server
Authorization
Variables
Key
Value
Body

Samples​


Send a work-email code​

POST
/nonprofits/{id}/authority/email

The domain must be the org website's (or a subdomain), never a free mail domain.

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

id*

The non-profit's id.

Type
string
Required
Format
"uuid"

Request Body​

application/json
JSON
{
"email": "string",
"website": "string"
}

Responses​

OK

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

Playground​

Server
Authorization
Variables
Key
Value
Body

Samples​


Verify the work-email code​

POST
/nonprofits/{id}/authority/email/verify

Six digits, 15 minutes, 5 attempts.

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

id*

The non-profit's id.

Type
string
Required
Format
"uuid"

Request Body​

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

Responses​

OK

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

Playground​

Server
Authorization
Variables
Key
Value
Body

Samples​


Claim authority by the latest Form 990​

POST
/nonprofits/{id}/authority/form990

Staff check the name against the 990.

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

id*

The non-profit's id.

Type
string
Required
Format
"uuid"

Request Body​

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

Responses​

OK

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

Playground​

Server
Authorization
Variables
Key
Value
Body

Samples​


Claim authority by an officer letter​

POST
/nonprofits/{id}/authority/letter

The letter is uploaded first through POST /org-admin/{slug}/documents with doc_type officer_letter.

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

id*

The non-profit's id.

Type
string
Required
Format
"uuid"

Request Body​

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

Responses​

OK

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

Playground​

Server
Authorization
Variables
Key
Value
Body

Samples​


Submit a volunteer affiliation claim for staff review​

POST
/nonprofits/{id}/authority/volunteer

Only the verified-email owner of a draft may submit. The claim stays pending until staff verify it; it never enables donations by itself.

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

id*

The non-profit's id.

Type
string
Required
Format
"uuid"

Responses​

OK

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

Playground​

Server
Authorization
Variables
Key
Value

Samples​


Submit a draft for review​

POST
/nonprofits/{id}/submit

Records the terms, runs every check and publishes organization.created (kind nonprofit). The page becomes under_review.

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

id*

The non-profit's id.

Type
string
Required
Format
"uuid"

Request Body​

application/json
JSON
{
"terms_accepted": true
}

Responses​

OK

application/json
JSON
"string"

Playground​

Server
Authorization
Variables
Key
Value
Body

Samples​


A non-profit's Fundlies​

GET
/nonprofits/{slug}/fundlies

Only its own Fundlies (beneficiary_type nonprofit, this org), publicly listed; never a team member's personal Fundly. Rows are the communities Fundlies tab rows plus goal_reached_at (the Impact tab's rows). Active = live and not fully funded.

Authorizations​

or
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 non-profit's slug (an old slug resolves too) or id.

Type
string
Required

Query Parameters

status

Tab.

Type
string
Valid values
"active""completed""all"
Default
"active"
sort

The communities Fundlies tab's sorts; omitted keeps each tab's own order (Active: live first, newest; Completed: most recently ended).

Type
string
Valid values
"newest""most_raised""ending"
limit

Page size.

Type
integer
Default
12
Maximum
48
offset

Offset.

Type
integer

Responses​

OK

application/json
JSON
{
"data": [
{
"id": "string",
"slug": "string",
"title": "string",
"organizer_name": "string",
"raised_cents": 0,
"goal_cents": 0,
"percent": 0,
"remaining_cents": 0,
"fundraising": {
"additionalProperties": "string"
},
"goal_reached_at": "string",
"additionalProperties": "string"
}
],
"counts": {
"active": 0,
"completed": 0
},
"pagination": "string"
}

Playground​

Server
Variables
Key
Value

Samples​


A non-profit's Members tab​

GET
/nonprofits/{slug}/team

On page members only, grouped by their title's category (governance/executive: leadership; programs/fundraising/operations: staff; community: volunteers), else by role. The followers it names are chosen for the caller.

Authorizations​

or
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 non-profit's slug (an old slug resolves too) or id.

Type
string
Required

Responses​

OK

application/json
JSON
{
"groups": {
"leadership": [
],
"staff": [
],
"volunteers": [
]
},
"hidden_count": 0,
"followers": 0,
"followers_preview": [
],
"followers_others": 0
}

Playground​

Server
Variables
Key
Value

Samples​


A non-profit's activity​

GET
/nonprofits/{slug}/activity

Updates, Fundlies launched, 25/50/75% and goals reached, newest first.

Authorizations​

or
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 non-profit's slug (an old slug resolves too) or id.

Type
string
Required

Query Parameters

limit

How many.

Type
integer
Default
10
Maximum
50

Responses​

OK

application/json
JSON
{
"data": [
]
}

Playground​

Server
Variables
Key
Value

Samples​


A non-profit's impact​

GET
/nonprofits/{slug}/impact

Raised, counted Fundlies and donors on its own Fundlies (the same figures as the card), each counted Fundly as the Fundlies tab's row (most raised first; their raised adds up to raised_cents), and its city: the shared city block plus the city page's impact, communities and verified non-profits.

Authorizations​

or
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 non-profit's slug (an old slug resolves too) or id.

Type
string
Required

Responses​

OK

application/json
JSON
{
"raised_cents": 0,
"fundlies": 0,
"donors": 0,
"since": "string",
"breakdown": [
{
"id": "string",
"slug": "string",
"title": "string",
"organizer_name": "string",
"raised_cents": 0,
"goal_cents": 0,
"percent": 0,
"remaining_cents": 0,
"fundraising": {
"additionalProperties": "string"
},
"goal_reached_at": "string",
"additionalProperties": "string"
}
],
"city": {
"slug": "string",
"name": "string",
"region": "string",
"label": "string",
"photo_url": "string",
"fundlies": 0,
"donors": 0,
"has_page": true,
"place": "string",
"city_impact_cents": 0,
"communities": 0,
"nonprofits": 0
}
}

Playground​

Server
Variables
Key
Value

Samples​


Open a non-profit's public document​

GET
/nonprofits/{slug}/documents/{docId}

A document staff approved and the team shows on About (the determination letter); never a W-9 or bank document. PDFs and images open inline (nosniff); anything else downloads. 404 for anything else, or for a page the caller may not see.

Authorizations​

or
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 non-profit's slug (an old slug resolves too) or id.

Type
string
Required
docId*

The document id (tax.determination_letter.id).

Type
string
Required
Format
"uuid"

Responses​

The file

Playground​

Server
Variables
Key
Value

Samples​


Follow a non-profit​

POST
/nonprofits/{slug}/follow

followers, following_type organization.

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 non-profit's slug (an old slug resolves too) or id.

Type
string
Required

Responses​

OK

application/json
JSON
{
"following": true,
"followers": 0
}

Playground​

Server
Authorization
Variables
Key
Value

Samples​


Unfollow a non-profit​

DELETE
/nonprofits/{slug}/follow

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 non-profit's slug (an old slug resolves too) or id.

Type
string
Required

Responses​

OK

application/json
JSON
{
"following": true,
"followers": 0
}

Playground​

Server
Authorization
Variables
Key
Value

Samples​


Count a link click​

POST
/nonprofits/{slug}/links/{linkId}/click

A beacon: one counter per link per UTC day, no user ids. Always 204.

Path Parameters

slug*

The non-profit's slug (an old slug resolves too) or id.

Type
string
Required
linkId*

The link id.

Type
string
Required
Format
"uuid"

Done

Server
Variables
Key
Value

Report a non-profit​

POST
/nonprofits/{slug}/report

requireVerifiedEmail. The org_reports flow (one report per person per org).

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 non-profit's slug (an old slug resolves too) or id.

Type
string
Required

Request Body​

application/json
JSON
{
"category": "string",
"details": "string"
}

Responses​

OK

application/json
JSON
{
"success": true
}

Playground​

Server
Authorization
Variables
Key
Value
Body

Samples​


Ask to join the team​

POST
/nonprofits/{slug}/join-requests

requireVerifiedEmail. Publishes nonprofit.join_requested and emails the owner and admins.

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 non-profit's slug (an old slug resolves too) or id.

Type
string
Required

Request Body​

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

Responses​

OK

application/json
JSON
{
"id": "string",
"status": "string"
}

Playground​

Server
Authorization
Variables
Key
Value
Body

Samples​


Withdraw my join request​

DELETE
/nonprofits/{slug}/join-requests/mine

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 non-profit's slug (an old slug resolves too) or id.

Type
string
Required

Responses​

Done

Playground​

Server
Authorization
Variables
Key
Value

Samples​


Powered by VitePress OpenAPI

Built with VitePress