# Classmarker

ClassMarker is a professional, flexible, and easy-to-use online quiz maker for business and education, offering customizable exams, instant grading, and detailed reporting.

- **Category:** education
- **Auth:** API_KEY
- **Composio Managed App Available?** N/A
- **Tools:** 29
- **Triggers:** 0
- **Slug:** `CLASSMARKER`
- **Version:** 20260312_00

## Tools

### Create Access List Item

**Slug:** `CLASSMARKER_CREATE_ACCESS_LIST_ITEM`

Tool to add one or more access codes to an access list. Use after obtaining a valid access_list_id to grant exam access.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `codes` | array | Yes | List of access codes to add; up to 100 codes, each up to 255 characters |
| `access_list_id` | integer | Yes | ID of the access list to modify |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create a new question category

**Slug:** `CLASSMARKER_CREATE_CATEGORY`

Tool to create a new question category. Use after confirming the parent category ID.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `category_name` | string | Yes | Name for the new category |
| `parent_category_id` | integer | Yes | ID of the existing parent category under which this will be created |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Group

**Slug:** `CLASSMARKER_CREATE_GROUP`

Tool to create a new group. Use when you need to organize users into a specific group after planning your user structure.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | Name of the group to create |
| `description` | string | No | Optional description for the group |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Question

**Slug:** `CLASSMARKER_CREATE_QUESTION`

Tool to create a new question with specified text, type, and category in ClassMarker. Supports multiplechoice, multipleresponse, truefalse, and essay question types.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `points` | integer | Yes | Points awarded for a correct answer. |
| `options` | object | No | Answer choices as a dictionary mapping option letters (A-J) to {'content': 'option text'}. Required for multiplechoice, multipleresponse, and truefalse types. Not used for essay questions. |
| `question` | string | Yes | The text of the question to create. |
| `category_id` | integer | Yes | Category identifier to assign this question. |
| `grade_style` | string ("partial_with_deduction" | "partial_without_deduction" | "off") | No | Grading style for multipleresponse questions: 'partial_with_deduction' (partial credit with penalties for wrong choices), 'partial_without_deduction' (partial credit without penalties), or 'off' (all-or-nothing grading). Only valid for multipleresponse type. |
| `question_type` | string ("multiplechoice" | "multipleresponse" | "truefalse" | "essay") | Yes | Type of question to create: 'multiplechoice' (one correct answer), 'multipleresponse' (multiple correct answers), 'truefalse' (True/False question), or 'essay' (open-ended text response) |
| `random_answers` | boolean | Yes | Whether to randomize the order of options. Note: Ignored for truefalse and essay question types. |
| `correct_options` | array | No | List of correct option letters. Must contain exactly one letter for multiplechoice and truefalse questions, can contain multiple letters for multipleresponse. Not used for essay questions. |
| `correct_feedback` | string | No | Optional feedback for a correct answer. |
| `incorrect_feedback` | string | No | Optional feedback for an incorrect answer. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create ClassMarker User

**Slug:** `CLASSMARKER_CREATE_USER`

Tool to create a new user in ClassMarker. Use after gathering user details to provision accounts. Provide user info and optional group assignments. Returns the complete API response.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `email` | string | Yes | User's email address |
| `is_admin` | boolean | No | Indicates if the user should have admin privileges |
| `password` | string | Yes | User's password, minimum length 8 |
| `group_ids` | array | No | List of group IDs to assign the user to |
| `last_name` | string | Yes | User's last name |
| `first_name` | string | Yes | User's first name |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Access List Item

**Slug:** `CLASSMARKER_DELETE_ACCESS_LIST_ITEM`

Removes one or more access codes from a ClassMarker access list. Access lists are used to control exam access by requiring users to provide unique identifiers (e.g., email addresses, employee IDs, student numbers). Each code can be used a limited number of times per exam, and codes are recorded with exam results. To use this action: 1. First call GET_ALL_GROUPS_LINKS_EXAMS to find available access list IDs 2. Provide the access_list_id and the list of codes to remove 3. Up to 100 codes can be removed per request Note: This action is idempotent - deleting codes that don't exist will not cause an error.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `codes` | array | Yes | List of access code strings to remove from the access list. Minimum 1, maximum 100 codes per request. Each code can be up to 255 characters. |
| `access_list_id` | integer | Yes | Numeric ID of the access list to remove codes from. Use GET_ALL_GROUPS_LINKS_EXAMS to find available access list IDs. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete API Key

**Slug:** `CLASSMARKER_DELETE_API_KEY`

Tool to delete an API key by its ID. Use when you need to revoke an API key immediately.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `api_key_id` | integer | Yes | Unique identifier of the API key to delete |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Group

**Slug:** `CLASSMARKER_DELETE_GROUP`

Tool to delete a group by its ID. Use when you need to remove a group from ClassMarker.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `group_id` | string | Yes | ID of the group to delete |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Test Link

**Slug:** `CLASSMARKER_DELETE_TEST_LINK`

