---
title: "Submit Public"
method: POST
path: "/api/coding-assessment/{magic_token}/submit"
tags: ["coding-assessment"]
---

# Submit Public

`POST /api/coding-assessment/{magic_token}/submit`

## Request

- Base URL: `https://api.ruzora.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.ruzora.com/api/coding-assessment/{magic_token}/submit`
- Auth: none declared

## Path parameters

- `magic_token` string, required

## Request body

- SubmitAssessmentRequest: POST /api/coding-assessment/{token}/submit payload. `code` carries the editor contents. It is REQUIRED for a coding assessment and ignored for a questions-only one — which of the two this token is cannot be known from the payload, so the service enforces it (409 "A coding assessment needs a code submission.") rather than the schema. `question_answers` maps question_slug to either: - str (text answer for short_text / long_text questions) - list[str] (selected choice values for single_choice / multi_choice) Required only if the assessment has a package; ignored otherwise. Empty answers persist with score 0.
  - `code` string
  - `question_answers` object
  - `telemetry` object, nullable
  - `pasted_code` string, nullable
  - `pasted_snippets` string[], nullable

## Response `200`

Successful Response

- SubmitAssessmentResponse: Sanitized — candidate-facing only. No score, no hidden-test info, no AI rubric. Recruiter sees the full picture via RecruiterAssessmentView.
  - `status` 'sent' | 'in_progress' | 'submitted' | 'graded' | 'expired' | 'errored', required
  - `visible_passed` integer, required
  - `visible_total` integer, required
  - `submitted_at` string, date-time, required

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/ruzora/apis/ruzora-candidate-crm-api.md) · [All operations](https://skmtc.dev/ruzora/apis/ruzora-candidate-crm-api/llms.txt) · [OpenAPI document](https://skmtc.dev/ruzora/apis/ruzora-candidate-crm-api/revisions/f9b8223f3ac4?raw)
