Hello all, Today we've rolled out a new version of the API that's now available for all games. This new update adds support to API scripts for the sheet worker functionality that has been available for a while now for character sheets. So for example if you set the "Strength" value on the sheet, and that should update StrengthMod and your attack rolls, the API can now just update the one value and all the others will update accordingly. To use this new functionality, take advantage of these two new functions: setWithWorker(properties) This function works just like the current set() function, except when called on an Attribute object it will also cause the relevant sheet worker code to be executed by the API server, just as if a player had changed the value on the client using the character sheet. Example: getObj("attribute", "-KUI1fO2L7Jv0Y4AOSFK").setWithWorker({ current: "Cleric" }); Note: Although the sheet translation functionality is supported for sheet worker scripts, the current language for the API will always be assumed to be "English" currently. In addition to that, you can use the new function onSheetWorkerCompleted(function() { //do something here }); to register code that will only run after all sheet worker execution has finished for the current 'stack' of sheet worker calls. You can register the callback before you call the setWithWorker() function. Note that each callback you register will only run one time. This sheet worker functionality is intended to be used primarily by API scripts which are "companion" scripts to specific sheets, as opposed to general purpose scripts that are meant to be used by any type of game/system/sheet. In addition to the sheet worker functionality, we've made major overhauls to many parts of the API that were previously bottlenecks, in particular findObjs() should now be much faster if you're only looking for "indexed" properties such as the _type, _pageid, and/or _characterid of an object. So for example, the following search should now return nearly instantly: findObjs({_type: "attribute", _characterid: "-ABC123"}); findObjs({_type: "graphic", _pageid: "-ABC456"}); We've also fixed some outstanding bugs such as making the default attribute fetching for both rolling and the getAttrByName() functions match the client more closely. Also, I want to say a special "thank you" to Lucian, who has been very helpful in being a big tester of this new functionality and helping us discover bugs, slowdowns, etc. to get it all ready for everyone to enjoy. Let us know if you run into any issues with this new functionality. Thanks!