Deletes a specific link assignment from a test/exam in ClassMarker. Links are unique URLs that provide access to tests. This action is idempotent - deleting a non-existent link returns success. Use this when you need to remove a link from a test to revoke access via that specific URL.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `link_id` | integer | Yes | The unique identifier of the specific link to delete from the test |
| `test_id` | integer | Yes | The unique identifier of the test/exam that contains the link you want to remove |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete User

**Slug:** `CLASSMARKER_DELETE_USER`

Tool to delete a specific user by ID. Use when you need to remove a user from ClassMarker after verifying the user's identity.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `user_id` | string | Yes | ID of the user to delete |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Webhook

**Slug:** `CLASSMARKER_DELETE_WEBHOOK`

Deletes a webhook listener from your ClassMarker account. This action removes a webhook configuration that was previously set up to receive real-time exam results. The ClassMarker API is idempotent - attempting to delete a non-existent webhook will return success without error. Webhook IDs are typically obtained from the ClassMarker web interface (My Account > Webhooks / API Keys) or through other webhook management tools if available. Note: This is a destructive operation and cannot be undone through the API.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `webhook_id` | string | Yes | The unique identifier of the webhook to delete. Note: The ClassMarker API is idempotent and returns success even if the webhook doesn't exist. Webhook IDs are typically managed through the ClassMarker web interface at My Account > Webhooks / API Keys. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Group Details

**Slug:** `CLASSMARKER_GET_GROUP_DETAILS`

Retrieve detailed information about a specific group by ID. Returns group name and assigned tests. Note: This fetches all accessible groups and filters for the specified group_id, as ClassMarker API doesn't provide a direct single-group endpoint.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `group_id` | integer | Yes | Unique identifier of the group to retrieve. Obtain from LIST_GROUPS action. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Initial Finished After Timestamp

**Slug:** `CLASSMARKER_GET_INITIAL_FINISHED_AFTER_TIMESTAMP`

Compute the initial finishedAfterTimestamp for paginating ClassMarker test results. Use this action when you need to retrieve recent test results for the first time and don't have a previous 'next_finished_after_timestamp' value. This returns a Unix timestamp set to 2 weeks ago, which is the ClassMarker API's default starting point for result pagination. **When to use this:** - Starting a new pagination sequence for test results - You don't have a stored 'next_finished_after_timestamp' from a previous request **When NOT to use this:** - You have a 'next_finished_after_timestamp' from a previous response - use that value instead - For subsequent pagination requests - use the timestamp from the last successful response **Important:** ClassMarker API requires the finishedAfterTimestamp to be less than 3 months old. This action ensures compliance by setting it to 2 weeks ago.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Question

**Slug:** `CLASSMARKER_GET_QUESTION`

Tool to retrieve a specific question by its ID. Use when you need detailed information of a question after confirming the question_id.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `question_id` | integer | Yes | Unique identifier of the question to retrieve |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Recent Results For Group Exam

**Slug:** `CLASSMARKER_GET_RECENT_RESULTS_GROUP_EXAM`

Tool to fetch recent test results for a specific group and exam. Use after determining a UNIX timestamp to retrieve only results finished after that time for the group and exam.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Number of results to return; default 200; maximum 200. |
| `test_id` | integer | Yes | Unique identifier of the test/exam |
| `group_id` | integer | Yes | Unique identifier of the group |
| `finishedAfterTimestamp` | integer | No | UNIX timestamp to return only results finished after this time. Defaults to 2 weeks ago if not provided. Must be < 3 months old. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Recent Results Link Exam

**Slug:** `CLASSMARKER_GET_RECENT_RESULTS_LINK_EXAM`

Fetch recent exam results for a specific link and test combination. Use CLASSMARKER_GET_ALL_GROUPS_LINKS_EXAMS first to obtain valid link_id and test_id values. This endpoint returns paginated results based on finishedAfterTimestamp for efficient incremental data retrieval. Supports up to 200 results per request.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Number of results to return; default 200; maximum 200. |
| `link_id` | integer | Yes | Unique identifier of the link. Obtain via CLASSMARKER_GET_ALL_GROUPS_LINKS_EXAMS action. |
| `test_id` | integer | Yes | Unique identifier of the test/exam. Obtain via CLASSMARKER_GET_ALL_GROUPS_LINKS_EXAMS action. |
| `finishedAfterTimestamp` | integer | No | UNIX timestamp to return only results finished after this time. Defaults to 2 weeks ago if not provided. Must be < 3 months old. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Test Details

**Slug:** `CLASSMARKER_GET_TEST_DETAILS`

Retrieves detailed information for a specific test (exam) including its name and all assignment contexts. Returns a list of groups and/or links where the test is assigned, with their IDs, names, and URL identifiers. Use when you need to find where a specific test is deployed or to get the complete deployment context for a test. Returns 'no_results' status if test ID doesn't exist.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `test_id` | integer | Yes | Unique identifier of the test (exam) to retrieve. Returns the test name and all contexts (groups/links) where this test is assigned. Use LIST_TESTS to discover available test IDs. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get User Details

**Slug:** `CLASSMARKER_GET_USER_DETAILS`

