Update v0.5.1 -- Added the option for a Clock in the HeartBeat Macro, Uptime Measurement, and Run Interval History (Thanks Martijn S. ) The clock can be toggled on in the help settings, just like Latency: Time is shown in 24-hour format, there is an hour offset setting in the configuration. No, I'm not going to support Daylight Savings Time or 12-hour clocks. =D Uptime is shown in the Histogram output at the bottom with the other statistics: The format is Days:Hours:Minutes:Seconds. Optimistic, I know. =D History is shown by running the command: !api-heartbeat --history And shows the start and stop times, as well as the duration for runs of the sandbox: The top left date is the oldest recorded start date, the top right is the current date. Date dividers are based on start times. New configuration settings: Show Time -- toggles the clock on and off. Hour Offset -- adjusts for your timezone. Interval History Size -- how many measurements to keep for the history page. APIHeartBeat has been completely rewritten with a new method of keeping tabs on the API! It creates a macro which you can add to your macro toolbar. On an interval, it updates the macro so that you know the API is running. First it has a spinner, which is a sequence of icons that runs in a cycle to show that the API is running. Next is a latency measurement that gives you a rough idea of how busy the API is. The latency is measured in milliseconds. There are 3 different spinners which can be configured in the help: Additionally, you can turn off the latency if you just want a small icon showing you activity: If you click the macro button, or run: !api-heartbeat --histogram You will be presented with a histogram of activity in the API. It keeps the last 600 measurements from the current running sandbox. There isn't much data available to the API, but this should give at least a general feeling for how busy things are. If nothing else, you can look at it while running various scripts to see if they seem to have an impact. The two measurements are: Callback Latency (red) -- This is the number of milliseconds between calling setTimeout() with a 0 delay and receiving the callback. If there isn't much going on, it should be nearly instantaneous. If there are a lot of asynchronous tasks waiting (or the next async task isn't relinquishing control quickly), it will be higher. Interval Latency (green) -- This is a measure of how close the calls into APIHeartBeat are to the requested 1 second (or 200ms for Developer Mode) interval. If there is a lot going on in general (API commands running that aren't asynchronous or are blocking other work), it will be higher. These are kind of poor metrics really, but it's about all we've got. =D When APIHeartBeat starts up, it will issue a message to the GM letting them know the API has started and the Ready event has been issued: You can issue this event (and so can players) to check the API is running with: !api-heartbeat --check Developer Mode measures the API's activity every 200ms instead of every second. This puts a little more burden on the API, but gives better feedback about scripts while you're developing them. Generally, you'd want to leave this off while gaming, but perhaps turn it on while tinkering with scripts (both writing them and trying them out). Here's the Help: APIHeartBeat v0.5.0 APIHeartBeat provides visual feedback that the API is running. Commands !api-heartbeat [--help | --check | --histogram] --help -- Displays this help and configuration options. --check -- Displays a simple message to show that the API is running. --histogram -- Displays a histogram of the last 600 measurements as well as some statistical information about how the API has been running. Description APIHeartBeat creates a macro that is shared with all players. The title on the macro cycles through various images and data while the API is running. It is intended that players or the GM can add the macro to their macro bar allowing them to keep an eye on whether the API is running. Additionally, clicking the macro button with present data about the health of the API. Configuration options are also in the help: Link to the prior forum thread: <a href="https://app.roll20.net/forum/permalink/1567329/" rel="nofollow">https://app.roll20.net/forum/permalink/1567329/</a> This should be in the 1-click next week, or you can get it now from my repo. Git: <a href="https://github.com/shdwjk/Roll20API/blob/master/APIHeartBeat/APIHeartBeat.js" rel="nofollow">https://github.com/shdwjk/Roll20API/blob/master/APIHeartBeat/APIHeartBeat.js</a> Support my work on If you use my scripts, want to contribute, and have the spare bucks to do so , go right ahead. However, please don't feel like you must contribute just to use them! I'd much rather have happy Roll20 users armed with my scripts than people not using them out of some sense of shame. Use them and be happy, completely guilt-free! Disclaimer: This Patreon campaign is not affiliated with Roll20; as such, contributions are voluntary and Roll20 cannot provide support or refunds for contributions.