IIT Bombay's campus-life API and the single largest first-party programmable surface the institution operates. 112 paths and 164 operations over student bodies and their role graphs (154 bodies live), institute events and calendar, the news feed, hostel mess menus (22 messes), 427 named campus map locations with institute-map coordinates, a public grievance register, a student marketplace, lost-and-found, achievements, and placement/internship blogs. A substantial read surface answers with no credential at all; user-scoped and placement paths require a session. The specification is autogenerated by drf-yasg from the live Django routes and is served at /docs/.
Tagged areas include Campus Life, Event, Students, Open-Source, and Open Data. The published artifact set on APIs.io includes an OpenAPI specification, an API reference, authentication docs, a support channel, and 1 JSON Schema.
This API exposes
164 operations
across 112 paths,
organized into 50 resource areas,
and defines 37 schemas.
It is described by OpenAPI 3.0.0, at version v1.
Requests are made against a single base URL, https://gymkhana.iitb.ac.in/instiapp/api.
164 operations112 paths37 schemas16 DELETE87 GET12 PATCH36 POST13 PUT
Metadata
The identity and technical contract details declared by the specification.
InstiApp API declares
1 security scheme
for authenticating requests.
It accepts HTTP basic authentication (Basic).
By default, every request must be authenticated.
Paths & Operations 164
Across 112 paths, the API surfaces 164 operations — 16 DELETE, 87 GET, 12 PATCH, 36 POST, 13 PUT. They span 50 resource areas, including achievements, list_body, achievements-offer, alumni_login, alumni_otp_conf, bans, bodies, get_bodies, and 42 more. Each is listed below with its method, path, parameters, and response codes.
achievements 6
GET
/achievements
List the user's achivements and requests.
achievements_list→ 200
POST
/achievements
Make a request to a body for a new achievement.
achievements_createbody→ 201
GET
/achievements/{id}
Views for Achievements
achievements_read1 param→ 200
PUT
/achievements/{id}
Update/Verify an achievement. Needs BodyRole with VerA or can patch own achievement
achievements_update1 parambody→ 200
PATCH
/achievements/{id}
Update/Verify an achievement. Needs BodyRole with VerA or can patch own achievement
achievements_update1 parambody→ 200
DELETE
/achievements/{id}
Delete an achievement or request. Needs BodyRole with VerA
achievements_delete1 param→ 204
list_body 1
GET
/achievements-body/{id}
List the user's achivements and requests.
list_body1 param→ 200
achievements-offer 5
POST
/achievements-offer
Offer a new achievement for an event.
achievements-offer_createbody→ 201
GET
/achievements-offer/{id}
Get a achievement offer.
achievements-offer_read1 param→ 200
POST
/achievements-offer/{id}
Claim and try to get an achievement with its secret.
achievements-offer_create1 parambody→ 201
PUT
/achievements-offer/{id}
Update an offered achievement.
achievements-offer_update1 parambody→ 200
DELETE
/achievements-offer/{id}
Update an offered achievement.
achievements-offer_delete1 param→ 204
alumni_login 1
GET
/alumniLogin
Login
alumni_login→ 200
alumni_otp_conf 1
GET
/alumniOTP
Login
alumni_otp_conf→ 200
bans 6
GET
/bans/
List all the banned Accounts.
bans_list→ 200
POST
/bans/
bans_createbody→ 201
GET
/bans/{id}/
bans_read1 param→ 200
PUT
/bans/{id}/
bans_update1 parambody→ 200
PATCH
/bans/{id}/
bans_update1 parambody→ 200
DELETE
/bans/{id}/
bans_delete1 param→ 204
bodies 8
GET
/bodies
Body
bodies_list→ 200
POST
/bodies
Create Body. Needs the AddB Institute Role permission.
bodies_createbody→ 201
GET
/bodies/{id}
Get Body. Retrieve by uuid or strid.
bodies_read1 param→ 200
PUT
/bodies/{id}
Update Body. Needs the UpdB permission.
bodies_update1 parambody→ 200
DELETE
/bodies/{id}
Delete Body. Needs the DelB institute permission.
bodies_delete1 param→ 204
GET
/bodies/{id}/events
Get all events from pk uuid or strid. {?archived} is optional arguement to fetch all events
bodies_get_events1 param→ 200
GET
/bodies/{id}/follow
Follow or unfollow a body {?action}=0,1
bodies_follow1 param→ 200
GET
/bodies/{id}/followers
List followers of body.
bodies_followers_read1 param→ 200
get_bodies 2
GET
/bodies-with-privilege
Get bodies with users having a specific privilege.
get_bodies→ 200
GET
/bodies-with-privilege/
Get bodies with users having a specific privilege.
get_bodies→ 200
buy 10
GET
/buy/categories
buy_get_categories→ 200
GET
/buy/products
buy_products_list→ 200
POST
/buy/products
Creates product if the user isn't banned and form is filled correctly. Ban checking is yet to be incorporated.
buy_products_createbody→ 201
GET
/buy/products/{id}
buy_products_read1 param→ 200
PUT
/buy/products/{id}
buy_products_update1 parambody→ 200
DELETE
/buy/products/{id}
buy_products_delete1 param→ 204
POST
/buy/products/{id}/sold
buy_products_mark_sold1 parambody→ 201
POST
/buy/report/{id}
buy_report1 parambody→ 201
GET
/buy/v2/products
buy_v2_products_read→ 200
POST
/buy/v2/products
Creates product if the user isn't banned and form is filled correctly. Ban checking is yet to be incorporated.
List Of Posts. List fresh posts arranged chronologiaclly for the current user.
communityposts_list→ 200
POST
/communityposts
Create Post and Comments. Needs AddP permission for each body to be associated.
communityposts_createbody→ 201
PUT
/communityposts/moderator/{id}
communityposts_change_status1 parambody→ 200
GET
/communityposts/{id}
Get full Post. Get by uuid or strid
communityposts_read1 param→ 200
PUT
/communityposts/{id}
Update Event. Needs BodyRole with UpdE for at least one associated body. Disassociating bodies from the event requires the DelE permission and associating needs AddE
communityposts_update1 parambody→ 200
perform_action 1
PUT
/communityposts/{action}/{id}
action==feature for featuring a post
perform_action2 paramsbody→ 200
events 8
GET
/events
List Events. List fresh events prioritized for the current user.
events_list→ 200
POST
/events
Create Event. Needs AddE permission for each body to be associated.
events_createbody→ 201
GET
/events/{id}
Get Event with permission check and retry-safe transaction.
events_read1 param→ 200
PUT
/events/{id}
Update Event. Needs BodyRole with UpdE for at least one associated body. Disassociating bodies from the event requires the DelE permission and associating needs AddE
events_update1 parambody→ 200
DELETE
/events/{id}
Delete Event. Needs DelE permission for all associated bodies.
events_delete1 param→ 204
POST
/events/{id}/approve-mail
events_approve_mail1 param→ 201
POST
/events/{id}/reject-mail
events_reject_mail1 param→ 201
POST
/events/{id}/resubmit
events_resubmit1 param→ 201
list_all 1
GET
/events-all
List Events. List fresh events prioritized for the current user.
list_all→ 200
external_blog 1
GET
/external-blog
Get External Blog.
external_blog→ 200
getEncr 1
GET
/getEncr
getEncr_list→ 200
getUserMess 1
GET
/getUserMess
Get mess status for a user
getUserMess_list→ 200
interests 1
POST
/interests
Add a user interest.
interests_createbody→ 201
delete 1
DELETE
/interests/{id}
Delete a user interest.
delete1 param→ 204
internship 5
GET
/internship/filters/
internship_filters_list→ 200
GET
/internship/posts/
internship_posts_list1 param→ 200
GET
/internship/posts/latest/
internship_posts_latest_list1 param→ 200
GET
/internship/threads/
internship_threads_list1 param→ 200
GET
/internship/threads/{company_slug}/
internship_threads_read1 param→ 200
lnf 2
GET
/lnf/products/
Get list of products.
lnf_products_list→ 200
GET
/lnf/products/{id}/
Get a product from pk uuid or strid.
lnf_products_read1 param→ 200
locations 5
GET
/locations
List reusable locations.
locations_list→ 200
POST
/locations
Create a Location. Needs 'Location' institute permission.
locations_createbody→ 201
GET
/locations/{id}
Location
locations_read1 param→ 200
PUT
/locations/{id}
Update Location. This requires the user to have the 'Location' institute permission or BodyRole for the event using the location if the it is not reusable.
locations_update1 parambody→ 200
DELETE
/locations/{id}
Delete a Location. Needs 'Location' institute permission.
locations_delete1 param→ 204
login 2
GET
/login
Log in. Uses the code and redir query parameters.
login→ 200
GET
/login/get-user
Get session and profile.
login_get_user→ 200
logout 1
GET
/logout
Log out.
logout→ 200
mess 1
GET
/mess
Get mess menus of all hostels.
mess_list→ 200
my_events 1
GET
/my-events
Get all events created by the current user.
my_events→ 200
nearest 1
POST
/nearest/
nearest_create→ 201
news_feed 1
GET
/news
Get News feed.
news_feed→ 200
get_notifications 1
GET
/notifications
Get unread notifications for current user.
get_notifications→ 200
notifications 2
GET
/notifications/read
Mark all notifications as read.
notifications_mark_all_notifications_read→ 200
GET
/notifications/read/{id}
Mark one notification as read.
notifications_mark_notification_read1 param→ 200
pass_login 1
GET
/pass-login
pass_login→ 200
placement_blog 1
GET
/placement-blog
Get Placement Blog.
placement_blog→ 200
placementblogs 5
GET
/placementblogs/filters/
placementblogs_filters_list→ 200
GET
/placementblogs/posts/
placementblogs_posts_list1 param→ 200
GET
/placementblogs/posts/latest/
placementblogs_posts_latest_list1 param→ 200
GET
/placementblogs/threads/
placementblogs_threads_list1 param→ 200
GET
/placementblogs/threads/{company_slug}/
placementblogs_threads_read1 param→ 200
popup-notification 2
GET
/popup-notification/
Pop Up for the events
popup-notification_list→ 200
POST
/popup-notification/{popup_id}/mark-as-read/
Marks a specific popup as read for the current user.
Set UPR(User Post Reaction) for current user. This will create or update if record exists.
user-me_set_upr_me1 param→ 200
POST
/user-me/ucr/
Set UNR(User News Reaction) for current user. This will create or update if record exists.
user-me_set_ucr_mebody→ 201
GET
/user-me/ues/{event_pk}
Set UES for current user. This will create or update if record exists.
user-me_set_ues_me1 param→ 200
GET
/user-me/unr/{news_pk}
Set UNR(User News Reaction) for current user. This will create or update if record exists.
user-me_set_unr_me1 param→ 200
get_all_user_tags 1
GET
/user-tags
Get a list of categories of user tags with nested tags.
get_all_user_tags→ 200
user-tags 1
POST
/user-tags/reach
Get reach of selected user tags.
user-tags_get_user_tags_reach→ 201
users 1
GET
/users/{id}
UserProfile
users_read1 param→ 200
venter 10
GET
/venter/comments/{id}
Get a single comment.
venter_comments_read1 param→ 200
PUT
/venter/comments/{id}
Update a comment if created by current user.
venter_comments_update1 parambody→ 200
DELETE
/venter/comments/{id}
Delete a comment by the current user.
venter_comments_delete1 param→ 204
GET
/venter/complaints
Get a list of non-deleted complaints. To filter by current user, add a query parameter {?filter}
venter_complaints_list→ 200
POST
/venter/complaints
venter_complaints_createbody→ 201
GET
/venter/complaints/{id}
ComplaintViewSet to get the complaints
venter_complaints_read1 param→ 200
POST
/venter/complaints/{id}/comments
venter_complaints_comments_create1 parambody→ 201
GET
/venter/complaints/{id}/subscribe
Subscribe or Un-Subscribe from a complaint {?action}=0,1
venter_complaints_subscribe1 param→ 200
GET
/venter/complaints/{id}/upvote
UpVote or un-UpVote a complaint {?action}=0,1
venter_complaints_up_vote1 param→ 200
GET
/venter/tags
TagViewSet for the getting related tags
venter_tags_list→ 200
verifier_events 1
GET
/verifier-events
Get only pending events that the current verifier can approve.
verifier_events→ 200
Schemas 37
The contract defines 37 schemas that model the data the API accepts and returns. The most detailed are EventFull (35 properties), UserProfileFull (27 properties), Product (21 properties), CommunityPostSerializers (21 properties). Each schema is shown below with its type and property counts.
BodySerializerMin
object
9 properties1 required
UserProfile
object
4 properties
EventMin
object
7 properties3 required
AchievementUser
object
14 properties1 required
OfferedAchievement
object
7 properties3 required
SSOBans
object
8 properties3 required
RoleSerializerMin
object
5 properties2 required
Body
object
19 properties1 required
BodyFollowers
object
2 properties
Product
object
21 properties2 required
CommunitySerializers
object
15 properties2 required
CommunitySerializerMin
object
9 properties2 required
Interest
object
2 properties1 required
CommunityPostSerializers
object
21 properties
LocationSerializerMin
object
5 properties1 required
EventFull
object
35 properties6 required
UserInterest
object
2 properties1 required
ExtractedData
object
11 properties
BlogPost
object
10 properties6 required
CompanyThread
object
10 properties3 required
CompleteThread
object
11 properties3 required
ProductFound
object
10 properties2 required
Location
object
12 properties1 required
PlacementExtractedData
object
13 properties
PlacementBlogPost
object
10 properties6 required
PlacementCompanyThread
object
11 properties3 required
PlacementCompleteThread
object
12 properties3 required
Role
object
11 properties4 required
UploadedImage
object
2 properties
InstituteRole
object
3 properties2 required
FormerRole
object
5 properties
VerifiedAchievement
object
9 properties1 required
UserProfileFull
object
27 properties
Signature
object
5 properties2 required
CommentPost
object
3 properties1 required
ComplaintPost
object
8 properties
Tag
object
2 properties1 required
Specification
The full machine-readable OpenAPI contract behind this narrative.
Every API here is available over the API and to AI agents over MCP. APIs is not yet its own endpoint on the v1 API. Reach this content through network search and the tag graph, or the MCP server below.
Installs https://mcp.apievangelist.com/mcp in Claude, Cursor, VS Code and the rest — one button, every client.
MCP tools for apis
4 tools reach this content
search_api_evangelistSearch every content type across the network at once.
find_relatedThe shared-tag relevance graph — what else covers this.
get_tagEverything one tag labels, across all content types.
guide_topicPRO — a curated bundle for a topic: area, guidance, rules, papers, stories, services.
A second provider on the same verified email joins the account you already have.
Your account
ⓘWhere this information came from
This is an independent, third-party profile of InstiApp API, published by
API Evangelist. We do not operate, host, resell, or
support these APIs, and we are not affiliated with or endorsed by the company unless stated above.
Everything here is built from publicly available information — the company's own site,
developer portal, documentation, public repositories, and the specifications it publishes for public use.
Nothing is obtained by breaching a system, defeating an access control, or using credentials.
The Kin Score and Agent Readiness rating are independently calculated assessments of a company's
public API artifacts, scored against a published rubric. They are not certifications,
endorsements, security assessments, or audits.
Corrections, re-scores, and removal are free — no partnership or purchase required, and
you do not need to justify the request. A removed company is recorded as unrated, never scored
zero for having asked. Acknowledgement within one business day; removal within two.
info@apievangelist.com
·
Read the full data-sourcing policy → On a security or compliance team? Put security in the subject line and
you will get a person, not a form — we will tell you exactly which public URLs this profile was built from.