Praxicraft

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.

GEThttps://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
NameTypeRequiredDescription
cursorstringoptionalOpaque pagination cursor — pass the value from `next` to fetch the next page
page_sizeintegeroptionalResults per page, max 100 (default: 20)
Response Fields
FieldTypeDescription
iduuidTask UUID
titlestringTask title
descriptionstringInternal description
case_typestringcoding | sql | multiple_choice
difficultystringeasy | medium | hard
pointsintegerScore weight of this task
time_limit_minutesinteger|nullPer-task time limit in minutes
questionstringThe question text (Markdown supported)
optionsarray|nullMCQ answer choices (multiple_choice type only)
allow_multiplebooleanWhether multiple MCQ answers are allowed
languagestring|nullProgramming language for coding tasks
starter_codestring|nullPre-filled code stub for coding tasks
expected_outputstring|nullExpected output used for automated evaluation
rubricstring|nullScoring rubric for manual grading
created_atISO 8601When 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"
    }
  ]
}
POSThttps://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
NameTypeRequiredDescription
titlestringrequiredTask title
descriptionstringrequiredInternal description
questionstringrequiredThe actual question text (Markdown supported)
case_typestringrequiredcoding | sql | multiple_choice
Response Fields
FieldTypeDescription
iduuidNew task UUID
titlestringEchoes the title
Example Response
JSON
{
  "id": "new-uuid",
  "title": "My New Task"
}
GEThttps://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
NameTypeRequiredDescription
iduuidrequiredTask UUID
Response Fields
FieldTypeDescription
iduuidTask UUID
titlestringTask title
questionstringQuestion text (Markdown)
case_typestringcoding | sql | multiple_choice
Example Response
JSON
{
  "id": "e21a...",
  "title": "Custom Algorithm 1",
  "question": "### Implement Quicksort...",
  "case_type": "coding"
}
PATCHhttps://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
NameTypeRequiredDescription
iduuidrequiredTask UUID
Request Body
NameTypeRequiredDescription
titlestringoptionalNew title
questionstringoptionalNew question text
Response Fields
FieldTypeDescription
iduuidTask UUID
titlestringUpdated title
Example Response
JSON
{
  "id": "e21a...",
  "title": "Updated Title"
}
DELETEhttps://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
NameTypeRequiredDescription
iduuidrequiredTask UUID
Example Response
JSON
HTTP/1.1 204 No Content

Need help integrating?

Email support@praxicraft.com

Get your API key