While there is an internal function on character objects, .showDialog() that does exactly this, it's not exposed to the API and also wouldn't help much. It needs to be triggered from within the user's browser to open an iframe there - firing it from the API would open the character sheet for the API "player" in their non-existent browser. The best you can do is a link as GiGs suggested - being able to automate it any further would essentially require Roll20 to allow an API script to open links on a user's screen without their action. That's a bit of a no-no for browsers - you wouldn't even need to write malicious code to accidentally open infinite popups on someone's PC and end the universe. This format should work: [Open my character](<a href="http://journal.roll20.net/character/-blahY0WJeka1_lYnM8w" rel="nofollow">http://journal.roll20.net/character/-blahY0WJeka1_lYnM8w</a>) When you create something with createObj it returns the new ID created, so pretty much just a simple: const newCharacterId = createObj ( 'character' , /* character data */ ); /* do some stuff with attributes or whatever */ sendChat ( `characterCreator` , `/w " ${ msg . who } " [Open New Character]( <a href="http://journal.roll20.net/character/" rel="nofollow">http://journal.roll20.net/character/</a> ${ newCharacterId } )` ); should do the trick. edit - roll20 rudely recoloured that link in the code. That should be orangey-brown stringiness.