This page is public.
First published at canonset.com.
Approved answers export in three formats: raw JSONL for every task type, preference pairs (dpo) for preference projects, and a Harbor package (harbor) for coding-task projects. Known-answer tasks, rejected answers and answers still in review are never included; the export buttons and the API give the same files.
Raw JSONL (format=raw)
One line per approved answer, in task order:
task_id,task_type,input: the task as you uploaded it.answer: the expert's answer, in the task type's fields.annotator: the expert's per-project pseudonym, never a name.review_score: the reviewer's score, 1 to 5.time_spent_sec: the expert's time, measured on our server.billed_minutes, on hourly projects: the measured time, rounded up to the minute and capped.submitted_at,approved_at: ISO 8601 times.
Coding tasks add checks, {status, language, runner, fail_to_pass, pass_to_pass, checked_at}: the sandbox's verdict, with the tests that fail on the starting code and pass on the reference solution, and the tests that pass on both. They also add pass_at_k, {model, effort, setting, attempts, solved, pass_rate, measured_at}: how often a named model solved the task from the statement and starting code alone; null until measured, only where you allow that provider's models to read the project's answers.
Environment tasks add environment_task, the task in the engine's own format, and checks with the reference solution's score and each reward hack's.
Preference pairs (format=dpo)
One line per task with a clear majority: {task_id, prompt, chosen, rejected, votes, agreement}. chosen is the response the experts preferred, votes how many experts answered, and agreement the winning share. The majority rule: one side must win more than half of all votes. Ties, and tasks where neither side has more than half, are left out.
Harbor tasks (format=harbor)
For coding-task projects only (other task types get a 400): a zip of Harbor task directories (schema 1.4), one per approved answer, with a README. Each directory:
instruction.md: the title and problem statement the agent is told, and where the code is (/app).task.toml: the task's name, the time limits, and metadata: the project's codename, our task and answer IDs, the expert's pseudonym and difficulty rating, the review score, the approval and export dates, the sandbox's verdict andpass_at_kwhere measured.environment/: a Dockerfile and, inapp/, the starting code. The runtime is the one our sandbox verified the task in:python:3.12-slimwith pytest, ornode:24-slim.tests/:test.shlays the hidden tests infiles/over/app, runs them as the sandbox did, and writes1or0to/logs/verifier/reward.txt.solution/:solve.shlays the reference solution infiles/over/app;notes.md, where there is one, is the expert's note on it.
With Harbor, harbor run -p <task directory> -a oracle checks the reference solution; name an agent instead of oracle to run it. Without Harbor: build environment/, start a container from it with tests/ at /tests and solution/ at /solution, run bash /solution/solve.sh and then bash /tests/test.sh, and read /logs/verifier/reward.txt.
Nothing in the package names your company, your project's own name or the expert. The public coding samples ship as the same package at https://canonset.com/samples/coding.
Pulling only new answers
Add since=<ISO 8601 time> to the export endpoint to get only answers approved after that time; keep the largest approved_at you have seen and pass it next time. For preference pairs, since returns the pairs of tasks with a newer approval, built over all of that task's votes.
Every export response carries a Link header, rel="describedby", to the datasheet; see The datasheet and The Canonset API.
Questions: support@canonset.com.
In these publicationsCanonset help center
Licence: All rights reserved
Comments



