Help center · For AI teams

Export formats, raw JSONL, preference pairs and Harbor tasks

What each line of the raw JSONL export contains for each task type, how DPO preference pairs are made and the majority rule behind them, the layout of a Harbor package and how to run it, and how to pull only new answers with since.

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:

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:

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.

Updated Nov 11, 2026.