Assess API · v1
Custom Tasks
Manage your organization's private question library programmatically. You can create, list, update, and delete custom tasks using these endpoints.
GET
https://praxicraft.com/api/v1/public/cases/cases:readAuth: Bearer ct_live_…
List Custom Tasks
Returns all custom tasks created by your organisation. Paginated.
Query / Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| cursor | string | optional | Opaque pagination cursor — pass the value from `next` to fetch the next page |
| page_size | integer | optional | Results per page, max 100 (default: 20) |
Response Fields
| Field | Type | Description |
|---|---|---|
| id | uuid | Task UUID |
| title | string | Task title |
| description | string | Internal description |
| case_type | string | coding | sql | multiple_choice |
| difficulty | string | easy | medium | hard |
| points | integer | Score weight of this task |
| time_limit_minutes | integer|null | Per-task time limit in minutes |
| question | string | The question text (Markdown supported) |
| options | array|null | MCQ answer choices (multiple_choice type only) |
| allow_multiple | boolean | Whether multiple MCQ answers are allowed |
| language | string|null | Programming language for coding tasks |
| starter_code | string|null | Pre-filled code stub for coding tasks |
| expected_output | string|null | Expected output used for automated evaluation |
| rubric | string|null | Scoring rubric for manual grading |
| created_at | ISO 8601 | When the task was created |
Example Response
JSON
{
"next": "https://app.praxicraft.io/api/v1/public/cases/?cursor=cD0yMDI1LTA0...",
"previous": null,
"results": [
{
"id": "e21a...",
"title": "Custom Algorithm 1",
"description": "Tests the candidate's ability to implement an efficient sorting algorithm.",
"case_type": "coding",
"difficulty": "hard",
"points": 100,
"time_limit_minutes": 30,
"question": "### Implement Quicksort\n\nWrite a function...",
"options": null,
"allow_multiple": false,
"language": "python",
"starter_code": "def sort(arr):\n pass",
"expected_output": null,
"rubric": null,
"created_at": "2025-03-10T08:00:00Z"
}
]
}POST
https://praxicraft.com/api/v1/public/cases/create/cases:writeAuth: Bearer ct_live_…
Create Custom Task
Programmatically add a new question to your library.
Request Body
| Name | Type | Required | Description |
|---|---|---|---|
| title | string | required | Task title |
| description | string | required | Internal description |
| question | string | required | The actual question text (Markdown supported) |
| case_type | string | required | coding | sql | multiple_choice |
Response Fields
| Field | Type | Description |
|---|---|---|
| id | uuid | New task UUID |
| title | string | Echoes the title |
Example Response
JSON
{
"id": "new-uuid",
"title": "My New Task"
}GET
https://praxicraft.com/api/v1/public/cases/:id/cases:readAuth: Bearer ct_live_…
Retrieve Custom Task
Retrieves the full configuration of a specific custom task, including the question text.
Query / Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | uuid | required | Task UUID |
Response Fields
| Field | Type | Description |
|---|---|---|
| id | uuid | Task UUID |
| title | string | Task title |
| question | string | Question text (Markdown) |
| case_type | string | coding | sql | multiple_choice |
Example Response
JSON
{
"id": "e21a...",
"title": "Custom Algorithm 1",
"question": "### Implement Quicksort...",
"case_type": "coding"
}PATCH
https://praxicraft.com/api/v1/public/cases/:id/cases:writeAuth: Bearer ct_live_…
Update Custom Task
Updates specific fields of an existing custom task.
Query / Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | uuid | required | Task UUID |
Request Body
| Name | Type | Required | Description |
|---|---|---|---|
| title | string | optional | New title |
| question | string | optional | New question text |
Response Fields
| Field | Type | Description |
|---|---|---|
| id | uuid | Task UUID |
| title | string | Updated title |
Example Response
JSON
{
"id": "e21a...",
"title": "Updated Title"
}DELETE
https://praxicraft.com/api/v1/public/cases/:id/cases:writeAuth: Bearer ct_live_…
Delete Custom Task
Permanently removes a custom task from your organization's library.
Query / Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | uuid | required | Task UUID |
Example Response
JSON
HTTP/1.1 204 No Content