Members
Requires an API key — see Authentication & Scopes.
GET /members
List a space's members, cursor-paginated. Scope: members:read.
curl https://api.tatiya.space/v1/members \
-H "Authorization: Bearer $TATIYA_API_KEY"
phone is always null on this route — it isn't selected by the query backing it. If you need
a phone number, it isn't available through this API today.
GET /members/{id}
Read one member's detail, including their active memberships. Scope: members:read.
curl https://api.tatiya.space/v1/members/$MEMBER_ID \
-H "Authorization: Bearer $TATIYA_API_KEY"
recent_visits is omitted entirely, not sent as an empty list — only aggregate visit counts
exist today, and sending [] would falsely claim "no visits" rather than "not computed."
POST /members
Add a new member by email. Scope: members:write. Always creates a plain participant, and
returns 409 if the email is already registered anywhere on the platform.
curl -X POST https://api.tatiya.space/v1/members \
-H "Authorization: Bearer $TATIYA_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "name": "Ari", "email": "[email protected]" }'
Adding an existing platform user by id isn't exposed on this route. POST /members only
creates by email — there's no way to attach an already-registered user to a new space through the
API today.
PATCH /members/{id}
Update one role's profile. Scope: members:write. role is required in the body — a member can
hold several roles at once (participant and facilitator, say), each with its own bio,
progression, certifications and specialties, so there's no single "the" profile to guess at
without naming which one you're editing.
curl -X PATCH https://api.tatiya.space/v1/members/$MEMBER_ID \
-H "Authorization: Bearer $TATIYA_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "role": "participant", "bio": "Started practicing in 2024" }'
Both POST and PATCH respond with the same shape GET /members/{id} returns.