{"id":50304930,"url":"https://github.com/ctala/skool-api-docs","last_synced_at":"2026-05-28T15:30:45.892Z","repository":{"id":357446315,"uuid":"1231003127","full_name":"ctala/skool-api-docs","owner":"ctala","description":"Docs, recipes \u0026 examples for the Skool All-in-One API — the most complete unofficial Skool API on Apify. Read AND write: posts, comments, members, classroom. Drop-in for n8n, Make.com, AI agents.","archived":false,"fork":false,"pushed_at":"2026-05-21T15:19:29.000Z","size":696,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-21T18:53:16.874Z","etag":null,"topics":["ai-agents","apify","apify-actor","automation","community-management","make","n8n","n8n-workflow","reverse-engineering","skool","skool-api","skool-community","typescript"],"latest_commit_sha":null,"homepage":"https://apify.com/cristiantala/skool-all-in-one-api","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ctala.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"docs/agents.md","dco":null,"cla":null}},"created_at":"2026-05-06T14:28:07.000Z","updated_at":"2026-05-21T15:28:10.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/ctala/skool-api-docs","commit_stats":null,"previous_names":["ctala/skool-api-docs"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ctala/skool-api-docs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ctala%2Fskool-api-docs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ctala%2Fskool-api-docs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ctala%2Fskool-api-docs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ctala%2Fskool-api-docs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ctala","download_url":"https://codeload.github.com/ctala/skool-api-docs/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ctala%2Fskool-api-docs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33615489,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-28T02:00:06.440Z","response_time":99,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai-agents","apify","apify-actor","automation","community-management","make","n8n","n8n-workflow","reverse-engineering","skool","skool-api","skool-community","typescript"],"created_at":"2026-05-28T15:30:44.805Z","updated_at":"2026-05-28T15:30:45.886Z","avatar_url":"https://github.com/ctala.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Skool API — Read AND Write, on Apify\n\n\u003e **The most complete unofficial Skool API.** Read posts, comments, members, and courses. Create posts, reply to comments, approve members, build entire courses programmatically. Drop-in for n8n, Make.com, Zapier, AI agents.\n\n[![Apify Actor](https://img.shields.io/badge/Apify-Actor-FF9900?logo=apify\u0026logoColor=white)](https://apify.com/cristiantala/skool-all-in-one-api)\n[![Latest version](https://img.shields.io/badge/version-0.3.25-brightgreen)](https://apify.com/cristiantala/skool-all-in-one-api)\n[![n8n template](https://img.shields.io/badge/n8n-template-EA4B71?logo=n8n\u0026logoColor=white)](https://n8n.io/workflows/14392-auto-approve-skool-community-members-with-gpt-4o-ai-screening/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)\n\n```\n┌─────────────────┐\n│ Your stack      │  ──┐\n│  - n8n          │    │\n│  - Make.com     │    │\n│  - AI agents    │    │     ┌────────────────────────┐         ┌────────────────┐\n│  - Custom code  │    ├──→  │  Apify Actor           │  ──→    │  Skool API     │\n└─────────────────┘    │     │  Skool All-in-One API  │         │  (cookies +    │\n                       │     │  read · write · auth   │         │  WAF + buildId │\n                       │     └────────────────────────┘         │  handled for   │\n                       │                                        │  you)          │\n                       └→  POST action:operation                 └────────────────┘\n                          → structured response\n```\n\n## Why this exists\n\nSkool **does not have an official API**. The community has reverse-engineered bits and pieces, but nobody has shipped a complete, write-capable, auth-handled, production-ready integration that AI agents and no-code tools can use.\n\nThis actor is that integration. It powers a real production community ([Cágala, Aprende, Repite](https://www.skool.com/cagala-aprende-repite) — daily writes, automated onboarding, full classroom). If it breaks, it breaks for me first. Bugs get fixed fast.\n\n## What you can do\n\n| Resource | Read | Write |\n|---|---|---|\n| **Posts** | List, filter, paginate, get single, get full comment trees | Create, update, delete, pin, unpin, like |\n| **Comments** | Nested trees with replies | Create top-level + nested replies, edit, delete |\n| **Members** | List active, list pending applicants | Approve, reject, ban, batch-approve |\n| **Classroom** | List courses, full tree, single page | Create course, folder, page, set body (markdown→TipTap), update cover/title/description, delete |\n| **Files** | — | Upload images for course covers |\n| **Groups** | Get group info | Update description, update Auto DM message |\n\n[See full action reference →](docs/actions.md) · [Use it from AI agents (Claude / OpenAI / MCP) →](docs/agents.md)\n\n## Quick start (60 seconds)\n\n### 1. Get an Apify account\n\nSign up at [apify.com](https://apify.com) (free tier covers most personal use). Grab your API token from the [account dashboard](https://console.apify.com/account/integrations).\n\n### 2. Run your first call\n\n```bash\ncurl -X POST \"https://api.apify.com/v2/acts/cristiantala~skool-all-in-one-api/run-sync-get-dataset-items?token=YOUR_TOKEN\" \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"action\": \"auth:login\",\n    \"email\": \"your-skool-email@example.com\",\n    \"password\": \"your-skool-password\",\n    \"groupSlug\": \"your-community\"\n  }'\n```\n\nThe response includes a `cookies` string. **Save it** — for the next ~3.5 days you can pass it instead of email/password and skip the slow Playwright login (~2s vs ~10s per call).\n\n### 3. Use the cookies for everything else\n\n```bash\ncurl -X POST \"https://api.apify.com/v2/acts/cristiantala~skool-all-in-one-api/run-sync-get-dataset-items?token=YOUR_TOKEN\" \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"action\": \"posts:list\",\n    \"cookies\": \"auth_token=...; client_id=...; aws-waf-token=...\",\n    \"groupSlug\": \"your-community\",\n    \"params\": { \"page\": 1 }\n  }'\n```\n\n[Full Getting Started guide →](docs/getting-started.md)\n\n## Browse by topic\n\nThis repo is organized into 8 sections. Each section has its own README hub.\n\n| Section | What's there |\n|---|---|\n| 📘 **[Learn](learn/)** | Glossary — what is the Skool API, how does Skool work, features, classroom, courses, affiliate program, live events |\n| 🛠️ **[Integrations](integrations/)** | Tool-specific guides — n8n, Make.com, Zapier, Claude, GPT, MCP, Python, LangChain, Webhooks |\n| 🤖 **[Automation](automation/)** | Strategic overview — bot vs agent, building a Skool bot, building a Skool AI agent, why not to build your own scraper |\n| 🍳 **[Recipes](recipes/)** | Cookbook — copy-paste workflows for auto-approve, reply unanswered, publish course from markdown, more |\n| 🔍 **[Compare](compare/)** | Skool vs X — Circle, Mighty Networks, Kajabi, Teachable, Thinkific, Discord, Slack, alternatives |\n| 📖 **[Guide](guide/)** | Founder decisions — is Skool legit, is Skool worth it, pricing, free trial, reviews, how to start |\n| 🎯 **[For X](for/)** | Audience-specific — Skool for AI agents (more coming) |\n| 📚 **[Docs](docs/)** | Reference — authentication, actions, posts, members, classroom, files, groups, error handling, AI agents integration |\n\n## Recipes\n\nReal, copy-paste-ready integrations:\n\n- [**Auto-approve Skool members with n8n + GPT-4o AI screening**](recipes/auto-approve-members-n8n.md) — published as a [ready-to-import n8n template](https://n8n.io/workflows/14392-auto-approve-skool-community-members-with-gpt-4o-ai-screening/). Webhook → AI screen → approve.\n- [**Reply to unanswered posts automatically**](recipes/reply-unanswered-posts.md) — find posts with 0 comments, reply with on-brand AI message\n- [**Publish a course from markdown files**](recipes/publish-course-from-markdown.md) — your local markdown → full Skool classroom with covers\n- [**Auto DM new members**](recipes/auto-dm-new-members.md) — set/update the welcome message that triggers when someone joins\n- [**Batch update course covers**](recipes/batch-update-course-covers.md) — refresh visual identity across N courses without resetting privacy/tier\n- [**Newsletter to Skool post**](recipes/newsletter-to-skool-post.md) — mirror your Listmonk/ConvertKit newsletter as a community post\n- [**Audit a long welcome thread (\u003e35 comments)**](recipes/audit-welcome-thread-with-getcommentsfull.md) — bypass Skool's REST cap with `posts:getCommentsFull` to find members you haven't replied to yet\n- [**Use the Skool API as MCP tool for Claude / Cursor / Cline**](recipes/use-skool-api-as-mcp-tool.md) — expose all 33 actions to your AI agents via Apify's hosted MCP server\n- [**Community analytics: export Skool data to NocoDB / Airtable**](recipes/community-analytics-to-nocodb.md) — track engagement, churn, conversion to paid via your own BI tool\n\n## Documentation\n\n| Topic | What you'll learn |\n|---|---|\n| [Getting Started](docs/getting-started.md) | First call, auth flow, cookies caching |\n| [Authentication](docs/authentication.md) | How auth works, WAF token rotation, the `x402-payment-required` \"fake error\" |\n| [Posts \u0026 Comments](docs/posts.md) | Skool's post=comment data model, content formats, mentions |\n| [Members](docs/members.md) | Approval flow, batch operations, member roles |\n| [Classroom](docs/classroom.md) | Courses, folders, pages, the markdown→TipTap converter, the R-PUT-COURSE quirk |\n| [Files](docs/files.md) | Image upload flow (cover images for courses) |\n| [Groups](docs/groups.md) | Description, Auto DM, settings |\n| [Error handling](docs/error-handling.md) | Structured `{success:false}` payloads, `errorCode` catalog, `hint` field, retry logic |\n| [AI Agents integration](docs/agents.md) | Function-calling specs (Claude / OpenAI / Gemini), MCP server, LangChain Tool, Claude Code Skill, agent loop patterns |\n| [Changelog](CHANGELOG.md) | Version history, what changed when |\n\n## Pricing\n\nThe actor uses **Apify Pay-Per-Event** (PPE) — you pay only for what you use:\n\n| Action | Approx. cost |\n|---|---|\n| `auth:login` (once every ~3.5 days) | ~$0.02 (Playwright login) |\n| Read action (`posts:list`, `members:list`, etc.) | ~$0.005 |\n| Write action (create post, approve member, etc.) | ~$0.01 + ~$0.005 platform |\n| `files:uploadImage` | ~$0.005 |\n\nA community handling ~50 writes + ~200 reads per day costs roughly **$1.50/month**. [See full pricing →](https://apify.com/cristiantala/skool-all-in-one-api)\n\n## Reliability\n\n- **Never-throw policy**: every error — including network failures and Skool 4xx responses — becomes a structured `{success:false}` payload pushed to the dataset, with an `errorCode` and `hint` field. Runs always end `SUCCEEDED`. The actor never trips Apify's `UNDER_MAINTENANCE` flag.\n- **Daily Quality Check pass**: the actor's input schema defaults to `system:health` so Apify's automated daily test always passes — production callers stay unaffected by Apify-side checks.\n- **Auto retry**: 5xx responses, network errors, expired WAF tokens, and stale buildIds are auto-handled with exponential backoff.\n- [More on reliability →](docs/error-handling.md)\n\n## What it's NOT\n\n- ❌ Not an official Skool product. Skool may change behavior at any time. This actor is reverse-engineered from the public Skool web app, kept stable as Skool deploys (~weekly buildId rotation, auto-handled).\n- ❌ Not for bypassing Skool's terms. You authenticate as a user that owns or admins the community. Don't scrape communities you have no access to.\n- ❌ Not for spam. Skool's rate limits (~20-30 writes/min) are enforced. The actor respects them.\n\n## Status\n\n| | |\n|---|---|\n| **Latest version** | `0.3.25` — May 2026 |\n| **Last battle-tested in production** | Daily, on `cagala-aprende-repite` |\n| **Skool buildId rotation** | Auto-handled (~weekly) |\n| **WAF token rotation** | Auto-handled (~3.5 days) |\n\n[Changelog →](CHANGELOG.md)\n\n## Issues \u0026 feature requests\n\nThe actor's source code is **not open-source** (commercial product), but this docs repo is. To report a bug or request a feature:\n\n- 🐛 [Open a bug report](https://github.com/ctala/skool-api-docs/issues/new?template=bug-report.md)\n- 💡 [Open a feature request](https://github.com/ctala/skool-api-docs/issues/new?template=feature-request.md)\n- 💬 Discuss with the community in [Cágala, Aprende, Repite](https://www.skool.com/cagala-aprende-repite) (Spanish-speaking founders)\n\n## Articles \u0026 deep dives\n\n- 📝 [The Complete Skool API: 9 Months of Reverse-Engineering 33 Actions (n8n + TypeScript + AI Agents)](https://cristiantalasanchez.hashnode.dev/the-complete-skool-api-9-months-of-reverse-engineering-33-actions-n8n-typescript-ai-agents) — full technical deep-dive (May 2026)\n- 📝 [I Built the Most Complete Skool API — and What I Learned Reverse-Engineering It](https://cristiantalasanchez.hashnode.dev/i-built-the-most-complete-skool-api-read-and-write-and-what-i-learned-reverse-engineering-it) — original launch post (March 2026)\n\n## Related\n\n- 🐦 Built by [Cristian Tala](https://cristiantala.com) — operator using AI to run a community of founders solo\n- 🎓 [Cágala, Aprende, Repite](https://www.skool.com/cagala-aprende-repite) — the Skool community where this actor was forged\n- 📰 [Tutorials \u0026 deep dives](https://cristiantala.com/blog) — recipes, lessons, case studies\n\n## License\n\nThe contents of this repository (docs, recipes, examples) are licensed under [MIT](LICENSE) — copy, modify, embed in your projects freely.\n\nThe Apify actor itself (`skool-all-in-one-api`) is a commercial product, not covered by this license.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fctala%2Fskool-api-docs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fctala%2Fskool-api-docs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fctala%2Fskool-api-docs/lists"}