Commands
Every command, what it changes, and which ones change what visitors see.
Only media generate spends credits, after an estimate and approval. Publishing,
rollback, unpublish, site deletion, and domain changes affect what visitors see.
Other writes edit the draft or workspace. Read-only commands change neither.
Use atelier201 help <group> <command> --json for precise inputs and outputs.
The generated coverage reference maps each capability to REST,
CLI, and MCP, with reasons for transport-specific exceptions.
Account
atelier201 account # workspace, plan, scopes of this credential
atelier201 credits # balance and every grant
atelier201 usage --from 2026-01-01 # credit usage over a periodSites
atelier201 sites list
atelier201 sites create "Maison Dupont" --slug maison-dupont --locale fr --link
atelier201 sites get
atelier201 sites rename "Maison Dupont Boulangerie"
atelier201 sites delete # asks you to type the slug; --confirm <slug> in a scriptsites create starts from the Atelier201 starter and builds it once. A deleted site
goes offline at once and is removed within minutes, so run atelier201 site pull
first if you may need it.
A project folder
atelier201 site link --site <id> # tie this folder to a site
atelier201 site pull # the draft's files, here
atelier201 site push --message "New menu" --build --waitsite push replaces the draft with the folder as one history entry. It skips
node_modules, dist, .astro, .git, .env files and keys, and whatever your
root .gitignore lists, 50 MB at most. It refuses to overwrite changes made on the
site since your last sync (site pull first, or --force), and site pull
refuses to overwrite a file you changed locally.
Content
atelier201 content model
atelier201 content list blog
atelier201 content get blog hello-world
atelier201 content save blog hello-world --data entry.json --body hello.md
atelier201 content delete blog hello-world
atelier201 content singleton business
atelier201 content save-singleton business --data business.json
atelier201 content set business:/hours/2/close "18:00"
atelier201 content set business:/seats 12 --as number
atelier201 content replace "Open 9 to 5" "Open 9 to 6"
atelier201 sites apply plan.json
atelier201 media place business:/hero/image --query "bakery counter with fresh bread" --alt "Our counter"Read content model first. Every write is checked against it. --expect <hash>
saves only if the entry still has the hash you read, and --create-only refuses
to overwrite.
Files, history and changesets
atelier201 files list --under src/content
atelier201 files read src/pages/index.astro
atelier201 files search "opening hours"
atelier201 files commit --message "Update the menu" --put src/pages/menu.astro=menu.astro
atelier201 history list
atelier201 history compare --to <revision>
atelier201 history restore <revision>
atelier201 changesets open "Add a gallery page"
atelier201 changesets stage <changeset_id> --put src/pages/gallery.astro=gallery.astro
atelier201 changesets commit <changeset_id>files commit is one history entry. --expect <path>=<hash> refuses the whole
change, with exit 6, if that file changed since you read it. A changeset does the
same over several calls and stays open for 10 minutes. history restore adds a new
entry that matches an earlier one, and erases nothing.
Media
atelier201 media list
atelier201 media upload photo.jpg --alt "A loaf of bread"
atelier201 media delete media/photo.jpg
atelier201 media stock search bakery counter morning light
atelier201 media stock import pixabay 1234567 --alt "Croissants on a bakery counter"
atelier201 media models
atelier201 media generate --model p-image --estimate "a sunlit bakery counter, flat illustration"
atelier201 media generate --model nano-banana "a sunlit bakery counter, photo, no text" --alt "A bakery counter"
atelier201 media generation <generation_id> --waitStock search and import are free. media generate spends credits: it shows the
exact price and asks first (--yes accepts it, and is required when there is no
terminal), and it needs the media:generate permission, which atelier201 auth login
does not request unless you add it with --scope.
Build and preview
atelier201 builds start --wait
atelier201 builds list
atelier201 builds get <build_id>
atelier201 builds log <build_id>
atelier201 previews create --days 7
atelier201 previews list
atelier201 previews revoke <preview_id>
atelier201 analytics --period 7dbuilds start --wait waits up to 5 minutes. It exits 0 when the build of what
you asked for is ready, and exits non-zero with the end of the build log when
it fails. One build runs at a time per site: an earlier version still running is
waited out first.
Publish
atelier201 publish review # which build, blockers, nothing changes
atelier201 publish # the newest ready build, asks first
atelier201 publish --build <build_id>
atelier201 publish history
atelier201 publish rollback --publication <id>
atelier201 publish unpublishpublish, publish rollback and publish unpublish show what changes and ask
first. In a script, pass --yes. Each reads the state first and sends the
generation it read, so a publish by someone else in between is refused with exit
6 instead of overwritten.
Domains
atelier201 domains list
atelier201 domains add www.example.com # prints the DNS records to create
atelier201 domains check <domain_id>
atelier201 domains address <slug>
atelier201 domains main <domain_id>
atelier201 domains remove <domain_id>A custom domain needs a paid plan. See Domains.
Before anybody has signed in
atelier201 site push --guest --name "Maison Dupont"It needs no account. It puts the folder online as a demo and prints two links: the demo, and a private link to give only to the owner so the site becomes theirs. See Guest sites.
Manuals
atelier201 skills list
atelier201 skills get create-siteThe manuals Atelier201’s own assistant works from: read the one that covers your job
before you start it. They need no sign-in. get prints Markdown on a terminal and
the JSON object (with body) when piped or with --json.
Escape hatches
atelier201 api GET /sites
atelier201 api POST /sites --data '{"name":"Maison Dupont"}'
atelier201 doctor
atelier201 mcp
atelier201 feedback send --problem "..." --situation "..." --expected-solution "..."atelier201 api reaches any endpoint, including one added after your CLI version, so
a new capability never has to wait for a release. atelier201 doctor checks
connectivity, credentials, version and clock skew. atelier201 mcp bridges stdio to
the MCP server for clients that cannot speak HTTP.