You can start a station through API call (using either /cm or /cr command) but starting a program is currently not supported. As mentioned above, the work-around is to call /jp to get program data (specifically station’s run times) and then issue a /cr to run stations according to any chosen program. This is how the app implements the ‘start this program manually’ feature.
I agree it’s useful to add API support to start a program, and will consider this for the next firmware.
Actually starting a program is currently supported by using buttons (long press B3). This exists because often people want landscapers to be able to start a program on the controller using buttons without having to give them web access to the controller.