Tool to retrieve detailed information about a specific user. Use after you have the user's ID and need the full user profile.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `user_id` | integer | Yes | ID of the user to retrieve |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Question Categories

**Slug:** `CLASSMARKER_LIST_CATEGORIES`

Retrieves all question categories organized in a hierarchical structure. Returns parent categories with their nested sub-categories. Use this to browse available categories before creating questions or filtering content.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Certificates

**Slug:** `CLASSMARKER_LIST_CERTIFICATES`

Tool to list all certificates. Use when you need to retrieve all certificates available in the account.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Questions

**Slug:** `CLASSMARKER_LIST_QUESTIONS`

Retrieve a paginated list of questions from your question bank. Returns up to 200 questions per page. Use the optional 'page' parameter to navigate through multiple pages. Each question includes type, content, points, options, correct answers, and metadata.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number to retrieve; defaults to 1 if omitted. Each page returns up to 200 questions. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Recent Results For Groups

**Slug:** `CLASSMARKER_LIST_RECENT_RESULTS_FOR_GROUPS`

Retrieve recent exam results for all groups in your ClassMarker account. Returns results from the last 2 weeks by default, or from a specified timestamp (must be within 3 months). Use this to fetch user performance data including scores, pass/fail status, and certificates.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Number of results to return; default 200; maximum 200. |
| `finishedAfterTimestamp` | integer | No | UNIX timestamp to return only results finished after this time. Defaults to 2 weeks ago if not provided. Must be < 3 months old. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Recent Results for Links

**Slug:** `CLASSMARKER_LIST_RECENT_RESULTS_FOR_LINKS`

Retrieves recent test results from ALL links accessible to your API key. Returns results completed after a specified timestamp (defaults to 2 weeks ago). Supports pagination for large result sets (max 200 per request). Use the next_finished_after_timestamp from the response for subsequent requests to fetch newer results without duplicates. Ideal for syncing or monitoring exam completions across all your test links.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Number of results to return; default and maximum is 200. Set lower to reduce payload size. |
| `finishedAfterTimestamp` | integer | No | UNIX timestamp to return only results finished after this time. Defaults to 2 weeks ago if not provided. Must be < 3 months old. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Users

**Slug:** `CLASSMARKER_LIST_USERS`

Tool to list all users. Use when you need to retrieve every user in your account after confirming authentication.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Webhooks

**Slug:** `CLASSMARKER_LIST_WEBHOOKS`

Tool to retrieve all configured webhooks. Use when you need to programmatically list your webhook configurations.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Sub-Category

**Slug:** `CLASSMARKER_PUT_CATEGORY`

Tool to update an existing sub-category. Use when you need to rename or move a sub-category after confirming its IDs.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `category_id` | integer | Yes | ID of the sub-category to update |
| `category_name` | string | Yes | New name for the sub-category |
| `parent_category_id` | integer | Yes | Parent category ID for the sub-category (can be used to move the sub-category to a different parent) |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update an existing parent category

**Slug:** `CLASSMARKER_PUT_PARENT_CATEGORY`

Tool to update an existing parent category. Use after confirming the parent category ID.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `verify_only` | boolean | No | If true, only validates parameters without updating the category |
| `parent_category_id` | integer | Yes | ID of the parent category to update |
| `parent_category_name` | string | Yes | New name for the parent category |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Question

**Slug:** `CLASSMARKER_PUT_QUESTION`

Updates an existing question in the ClassMarker question bank. IMPORTANT CONSTRAINTS: - Cannot change the question_type of an existing question (must match original) - random_answers is only valid for multiplechoice and multipleresponse types - grade_style is only valid for multipleresponse type - options and correct_options are required for multiplechoice, multipleresponse, and truefalse - essay questions cannot have options, correct_options, or grade_style Set verify_only=True to validate changes without applying them.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `points` | integer | Yes | Points awarded for a correct answer. |
| `options` | object | No | Map of option letters (A-J) to {'content': text}; required for choice and truefalse types. |
| `question` | string | Yes | The question text. |
| `category_id` | integer | Yes | Category identifier for this question. |
| `grade_style` | string ("partial_with_deduction" | "partial_without_deduction" | "off") | No | Grading style for multipleresponse type only. |
| `question_id` | integer | Yes | ID of the existing question to update |
| `verify_only` | boolean | No | If true, payload is validated without updating; returns status 'verified'. |
| `question_type` | string ("multiplechoice" | "multipleresponse" | "truefalse" | "essay") | Yes | Question type - MUST match the original question's type (cannot be changed during update). Options: multiplechoice, multipleresponse, truefalse, essay. |
| `random_answers` | boolean | No | Whether to randomize the order of options (only valid for multiplechoice and multipleresponse types). |
| `correct_options` | array | No | List of letters for correct options; single value for multiplechoice/truefalse, multiple allowed for multipleresponse. |
| `correct_feedback` | string | No | Optional feedback message for correct answers. |
| `incorrect_feedback` | string | No | Optional feedback message for incorrect answers. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |
