Skip to content
ImpactMojo
Home Catalog Docs

Partner API

A free, read-only REST API for organizations to integrate ImpactMojo's open development-education catalog — courses, games, labs, and interactive book companions.

No API key required Read-only (GET) JSON CORS enabled CC BY-NC-ND 4.0

Base URL

https://www.impactmojo.in/api/v1

No key, read-only, please cache. Every endpoint is a public GET that returns JSON with Cache-Control: public, max-age=300 and permissive CORS (Access-Control-Allow-Origin: *). Please respect the cache headers and keep request rates modest (roughly ≤60 requests/minute). Contact hello@impactmojo.in for higher-volume access.
License & attribution. All content is licensed CC BY-NC-ND 4.0. You may link to and surface ImpactMojo content provided you give attribution to ImpactMojo (impactmojo.in). Non-commercial use only; no derivatives of the content itself. This API exposes catalog metadata (titles, descriptions, URLs, tags) to help you link learners to the original material.

Endpoints

GET/api/v1

API index — name, version, the list of available endpoints, the license/attribution note, and the rate-limit note.

Example response
{
  "name": "ImpactMojo Partner API",
  "version": "1.0",
  "base_url": "https://www.impactmojo.in/api/v1",
  "endpoints": [
    { "method": "GET", "path": "/api/v1", "description": "This index." },
    { "method": "GET", "path": "/api/v1/catalog", "description": "Full content catalog..." },
    { "method": "GET", "path": "/api/v1/courses", "description": "Courses only..." },
    { "method": "GET", "path": "/api/v1/courses/{slug}", "description": "Single course detail..." },
    { "method": "GET", "path": "/api/v1/stats", "description": "Content counts by type." }
  ],
  "license": "CC BY-NC-ND 4.0 — attribution to ImpactMojo (impactmojo.in) required; ...",
  "rate_limit": "No API key required. Read-only. Please cache responses ...",
  "contact": "hello@impactmojo.in"
}
GET/api/v1/catalog

The full content catalog — courses, games, labs, and book companions — derived from the site's search index.

Query paramDescription
typeFilter by content type. One of course, game, lab, book, handout. Omit for all types.
qCase-insensitive substring match against title and description.
limitMaximum items to return. Default 100, maximum 500.
Example request
GET https://www.impactmojo.in/api/v1/catalog?type=game&q=auction&limit=50
Example response
{
  "count": 1,
  "total": 1,
  "limit": 50,
  "filters": { "type": "game", "q": "auction" },
  "items": [
    {
      "id": "GAME001",
      "title": "Bidding Wars",
      "description": "Strategic auction and bidding simulation exploring market competition",
      "type": "game",
      "category": "Economics",
      "url": "https://www.impactmojo.in/Games/bidding-wars-game.html",
      "tags": ["auction", "market", "competition", "bidding"]
    }
  ],
  "license": "CC BY-NC-ND 4.0 — attribution to ImpactMojo (impactmojo.in) required; ...",
  "attribution": "Content © ImpactMojo, CC BY-NC-ND 4.0 — https://impactmojo.in"
}
GET/api/v1/courses

Courses only — both 101 foundational decks and flagship courses — enriched with slide counts, level, format, license, sections, and feature flags where available.

Example response
{
  "count": 106,
  "courses": [
    {
      "slug": "dev-economics",
      "id": "101-dev-economics",
      "title": "Development Economics 101",
      "description": "100-slide foundational deck covering poverty, growth, ...",
      "url": "https://www.impactmojo.in/101-courses/dev-economics.html",
      "track": "101 Foundational Courses",
      "level": "Foundational",
      "format": "Native HTML",
      "tier": "101",
      "slides": 100,
      "license": "CC BY-NC-ND 4.0",
      "features": { "quiz": false, "glossary": false, "selfPaced": true, "free": true },
      "sections": ["What Development Economics Is", "Poverty & Growth", "..."],
      "tags": ["development economics", "poverty", "growth", "101"]
    }
  ],
  "license": "CC BY-NC-ND 4.0 — attribution to ImpactMojo (impactmojo.in) required; ..."
}
GET/api/v1/courses/{slug}

A single course's detail, looked up by its slug (the value returned in the courses list, e.g. mel, gandhi, dev-economics). Returns 404 with a JSON error body if no course matches.

Example request
GET https://www.impactmojo.in/api/v1/courses/gandhi
Example response
{
  "course": {
    "slug": "gandhi",
    "id": "gandhi",
    "title": "Gandhi's Political Thought: Philosophy for Praxis",
    "description": "Comprehensive exploration of Gandhian political philosophy ...",
    "url": "https://www.impactmojo.in/courses/gandhi/",
    "track": "Philosophy, Law & Governance",
    "level": "Advanced",
    "format": "Flagship course",
    "tier": "flagship",
    "slides": null,
    "license": "CC BY-NC-ND 4.0",
    "tags": ["philosophy", "politics", "gandhi", "swaraj"]
  },
  "license": "CC BY-NC-ND 4.0 — attribution to ImpactMojo (impactmojo.in) required; ..."
}
404 response
{ "error": "No course found with slug \"does-not-exist\"." }
GET/api/v1/stats

Aggregate content counts by type, plus a flagship / 101-foundational course breakdown.

Example response
{
  "total_items": 709,
  "by_type": {
    "course": 106,
    "game": 17,
    "lab": 13,
    "book-summary": 51,
    "bct": 203,
    "dataverse": 215
  },
  "courses": { "total": 106, "flagship": 13, "foundational_101": 93 },
  "license": "CC BY-NC-ND 4.0 — attribution to ImpactMojo (impactmojo.in) required; ..."
}

Errors

Errors return a JSON body of the form { "error": "message" } with an appropriate HTTP status: 400 (invalid query parameter), 404 (unknown endpoint or course slug), 405 (non-GET method), and 502 (upstream catalog data temporarily unavailable). An OPTIONS preflight returns 204 with CORS headers.

Need more?

This API is intentionally simple and read-only. If your organization needs higher request volumes, bulk exports, or a deeper integration, write to hello@impactmojo.in and we'll help.