Skip to content

Import & export

Everything you put into Flagpost comes back out. Three mechanisms cover the range from “move my challenges” to “move my whole install”.

Bulk challenge import & export (ctfcli YAML)

Section titled “Bulk challenge import & export (ctfcli YAML)”

Challenges travel as a zip of ctfcli-format directories — the same format the CTFd ecosystem uses, so existing challenge repositories drop straight in.

  • Export (challenge_edit) — one <slug>/challenge.yml per challenge plus its attachment files. Regex flags round-trip; static flag plaintexts are omitted (the platform stores only hashes) — keep your authoring repo as the source of truth for those.
  • Import (challenge_create, 50 MB cap) — additive: existing titles are skipped, never overwritten. Categories are created as needed, tags are unioned into the competition vocabulary, hints/files/state come along, and prerequisites are resolved by title in a second pass. Static flags supplied in the YAML are hashed on the way in, so authoring → import is lossless. The top-level connection_info key (a challenge’s live-service address) now round-trips with real ctfcli/CTFd bundles too — it was dropped on import before v1.5.0, a data-loss fix for CTFd migrators.

An instanced challenge’s deployment spec — image, ports, exposure, flag mode, and the resource guardrails — round-trips through both ctfcli import/export and the platform backup, so an instanced challenge moves between installs intact. Live instances themselves are runtime state and are never exported. See Challenge instances.

Field-by-field details: ctfcli YAML format.

Migrating from CTFd? Export your challenges with ctfcli (or use your existing ctfcli-format challenge repo), zip the challenge directories, and import. Moving your whole event, not just the challenges? See Switching from another platform.

Cloning deep-copies a competition’s configuration — settings, categories, challenges (including flags), hints, attachments, closed surveys, module state — into a fresh competition with a clean slate (no participants, scores, tickets, rules, or audit; schedule cleared, new invite code). It’s the fastest way to re-run last year’s event. See Competitions.

Admin → Site settings offers a full-fidelity, section-selectable backup of the whole install — site settings, users, roles, competitions, automations, audit log — as one versioned JSON document.

Import is additive: it creates what’s missing and never modifies or deletes. Details, semantics, and the sensitive-data warning: Backup & restore.