Every monetary value on the wire is a full-precision decimal string in USD. Group fees
(
joiningFee, subscriptionFee) are whole-dollar amounts sent as strings ("0", "10"). Never send a number or raw base units. See
Money & precision.Membership
List your groups
GET /api/v1/groups returns only your groups — the ones you’re a member of, like
/positions and /trades. There is deliberately no endpoint to discover other people’s groups;
private group internals stay private.
data is an array of Group objects, enriched per-user (your performanceRank, unread
counts, etc.). The money/percent fields are decimal strings:
Join a group
POST /api/v1/groups/{id}/join. How it resolves depends on the group type and the body:
- PUBLIC group → you join immediately. Response
statusisJOINED, with your fullmembership. - PRIVATE group → a join request is created for the leaders to approve. Response
statusisREQUESTED. Once a leader approves you, call join again with{ "finalize": true }to finalize the membership (status: JOINED). { "inviteCode": "..." }→ routes by the code and ignores the group type: a public invite joins you immediately (JOINED), a private invite creates a request (REQUESTED). The{id}in the path is not used to look up the group when an invite code is present.
Response — joined
Response — requested (private)
Leave a group
POST /api/v1/groups/{id}/leave queues a background job that sells your positions in the group
and then removes your membership. It returns immediately with status: "EXITING" — the exit is not
instantaneous.
Response
Pay your subscription
If your membership is past due,POST /api/v1/groups/{id}/subscription charges the subscription fee
against your cash balance and returns your refreshed member record (with subscriptionStatus and
nextChargeAt).
data is a GroupMember object.
The group’s proposals
GET /api/v1/groups/{id}/proposals returns every open call in the group — spot/perp and prediction
— as one combined object. Use it to see the group’s open calls, or to act on one yourself.
Response (shape)
data is an object keyed by vertical, not an array. Each entry carries the proposal plus your
own position in it. To open or manage positions, see the per-vertical guides:
Spot trading, Prediction markets, and
Perpetuals.
Run your own group
Create a group
POST /api/v1/groups. The caller becomes the group ADMIN. name, joiningFee, and
groupAccessType are required; fees are whole-dollar strings.
Response
joiningFee is required and must be a whole-dollar string (use "0" for a free group).
name and a valid groupAccessType are required too; missing or malformed values return 400.Update group settings
PATCH /api/v1/groups/{id} — leaders and admins only. Send only the fields you want to change.
isActive (boolean). Returns the updated Group. The body
fields are: name, description, header, image, joiningFee, subscriptionFee,
groupAccessType, defaultMemberType, isActive — all optional.
Approve or reject join requests
GET /api/v1/groups/{id}/join-requests lists the pending REQUESTED members (leaders/admins only).
Response
POST /api/v1/groups/{id}/join-requests/{userId}/approve. The default action
approves; send { "action": "reject" } to reject.
Response — approved
Response — rejected
After approval, the requester still finalizes their own membership — either it auto-joins
(
autoJoined: true in the response) or they call join with { "finalize": true }.Kick and promote members
Both are admin-only and take the target member’s id in the path.Kick response
promote returns the updated GroupMember (now with memberType: "LEADER").
Group agents
Agents are bots a group admin can switch on inside a group.GET /api/v1/groups/{id}/agents lists
the agents configured for the group (members only).
Response (shape)
POST /api/v1/groups/{id}/agents (admin only). agentKey is
required; action defaults to enable.
Response — enable
Enabling an agent for the first time spends activation points from the admin’s balance
(
paymentRequired: true, with a pointsTransaction). Insufficient points returns a 400.
Disabling returns { "data": { "groupAgent": { ... } } }.Field reference
GroupMember (promote, subscription, and member responses)
Membership (create / join responses)
Same as GroupMember but without username/avatar, plus mainWalletAddress (string / null) and
an optional nested group (Group object or null). On create, memberType is ADMIN.
Where to next
Groups & proposals
The social model: groups, proposals, positions.
Spot trading
Open, buy, sell, and close spot calls.
Prediction markets
Predict YES/NO on real-world events.
Perpetuals
Leverage, brackets, and live PnL.
Errors
Status codes and the
codes worth handling.API Reference
Every Groups endpoint, request, and response.