Skip to main content
POST
Create assessment

Authorizations

Authorization
string
header
required

Organisation API key created in Assess → Developer → API Keys. Format: Bearer ct_live_<your-key> (live) or Bearer ct_test_<your-key> (test). Optional per-key CIDR allowlists return 403 IP_NOT_ALLOWED.

Body

title
string
required
Minimum string length: 1
description
string
time_limit_minutes
integer
passing_score
integer
team_id
string<uuid> | null
pool_mode
boolean
assignment_size
integer | null
shuffle_strategy
string
Minimum string length: 1
tag_quotas
object
pool_settings
object
enforce_fullscreen
boolean
copy_paste_disabled
boolean
session_recording_enabled
boolean
screen_recording_enabled
boolean
webcam_recording_enabled
boolean
notify_on_completion
boolean
violation_review_threshold
integer

Response

id
string<uuid>
required
read-only
title
string
required
Maximum string length: 200
slug
string
required
Maximum string length: 100
Pattern: ^[-a-zA-Z0-9_]+$
task_count
integer
required
read-only
invitation_count
integer
required
read-only
enforce_fullscreen
boolean
required
read-only
copy_paste_disabled
boolean
required
read-only
session_recording_enabled
boolean
required
read-only
screen_recording_enabled
boolean
required
read-only
webcam_recording_enabled
boolean
required
read-only
created_at
string<date-time>
required
read-only
updated_at
string<date-time>
required
read-only
team
object | null
required
description
string
status
enum<string>
Available options:
draft,
active,
archived
time_limit_minutes
integer | null
Required range: 0 <= x <= 2147483647
passing_score
integer
Required range: 0 <= x <= 2147483647
pool_mode
boolean

Each candidate is assigned a random subset of cases from the pool

assignment_size
integer | null

How many cases each candidate gets (must be <= total cases in assessment)

Required range: 0 <= x <= 32767
shuffle_strategy
enum<string>

How cases are selected from the pool

Available options:
random,
balanced,
tag_balanced,
tag_difficulty_balanced,
track_balanced
tag_quotas
any

Per-tag or tag:difficulty counts for tag-balanced strategies, e.g. {"python": 10, "sql": 10} or {"python:easy": 5, "sql:hard": 3}

pool_settings
any

Advanced pool options: tag_quota_mode, assignment_seed_mode, display_order_mode, mandatory_case_ids, shuffle_display_order

violation_review_threshold
integer

Total proctoring violations at or above this count require org integrity review.

Required range: 0 <= x <= 32767
livemode
boolean

True for live hiring. False for isolated test-mode assessments.

Last modified on September 5, 2026