Publishing is what makes a simulation reachable by learners. A simulation is either a draft or published, and only a published simulation opens from its learner link or inside a course. Publishing is available on every plan, to any member of the workspace that owns the simulation.
Draft and published
A new simulation starts as a draft. The simulation editor shows the current status next to the simulation's name, and the button beside it reads Publish for a draft and Unpublish for a published simulation.
- A draft cannot be opened by learners. Its learner link shows a not-found message, described later on this page. To try a draft yourself, use the Test stage of the editor.
- A published simulation opens from its direct link and from every place you have embedded it.
Publishing uses the simulation as it was last saved, so select Save Changes before you publish.
The link does not change when you unpublish and publish again, so links and embeds you have already handed out start working again.
Publish a simulation
Select Publish in the editor. While the request runs the button reads "Publishing…". When it succeeds, the status changes to published and the editor shows "Simulation published successfully!". Each publish is also recorded in the simulation's version history.
Two things are checked before a simulation goes live.
A voice simulation needs a voice
If voice is turned on for the simulation and no character voice has been picked, publishing stops with "Could not publish" and the message "Pick a character voice in the Simulation section of the Design stage before publishing." Pick a voice, save, and publish again.
The content check
Publishing runs an automated content check on the text you wrote for the scenario: the character's name, description, pronouns and instructions, the scenario, the learner's role, behavior triggers, evaluation criteria and deductions with their scoring guidance and rating levels, custom variables (names, triggers and values), end conditions and the mood trigger.
The check is built for workplace practice. It allows difficult or confrontational characters, sensitive professional topics such as firing someone or delivering bad news, and conflict or emotional intensity used for training. It blocks a scenario designed to:
- produce sexual or romantic content
- train people in fraud, scams or illegal activity
- promote hate speech or harassment as the goal, as opposed to a character trait used for training
- impersonate a real, specific public individual
What you see when the check does not pass:
- The content is rejected. The simulation stays a draft. The editor shows "Could not publish" with a message that starts "This simulation could not be published:" and gives the reason. Edit the content the reason points to, save, and publish again.
- The content is too long to check. When the checked text adds up to more than 20000 characters, publishing is refused and the reason asks you to reduce the length of the scenario fields.
- The check is unavailable. If the check itself cannot run, the simulation is not published. The reason reads "Content moderation is temporarily unavailable. Please try again in a moment." Nothing is wrong with your content: publish again after a short wait.
- The simulation changed during the check. If the simulation is saved again while the check is running, the changed content is checked again before anything goes live. If it keeps changing, publishing stops. The editor shows "Could not publish" and the Publish overview shows an error, both with the message "The simulation was edited while it was being reviewed. Please publish again."
A publish can also succeed with a notice. If the character's pronouns do not match the gender label of the selected voice, the simulation is published and the editor shows a "Heads up" notice saying so, which you can act on or ignore. If the simulation has voice on and its voice setup could not be updated with the published content, the "Heads up" notice says so and tells you to save the Simulation section of the Design stage to try again. See Setting up voice for a simulation or coach.
Unpublish a simulation
Select Unpublish in the editor and confirm. The editor asks first: "Learners lose access to its link and embeds until you publish again. Your content is kept and can be republished any time." The simulation then goes back to draft, with no content check. Learners can no longer open its link or its embeds until you publish again. A learner who opens the link in the first few seconds after you unpublish may still get in. Your content and settings are kept. The unpublish is recorded in the simulation's version history.
Publish and Unpublish do what the button says even if the page is out of date. If someone else already published the simulation while your page still showed it as a draft, selecting Publish leaves it published.
The Publish stage and its channels
The Publish stage of the simulation editor lists the ways to deliver the simulation. Each way is a channel shown as an expandable card. A card for sharing a private review link sits above the channels.
| Channel | What the card gives you | Details |
|---|---|---|
| Web | The direct link for a full-screen, standalone simulation | The direct share link section below |
| Storyline 360 | The Web Object address, the list of variables to create in Storyline, and the JavaScript trigger | Storyline web object setup and Storyline variables |
| Rise 360 | An embed snippet with an adjustable height, plus LMS reporting steps | Rise 360 |
| Use with Claude Design | Two text blocks to paste into an AI-built HTML app so it can embed the simulation and report a score | Hosting and SCORM Wrap for wrapping the result |
| LMS Standalone | A downloadable SCORM or xAPI package | LMS packages: SCORM and xAPI reporting |
What the channel switches do
Storyline 360, Rise 360 and LMS Standalone each have a switch. Turning a switch on opens the card and shows that channel's setup content. A card that is switched off shows "Turn on to configure." Web and Use with Claude Design have no switch and are always available.
The switches record which channels you use for this simulation, so the editor opens the right cards next time. They are saved with Save Changes, like other edits. They do not turn delivery on or off for learners: whether a link, embed or package works depends only on whether the simulation is published.
LMS Standalone is available on these plans: Core, Team, Enterprise. On other plans the switch is replaced by a plan badge, and the card can still be expanded to read what the channel does. On an eligible plan, the card asks you to publish first if the simulation is still a draft.
The direct share link
The Web card shows the link and a Copy URL button. When voice is turned on for the simulation, the card shows two links, labelled Text variant and Voice variant.
A learner who opens the link sees the simulation on its own page:
- On a computer, the simulation appears as a centered card on a page background. On a phone, it fills the screen.
- While the simulation loads, the learner sees its loading screen, unless the loading screen is set to invisible.
- Colors, sizes and the page background come from the simulation's appearance settings. See Appearance and branding. If the simulation has a start screen, it shows before the conversation. See Start screen.
The embed addresses on the other channel cards fill the course frame instead of showing the centered card.
Link previews
When the link is pasted into a chat app or social post, the preview shows:
- a title made of the simulation's name followed by a note that it was created with devlin.ai
- the description "Try this simulation created with devlin.ai."
- a dark preview image with the simulation's name and the devlin.ai wordmark
The preview uses only the simulation's name. It does not include the character, the scenario or any other content. For a simulation that is not published, or a link that matches no simulation, the preview is generic and the image reads "AI Simulation".
Previews are cached by devlin.ai and by the apps that display them, so a renamed or unpublished simulation can keep its old preview for a while.
What learners see when a simulation is not published
A learner who opens the link of a draft, an unpublished simulation, or a link that matches no simulation sees the message "Simulation not found or not available." with a Retry link. This is the same in the direct link and inside a course. After you publish, the learner can select Retry or reload to start.
The Publish overview
Publish → Overview lists everything in the active workspace that can be published, drafts included. It has a Simulations section and a Coaches section, each with a count, plus a Hosted projects section when the workspace has hosting. Archived items are not listed.
Each simulation or coach row shows the name, a status badge, and:
- Publish or Unpublish. Publishing a simulation from here runs the same checks as the editor. On success you see a confirmation that its link is live. On failure you see an error naming the item with the reason, for example the content check's message.
- For published items, the learner link with Copy link and a button that opens it in a new tab. Drafts show no link.
- Publish settings, which opens the item's own Publish stage.
Unpublishing from the overview asks you to confirm first, with the same message as the editor.
To find an item, use the Search by name box, the All, Published and Drafts filter, and the sort menu. Items are listed most recently edited first unless you sort by name. A long section shows its first items with a View all link for the rest. The plus button in a section header starts a new simulation or coach; in the Hosted projects section it opens the Hosting tab. Sections can be dragged into a different order.
Hosted projects are always live, so their rows have no Publish or Unpublish button. They show a Live badge, Copy link, a button that opens the project in a new tab, and Manage, which opens the project in the Hosting tab. Hosted projects and the other tabs of this page are covered in Hosting and SCORM Wrap.
Publishing from an AI tool
An AI tool connected through the MCP server and AI tool connectors can do two things here:
- Publish or unpublish a simulation (
set_publish_state). The tool must confirm the call explicitly, because the change affects live learners. Publishing goes through the same voice and content checks, and a rejection comes back to the tool with the reason. If the workspace requires in-app approval for live changes, the call records a change request for an owner or admin to approve in the app instead of applying it. After a publish is applied, the result includes the live learner link. The tool cannot publish an archived simulation. - Get the share link (
get_share_link). The tool receives the standalone link, the voice link if it is a voice simulation, and whether the simulation is still a draft.