Depending on your needs, it sounds like there are two different general approaches you could take.
1) The device could publish its health status regularly, as datapoints in a "status" stream that you create. You can check the current value of the "status" stream at any time, or see the history of the "status" stream over time. This would be a good way to have your device report its status regularly without being asked to do so.
2) If you prefer a request/response style of status reporting, the Commands API would be a good option. The trick is that your device must be continously receiving and/or polling the API for commands to process. Then you can send a custom command at any time, and your device will receive it. One of those commands could be a "report_status" command. When your device receives this command, it would respond with the status results in the "response_data" when it marks the command as "processed".