Skip to content
API documentation
View as MarkdownOpen in Claude

Exams

List an organization’s exam categories

GET
/v1/{organizationId}/exam-category

Lists every exam category the organization has, active or not: isActive says which. No exam in an inactive category is open for applications.

Categories belong to the organization, not to your account, so every account allowed to read them sees the same list. The order is not specified; sort by order yourself if you show them.

A page holds 20 categories unless you ask for up to 100 with limit. A read only: nothing changes, and it is safe to repeat.

Parameters

Path parameters

NameTypeDescription
organizationIdrequiredstringpattern ^[0-9a-f]{24}$

The organization’s _id: 24 hexadecimal digits, as listOrganizations (GET /v1/organization) lists it.

Example 64b7f0c2a1d3e4f5a6b7c8d9

Query parameters

NameTypeDescription
pageoptionalnumber

Page number. Defaults to 1.

Example 1

limitoptionalnumber

Items per page. Defaults to 20, max 100.

Example 20

Responses

200 OK

Success: message is "Categories fetched successfully.".

Body

  • successbooleanrequired

    Always true on a success.

    one oftrue

  • messagestringrequired

    exampleCategories fetched successfully.

  • paginationobject · PaginationMetarequired

    Where one page sits in the whole list.

    4 fields of pagination
    • pagenumberrequired

      The page returned, counting from 1.

      min1example1

    • limitnumberrequired

      Items per page: the limit you sent, 20 if you sent none, and never more than 100.

      min1max100example20

    • totalnumberrequired

      Items across every page.

      min0example57

    • totalPagesnumberrequired

      Pages at this limit: total / limit, rounded up.

      min0example3

  • dataarray of ExamCategoryResponserequired

    9 fields of each item
    • _idstringrequired

      The category’s id.

      example6650a1b2c3d4e5f6a7b8c9e3

    • namestring

      The category’s name, as students see it.

      exampleMathematics

    • altNamestring

      A second name for the category, where one is set.

      exampleMaths

    • ordernumber

      Where the category sorts among the others, lowest first. The available-exams tree is in this order.

      example1

    • isActiveboolean

      Whether the category is live. No exam in an inactive category is open for applications.

      exampletrue

    • nonAcceptedReplacementsarray of string

      Ids of the categories an application in this one may not be moved to: moveApplication refuses such a move.

      example["6650a1b2c3d4e5f6a7b8c9ea"]

    • studyMaterialLinksarray of string

      Links to study material for the category.

      example["https://example.org/study/mathematics"]

    • createdAtstring

      When the record was created.

      formatdate-timeexample2026-09-01T09:30:00.000Z

    • updatedAtstring

      When the record last changed.

      formatdate-timeexample2026-09-02T14:05:00.000Z

Headers

X-RateLimit-Limit integer

Requests your account may make to this operation per window (100).

X-RateLimit-Remaining integer

Requests left in the current window.

X-RateLimit-Reset integer

Seconds until the current window ends.

Example

{
  "success": true,
  "message": "Categories fetched successfully.",
  "pagination": {
    "page": 1,
    "limit": 20,
    "total": 57,
    "totalPages": 3
  },
  "data": [
    {
      "_id": "6650a1b2c3d4e5f6a7b8c9e3",
      "name": "Mathematics",
      "altName": "Maths",
      "order": 1,
      "isActive": true,
      "nonAcceptedReplacements": [
        "6650a1b2c3d4e5f6a7b8c9ea"
      ],
      "studyMaterialLinks": [
        "https://example.org/study/mathematics"
      ],
      "createdAt": "2026-09-01T09:30:00.000Z",
      "updatedAt": "2026-09-02T14:05:00.000Z"
    }
  ]
}

Example request

# $TOKEN: a short-lived token you minted with your API key and secret
curl -sS 'https://api.main-team.org/v1/<organizationId>/exam-category?page=1&limit=20' \
  -H "Authorization: Bearer $TOKEN"

Search the API documentation

Guides, endpoints by name, path or permission, and error codes such as not_found.