Sikhami for apps and developers
Use Sikhami from inside the AI assistants and automation tools you already use. Ask Claude or ChatGPT to find a free GST course, quiz you on percentages, or show your next meetup. Send your institute's new admission enquiries to a Google Sheet. It is one connection with one set of actions, wherever you use it.
Connect an AI assistant
Sikhami's MCP server is at https://sikhami.com/mcp. The first time, your assistant opens a Sikhami page where you log in and choose what it may do.
- Claude (claude.ai): Settings, Connectors, Add custom connector, then paste the address above.
- Claude Code: run
claude mcp add --transport http sikhami https://sikhami.com/mcp, then/mcpto sign in. - ChatGPT, Grok, Cursor and other MCP apps: add a remote MCP server with the address above. Directory listings are on their way.
Connect an automation tool
Zapier, Make, n8n and Postiz apps are being reviewed by those platforms. Until they are listed, use the REST API below with a personal access token (n8n's HTTP Request node works well), or make a Developer App for an OAuth connection. Both are in Settings, Connected apps.
What an app can and cannot do
- See your Sikhami account (
read): Your profile, your courses and progress, the meetups you joined, your notifications and new followers, and everything public on Sikhami. - Act for you (
write): Join or leave free meetups and publish posts with pictures or videos as you. It can never buy anything, send messages or delete your content. - Your institute's admissions (
lms): For institutes you own or run: read admission enquiries (names, phone numbers, emails) and add new ones.
No app can buy anything, pay, send or read messages, run ads, delete your content or see your password. Paid courses, notes and meetups are always bought on their own sikhami.com page. Private profiles and learners under 18 never appear in any app. You can disconnect any app at once in Settings, Connected apps.
Actions
Each action is an MCP tool and a REST route with the same name, input and answer.
Find and read
searchGET /api/v1/search · scope readSearch Sikhami's public courses, notes, upcoming meetups, teachers, institutes and study clubs by words in their names (for example 'GST', 'class 10 maths', 'UPSC prelims'). Optionally limit to one type. Returns links to each item's page.
Input: q (required), type, limit
get_courseGET /api/v1/courses/{id} · scope readDetails of a published Sikhami course: what it covers, language, price in rupees, number of lectures and hours, students, rating, institute, and its page link (where people enrol).
Input: id (required)
get_noteGET /api/v1/notes/{id} · scope readDetails of published study notes on Sikhami (a book, notes PDF or question bank): subject, exams, pages, language, rating, price in rupees or free, and the page link where they can be opened.
Input: id (required)
list_upcoming_meetupsGET /api/v1/meetups · scope readUpcoming public study meetups on Sikhami, soonest first, online and in person. Filter by city name (for example 'Delhi'), by words in the name or topic, or to free meetups only. Addresses and joining links are never shown; people see them in the app after joining.
Input: city, q, free_only, limit, cursor
get_meetupGET /api/v1/meetups/{id} · scope readDetails of a public Sikhami meetup: what it is about, when, online or which city, how many are going, the joining fee in rupees, the host, and its page link.
Input: id (required)
get_profileGET /api/v1/profiles/{username} · scope readA learner's or teacher's public Sikhami profile by username: bio, college, level, exams, subjects, languages, followers, following and posts. Private profiles and under-18s are not available.
Input: username (required)
list_quiz_topicsGET /api/v1/quizzes · scope readSikhami's free practice quiz topics (maths, reasoning, English, general knowledge and more), each with how many 10-question quizzes it has. Filter by words. Use get_quiz with a topic id to fetch a quiz.
Input: q, limit, cursor
get_quizGET /api/v1/quizzes/{id} · scope readA 10-question practice quiz with its options, the right answer for each (answer_index, counting from 0) and the time allowed per question. Give a quiz id such as 'profit-and-loss-3', or a topic id from list_quiz_topics for its first quiz. When quizzing someone, do not reveal answer_index until they answer.
Input: id (required)
Your account
get_my_profileGET /api/v1/me · scope readThe connected Sikhami account: name, username, picture, bio, profile link and sign-in email.
list_my_coursesGET /api/v1/me/courses · scope readCourses the connected learner is enrolled in (with live access), newest first, with how far through they are and a link to continue watching.
Input: limit
list_my_meetupsGET /api/v1/me/meetups · scope readMeetups the connected person joined or hosts: upcoming ones soonest first (and past ones too if asked), each with the time it was joined and whether they are the host.
Input: include_past, limit
list_my_notificationsGET /api/v1/me/notifications · scope readThe connected person's latest Sikhami notifications (likes, comments, follows, meetup and course updates), newest first.
Input: unread_only, limit
list_my_new_followersGET /api/v1/me/followers · scope readPeople who started following the connected account, newest first. Works as a 'new follower' trigger: each item has a stable id.
Input: limit
list_my_meetup_attendeesGET /api/v1/me/meetup-attendees · scope readPeople who joined meetups the connected person hosts, newest first (optionally for one meetup). Works as a 'new attendee' trigger.
Input: meetup_id, limit
list_my_course_enrolmentsGET /api/v1/me/course-enrolments · scope readLearners who enrolled in courses the connected person owns, newest first (optionally for one course). Works as a 'new enrolment' trigger.
Input: course_id, limit
Do things (asks you first)
join_meetupPOST /api/v1/meetups/{id}/join · scope writeJoin a free, public Sikhami meetup as the connected person (it shows in their app with the joining details and reminders). Only for free meetups that have not started and are not full; paid meetups are joined on the meetup page. Ask the person before joining.
Input: id (required)
leave_meetupDELETE /api/v1/meetups/{id}/join · scope writeLeave a meetup the connected person joined (they lose their seat and the joining details). Ask the person before leaving.
Input: id (required)
create_postPOST /api/v1/posts · scope writePublish a public post on Sikhami as the connected person: 1 to 10 pictures (JPEG, PNG, WebP, GIF, up to 20 MB each) or MP4 videos (up to 100 MB), given as public https links, with an optional caption of up to 2,200 characters (#hashtags work). Everyone can see it. Show the person the caption and media and ask before publishing.
Input: text, media_urls (required)
Institutes on Sikhami LMS
list_my_institutesGET /api/v1/lms/institutes · scope lmsInstitutes on Sikhami LMS that the connected person owns or runs as an admin, with their ids for the admission tools.
list_admission_enquiriesGET /api/v1/lms/enquiries · scope lmsAn institute's admission enquiries (name, phone, email, course of interest, stage), newest first. For the institute's owner and admins. Works as a 'new enquiry' trigger.
Input: institute_id (required), stage, limit
add_admission_enquiryPOST /api/v1/lms/enquiries · scope lmsAdd a new admission enquiry (a lead) to an institute's Sikhami LMS admissions list, for its owner or admins: name plus a phone number or email, and optionally the course or subject of interest and a note.
Input: institute_id (required), name (required), phone, email, interest, course_id, note
REST API
Base address https://sikhami.com/api/v1. Send Authorization: Bearer <token> with an OAuth access token or a personal access token. Answers are JSON; times are milliseconds since 1970 (UTC); prices are in rupees.
curl -H "Authorization: Bearer skh_pat_..." \
"https://sikhami.com/api/v1/search?q=gst&type=course&limit=5"
curl -X POST -H "Authorization: Bearer skh_pat_..." -H "Content-Type: application/json" \
-d '{"institute_id":"...","name":"Asha Verma","phone":"9876543210","interest":"Class 11 JEE"}' \
https://sikhami.com/api/v1/lms/enquiriesErrors come as {"error":{"code":"not_found","message":"..."}} with the HTTP status: 400 bad input, 401 sign in again, 403 not allowed, 404 not found, 409 cannot right now (full, already started, paid), 429 too many requests (see Retry-After). Limits per token: 120 requests a minute, 20 changes a minute, 30 posts a day. Lists take limit (1 to 50) and, where they page, cursor. Lists of new followers, attendees, enrolments and enquiries are newest first with stable ids, so they work as polling triggers.
Sign-in (OAuth 2.1)
- Metadata:
/.well-known/oauth-authorization-serverand/.well-known/oauth-protected-resource/mcp - Authorize
/oauth/authorize, token/oauth/token, revoke/oauth/revoke, dynamic client registration/oauth/register - Authorization code with PKCE (S256; required for apps without a secret). Access tokens last an hour; refresh tokens 90 days and change on every use.
- Scopes:
read,write,lms. Developer Apps (client id and secret) and personal access tokens are made in Settings, Connected apps.
Privacy and help
Apps get only what the scopes above allow and only for the account that allowed them. Read the privacy policy and the terms of service. Questions or problems: help@sikhami.com.