Create A Mutual-Aid Post
curl --request POST \
--url https://api.thefaithapp.com/v1/mutual-aid-posts \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"kind": "need",
"category": "one_time_transport",
"title": "Ride to Sunday service",
"details": "Looking for a ride from the northern side of town this Sunday morning.",
"visibility": "church",
"urgency": "normal",
"contact_preference": "in_app"
}
'const options = {
method: 'POST',
headers: {
'X-API-Key': '<api-key>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
kind: 'need',
category: 'one_time_transport',
title: 'Ride to Sunday service',
details: 'Looking for a ride from the northern side of town this Sunday morning.',
visibility: 'church',
urgency: 'normal',
contact_preference: 'in_app'
})
};
fetch('https://api.thefaithapp.com/v1/mutual-aid-posts', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.thefaithapp.com/v1/mutual-aid-posts"
payload = {
"kind": "need",
"category": "one_time_transport",
"title": "Ride to Sunday service",
"details": "Looking for a ride from the northern side of town this Sunday morning.",
"visibility": "church",
"urgency": "normal",
"contact_preference": "in_app"
}
headers = {
"X-API-Key": "<api-key>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"status": "Success",
"data": {
"post": {
"id": 731,
"uuid": "9d693cc6-a354-4f7f-b656-070b7ab48d2e",
"kind": "need",
"category": "one_time_transport",
"specialized_details": {},
"title": "Ride to Sunday service",
"details": "Looking for a ride from the northern side of town this Sunday morning.",
"visibility": "church",
"branch": null,
"community_group": null,
"outreach_campaign": null,
"approximate_location": "Northern Kampala",
"author": {
"id": 308,
"name": "Jordan A."
},
"is_owner": true,
"show_author_name": true,
"urgency": "normal",
"contact_preference": "in_app",
"status": "open",
"pause_reason": null,
"response_count": 1,
"published_at": "2026-07-18T09:30:00.000000Z",
"expires_at": "2026-07-21T09:30:00.000000Z",
"closed_at": null,
"review_note": null,
"created_at": "2026-07-18T09:30:00.000000Z",
"updated_at": "2026-07-18T09:30:00.000000Z"
}
}
}Mutual Aid
Create A Mutual-Aid Post
Creates a need or offer. Church configuration and category rules determine whether it is published or held for review.
POST
/
v1
/
mutual-aid-posts
Create A Mutual-Aid Post
curl --request POST \
--url https://api.thefaithapp.com/v1/mutual-aid-posts \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"kind": "need",
"category": "one_time_transport",
"title": "Ride to Sunday service",
"details": "Looking for a ride from the northern side of town this Sunday morning.",
"visibility": "church",
"urgency": "normal",
"contact_preference": "in_app"
}
'const options = {
method: 'POST',
headers: {
'X-API-Key': '<api-key>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
kind: 'need',
category: 'one_time_transport',
title: 'Ride to Sunday service',
details: 'Looking for a ride from the northern side of town this Sunday morning.',
visibility: 'church',
urgency: 'normal',
contact_preference: 'in_app'
})
};
fetch('https://api.thefaithapp.com/v1/mutual-aid-posts', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.thefaithapp.com/v1/mutual-aid-posts"
payload = {
"kind": "need",
"category": "one_time_transport",
"title": "Ride to Sunday service",
"details": "Looking for a ride from the northern side of town this Sunday morning.",
"visibility": "church",
"urgency": "normal",
"contact_preference": "in_app"
}
headers = {
"X-API-Key": "<api-key>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"status": "Success",
"data": {
"post": {
"id": 731,
"uuid": "9d693cc6-a354-4f7f-b656-070b7ab48d2e",
"kind": "need",
"category": "one_time_transport",
"specialized_details": {},
"title": "Ride to Sunday service",
"details": "Looking for a ride from the northern side of town this Sunday morning.",
"visibility": "church",
"branch": null,
"community_group": null,
"outreach_campaign": null,
"approximate_location": "Northern Kampala",
"author": {
"id": 308,
"name": "Jordan A."
},
"is_owner": true,
"show_author_name": true,
"urgency": "normal",
"contact_preference": "in_app",
"status": "open",
"pause_reason": null,
"response_count": 1,
"published_at": "2026-07-18T09:30:00.000000Z",
"expires_at": "2026-07-21T09:30:00.000000Z",
"closed_at": null,
"review_note": null,
"created_at": "2026-07-18T09:30:00.000000Z",
"updated_at": "2026-07-18T09:30:00.000000Z"
}
}
}Authorizations
Public client key copied from Developer Access. The member bearer token authenticates the request.
Member access token returned by POST /v1/auth/token.
Headers
Optional 8-100 character key used to return the same post when a create request is retried.
Required string length:
8 - 100Pattern:
^[A-Za-z0-9._:-]+$Body
application/json
Available options:
need, offer Available options:
meals_groceries, one_time_transport, clothing_household, school_supplies, practical_help, employment_information, donation_drive, other, temporary_housing, emergency_financial_support, medical_equipment Required string length:
3 - 120Required string length:
10 - 3000Available options:
church, campus, community_group, leaders Available options:
normal, time_sensitive Available options:
in_app, leader Show child attributes
Show child attributes
Maximum string length:
100Was this page helpful?