MySkoolDocs
Esc

API reference

Endpoints

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 apartImplemented
GET/v1/groupsgroups of the active connectionImplemented
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 nullImplemented

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.

ParamValuesDefault
pages1–30, about 30 posts per page1
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
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:writeImplemented
PATCH/v1/posts/:idPlanned
POST/v1/posts/:id/pinPlanned

Comments#

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:writeImplemented

Members#

GET/v1/groups/:gid/membersPlanned
POST/v1/members/:id/(approve|reject|ban)Planned

DMs#

GET/v1/dmsinbox · dms:read · ?cursor=<offset> · ?awaitingReply=true scans up to 5 pagesImplemented
GET/v1/dms/:idthread · dms:read · {conversation, messages} oldest→newest · ?cursor=<messageId> for olderImplemented
POST/v1/dmssend · dms:write · {to | conversationId, content} · ?group= with `to` · 201 · throttled per connectionImplemented

Courses · Events · Leaderboard#

GET/v1/groups/:gid/coursesPlanned
GET/v1/groups/:gid/eventsPlanned
GET/v1/groups/:gid/leaderboardPlanned

MCP (API-key authed)#

POST/v1/mcpremote MCP server · Streamable HTTP · same Bearer keyImplemented

Management (web-session authed)#

POST/v1/connectionsconnect SkoolImplemented
GET/v1/connectionsImplemented
POST/v1/keysmint · returns the key onceImplemented
POST/v1/keys/:id/rotateImplemented
DELETE/v1/keys/:idrevoke · connector keys also drop their OAuth tokensImplemented
GET/v1/mewhoami + usageImplemented

MySkool is not affiliated with Skool. Skool™ is a trademark of Skool, Inc.