Just to clarify some stuff that isn't perhaps being made completely clear here. There are two completely separate types of scripts that you can create on Roll20. They are both written in Javascript but they serve different functions and have different capabilities: API scripts. These require a Pro subscription for at least the owner of the game they are used in. They run on Roll20's servers and can respond to a variety of events, such as chat messages, token movements, drawing on the canvas, etc. etc. They can manipulate characters and their attributes, but also graphics, pages, tables, decks etc. etc. Sheetworker scripts. These are included as part of a character sheet. They have a much more limited range of capabilities - they are primarily designed to listen for changes made to a character through the character sheet, and then calculate dependent values. For example in D&D they might update a character's Armor Class when you change their Dexterity attribute. You cannot manipulate items on the canvas or respond to changes made there, and you cannot directly interact with the chat window. These scripts are usually run in the user's browser. Free users can take advantage of these scripts it they are included in a "published" character sheet included in the game settings list, but as far as I am aware, you cannot write and test a new character sheet (with or without sheetworkers) without a Pro account - unless something has changed in this regard recently? Character sheets have no direct access to API scripts and they are in no way necessary to build a character sheet. Some character sheets do come with "Companion Scripts" that enhance their behaviour, however. In particular, it is common to have such a script make additional changes when a Roll Button is pushed on the sheet. For example, when you roll on attack from a sheet, a companion script might respond to the resulting chat output, detect that it was a ranged attack using ammunition, and decrement the number of pieces of ammo you have left. Sheetworker scripts can't do this because they only respond to changes in a character's attributes - not rolls made from the sheet or any chat message that may result. You can look at the 5e OGL character sheet made by Roll20 to see an example of a character sheet that uses sheetworkers. It also has a Companion Script so you can see the difference in its capabilities. As has been pointed out by others above, creating a character sheet that relies on a API script for basic function (as opposed to providing one for enhanced functionality) is not a great idea and unlikely to be accepted into the Roll20 repository.