FamilyWall family organization platform integration for managing calendars, lists, messaging, meal plans, recipes, and more.
FamilyWall uses email/password authentication with session tokens. Required environment variables:
FAMILYWALL_EMAIL - FamilyWall account emailFAMILYWALL_PASSWORD - FamilyWall account passwordThese should be set in ~/.openclaw/.env.
Test connection:
bash
source ~/.openclaw/.env && {baseDir}/scripts/familywall.py status
All operations use the {baseDir}/scripts/familywall.py script:
OperationCommandStatus & MembersAccount/family status{baseDir}/scripts/familywall.py statusList family members{baseDir}/scripts/familywall.py membersCalendar EventsList upcoming events{baseDir}/scripts/familywall.py events list --days 7Create event{baseDir}/scripts/familywall.py events create "Title" --start "2026-03-10T14:00:00" --end "2026-03-10T15:00:00"Create all-day event{baseDir}/scripts/familywall.py events create "Holiday" --start "2026-03-10" --end "2026-03-11" --alldayDelete event{baseDir}/scripts/familywall.py events delete EVENT_IDShopping Lists / TasksList all lists{baseDir}/scripts/familywall.py lists listView list items{baseDir}/scripts/familywall.py lists items LIST_IDAdd item to list{baseDir}/scripts/familywall.py lists add LIST_ID "Milk"Add with quantity{baseDir}/scripts/familywall.py lists add LIST_ID "Eggs" --quantity "12"Check item (purchased){baseDir}/scripts/familywall.py lists check ITEM_IDUncheck item{baseDir}/scripts/familywall.py lists check ITEM_ID --uncheckCreate new list{baseDir}/scripts/familywall.py lists create "Groceries" --type SHOPPINGCreate todo list{baseDir}/scripts/familywall.py lists create "Chores" --type TODOMessagingList threads{baseDir}/scripts/familywall.py messages threadsRead messages{baseDir}/scripts/familywall.py messages read THREAD_ID --limit 20Send message{baseDir}/scripts/familywall.py messages send THREAD_ID "Hello family!"MediaList media in thread{baseDir}/scripts/familywall.py media list THREAD_IDDownload by URL{baseDir}/scripts/familywall.py media download --url "PICTURE_URL" -o file.jpgDownload by media ID{baseDir}/scripts/familywall.py media download --media-id MEDIA_ID --thread-id THREAD_IDDownload all from thread{baseDir}/scripts/familywall.py media download-all THREAD_ID --output-dir ./mediaMeal PlannerView meal plan{baseDir}/scripts/familywall.py meals list --days 7Add meal to plan{baseDir}/scripts/familywall.py meals add "Tacos" --date 2026-05-15 --type DINNERRecipesCreate recipe{baseDir}/scripts/familywall.py recipes create "Pasta" --ingredients "noodles\nsauce" --instructions "1. Boil\n2. Mix"Import recipe from URL{baseDir}/scripts/familywall.py recipes from-url "https://example.com/recipe"List recipe categories{baseDir}/scripts/familywall.py recipes categoriesLocationGet member locations{baseDir}/scripts/familywall.py locationsWall / FeedGet family wall{baseDir}/scripts/familywall.py wall --limit 20
bash
source ~/.openclaw/.env
{baseDir}/scripts/familywall.py events list --days 7
bash
source ~/.openclaw/.env
# First get the list ID
{baseDir}/scripts/familywall.py lists list
# Then add items
{baseDir}/scripts/familywall.py lists add "tasklist/12345_67890" "Milk"
{baseDir}/scripts/familywall.py lists add "tasklist/12345_67890" "Bread"
{baseDir}/scripts/familywall.py lists add "tasklist/12345_67890" "Eggs" --quantity "12"
bash
source ~/.openclaw/.env
{baseDir}/scripts/familywall.py events create "Family Dinner" \
--start "2026-05-15T18:00:00" \
--end "2026-05-15T20:00:00" \
--location "Home" \
--description "Weekly family dinner"
bash
source ~/.openclaw/.env
# Get thread list first
{baseDir}/scripts/familywall.py messages threads
# Send message to a thread
{baseDir}/scripts/familywall.py messages send "imthread/12345_67890" "Dinner is ready!"
Messages can contain photos, audio, and other media files. The medias array in message responses includes pictureUrl for downloading.
bash
source ~/.openclaw/.env
# List all media in a thread
{baseDir}/scripts/familywall.py media list "imThread/12345"
# Download a specific file by URL (from media list output)
{baseDir}/scripts/familywall.py media download --url "https://api.familywall.com/media/..." -o photo.jpg
# Download by media ID (looks up the URL automatically)
{baseDir}/scripts/familywall.py media download --media-id "media/12345_67890" --thread-id "imThread/12345"
# Download ALL media from a thread into a directory
{baseDir}/scripts/familywall.py media download-all "imThread/12345" --output-dir ./family_media
# Download media from a specific message only
{baseDir}/scripts/familywall.py media download-all "imThread/12345" --message-id "message/12345_67890" --output-dir ./media
bash
source ~/.openclaw/.env
# View current meal plan
{baseDir}/scripts/familywall.py meals list --days 7
# Add meals
{baseDir}/scripts/familywall.py meals add "Spaghetti" --date 2026-05-13 --type DINNER
{baseDir}/scripts/familywall.py meals add "Pancakes" --date 2026-05-14 --type BREAKFAST
{baseDir}/scripts/familywall.py meals add "Grilled Chicken" --date 2026-05-14 --type DINNER
Meal types: BREAKFAST, LUNCH, DINNER, SNACK
bash
source ~/.openclaw/.env
{baseDir}/scripts/familywall.py recipes create "Banana Smoothie" \
--ingredients "2 bananas\n1 cup milk\n1 tbsp honey\nIce" \
--instructions "1. Add all ingredients to blender\n2. Blend until smooth\n3. Serve immediately" \
--prep-time 5 --serves 2 \
--description "Quick healthy breakfast smoothie"
bash
source ~/.openclaw/.env
{baseDir}/scripts/familywall.py recipes from-url "https://www.example.com/recipe/chocolate-cake"
bash
source ~/.openclaw/.env
{baseDir}/scripts/familywall.py locations
The FamilyWall API is at https://api.familywall.com/api. Authentication is session-based:
log2in endpoint with email/passwordCategoryEndpointDescriptionAuthlog2inLogin with email/passwordAccountaccgetallfamilyGet all family dataFamilyfamlistfamilyList user's familiesEventsevtlistList calendar eventsEventsevtcreateCreate eventEventsevtdeleteDelete eventListstasklistlistList all task/shopping listsListstasklistgetGet list with itemsListstasklistaddAdd item to listListstasklistcheckCheck/uncheck itemListstasklistcreateCreate new listMessagesimthreadlistList IM threadsMessagesimmessagelist2Get messages from thread (includes media)MessagesimsendSend messageMedia/media/...Download media files (GET with session auth)LocationloclistGet member locationsWallwalllistGet wall/feed postsMealsmplistintervalList planned meals in rangeMealsmpcreateAdd dish to meal planMealsmpmealputCreate/edit a mealRecipesmprecipeputCreate/edit a recipeRecipesmprecipeputbyurlCreate recipe from URLRecipesmpcategorylistList recipe categoriesRecipesmpadditemtolistAdd meal ingredients to shopping list
All requests are POST with application/x-www-form-urlencoded body. Parameters use prefix notation:
a00 prefix for first call parametersa01call, a02call, etc. for batched callspartnerScope=Family required on all callsResponses are JSON with structure:
json
{
"a00": {
"r": {"r": <result_data>}, // Success
"ex": {"ex": {"message": "..."}}, // Error
"cn": "endpoint_name"
}
}
Messages from immessagelist2 include a medias array. Each media object contains:
FieldDescriptionmediaIdUnique media identifier (e.g. media/12345_67890)pictureUrlDirect download URL (requires session auth cookie)mimeTypeMIME type ( image/jpeg, audio/mp4, etc.)nameOriginal filenamedatasizeFile size in bytesresolutionX/YImage dimensions (images only)durationMsDuration in milliseconds (audio/video only)readystateProcessing state ( READY = downloadable)
To download media, send an authenticated GET request to the pictureUrl with the JSESSIONID cookie and tokencsrf header.
Wall/feed posts may also contain media attachments with the same structure.
Common errors:
urllib if requests not available)requests library for better HTTP handlingThe complete FamilyWall API reference (all endpoints, parameters, return types, and exceptions) is maintained on Confluence: