The full /v1 surface: what is implemented today and what is planned.
Every path is relative to https://api.myskool.xyz. Implemented routes are live; Planned ones are on the roadmap.
Groups#
| GET | /v1/whoamiconnected Skool account {id, handle, name} · groups:read · tells the creator's own posts/comments apart | Implemented |
| GET | /v1/groupsgroups of the active connection | Implemented |
| GET | /v1/groups/:gidmetadata + labels (categories) | Implemented |
| GET | /v1/groups/:gid/postsfeed · ?pages=1-30 (~30 posts each) · ?sort=newest (default) | newest-cm | unread | best-1d | best-1w | best-1m | best-1y | best · ?since=24h | 7d | 2026-09-28 (publish-date window; stops paging early with newest/unread) | Implemented |
| POST | /v1/groups/:gid/postscreate · posts:write · {title, content?, label?} · 201; author fields come back null | Implemented |
Feed parameters#
GET /v1/groups/:gid/posts reads the feed with a headless browser. Out-of-range or unknown values answer 400 invalid_request instead of being clamped.
| Param | Values | Default |
|---|
pages | 1–30, about 30 posts per page | 1 |
sort | newest-cm — Recent activity: posts with the newest comments first (Skool's own default).newest — New posts first.unread — Posts the connected account has not read yet.best-1d — Top posts of the last day.best-1w — Top posts of the last week.best-1m — Top posts of the last month.best-1y — Top posts of the last year.best — Top posts of all time.
| newest |
curl "https://api.myskool.xyz/v1/groups/$GID/posts?pages=3&sort=best-1w" \
-H "Authorization: Bearer $SKOOL_API_KEY"
Posts#
| GET | /v1/posts/:iddetail + all comments in one call · ?group= | Implemented |
| DELETE | /v1/posts/:idposts:write | Implemented |
| PATCH | /v1/posts/:id | Planned |
| POST | /v1/posts/:id/pin | Planned |
| GET | /v1/posts/:id/commentsflat list · postId = root post, parentId = comment replied to (null = top level), authorId · ?group= | Implemented |
| POST | /v1/posts/:id/commentscreate · comments:write · {content, parentId?} · ?group= | Implemented |
| DELETE | /v1/comments/:idcomments:write | Implemented |
Members#
| GET | /v1/groups/:gid/members | Planned |
| POST | /v1/members/:id/(approve|reject|ban) | Planned |
DMs#
| GET | /v1/dmsinbox · dms:read · ?cursor=<offset> · ?awaitingReply=true scans up to 5 pages | Implemented |
| GET | /v1/dms/:idthread · dms:read · {conversation, messages} oldest→newest · ?cursor=<messageId> for older | Implemented |
| POST | /v1/dmssend · dms:write · {to | conversationId, content} · ?group= with `to` · 201 · throttled per connection | Implemented |
Courses · Events · Leaderboard#
| GET | /v1/groups/:gid/courses | Planned |
| GET | /v1/groups/:gid/events | Planned |
| GET | /v1/groups/:gid/leaderboard | Planned |
MCP (API-key authed)#
| POST | /v1/mcpremote MCP server · Streamable HTTP · same Bearer key | Implemented |
Management (web-session authed)#
| POST | /v1/connectionsconnect Skool | Implemented |
| GET | /v1/connections | Implemented |
| POST | /v1/keysmint · returns the key once | Implemented |
| POST | /v1/keys/:id/rotate | Implemented |
| DELETE | /v1/keys/:idrevoke · connector keys also drop their OAuth tokens | Implemented |
| GET | /v1/mewhoami + usage | Implemented |