Use Content › Import to upload a question bank. The ingest engine diffs against what you already have: new, modified, unchanged, or removed (soft-deprecate when you apply a full replace).
Supported files
- CSV with a header row
- JSON array of question objects (same fields as CSV columns)
Domain codes in the file must match domains that already exist on the tenant.
Header aliases (CSV)
Any of these names work (spaces, underscores, and case are ignored):
| Field | Accepted headers |
|---|---|
| External id (optional) | id, externalId, questionId |
| Domain code (required) | domain, domainCode, pillar |
| Type (required) | type, questionType |
| Cognitive tier | cognitiveTier, tier |
| Scenario | scenario, miniScenario |
| Prompt (required) | prompt, question |
| Options | options |
| Correct keys | correctAnswer, correctKeys, answer |
| Explanation | explanation, standardRationale, rationale |
| Distractor rationales | distractorRationales |
| Exam trap note | examTrapNote, trapNote |
Options DSL
Prefer a semicolon list of key:label pairs:
a:Relaxed display;b:Threat display;c:Neutral
Or a JSON array: [{"key":"a","label":"Relaxed display"},...].
Correct keys
Comma-separated option keys, for example a or a,c.
Distractor rationales
Semicolon key:text pairs, or a JSON object. Keys should match wrong options you want to explain.
Question types
Use the same type strings as the editor: multiple_choice, multi_select, true_false, sequencing, hotspot, build_list, matching, numeric_entry, short_answer, and case-set variants when configured.
Apply safely
- Upload and review the preview counts.
- Confirm domain codes match.
- Apply. Absent questions in a full-file apply are soft-deprecated, not hard-deleted.
Need a walkthrough? hello@korlea.com.