I've been trying to figure this out as I would love to take DreamCompute and offer it to those who wish to have "more than Shared Hosting" but a simple managed VPS kind of deal. There are some ideas to handle this. Right now, I'm just in the brainstorming phases of making this possible, but I certainly would love to do it too.
I don't think creating an instance via API is available at this time.
There are, however, several workarounds for this. Of course, you will have to have some knowledge of a language to incorporate the API.
The first one is the cheaper method, but you'd basically be putting people on a "shared cloud server", while the second one allows people to have their own slice of the pie, but will be more costly. Either way, you could probably figure out a way to churn a little profit.
You could also incorporate something like VestaCP or ZPanel and there are some Github repositories of people tweaking the code to allow web hosting client opportunities.
These are the possibilities in regards to DreamCompute and keeping it very basic:
1) Create an instance with 1 GB or more (you can always expand later) and use ServerPilot API to create a website on your instance. ServerPilot allows you to create as many servers as you wish. In other words, everyone would be sharing the same IP address, but have their own confined space, very similar to shared hosting. The only thing your customers would have to do is change their DNS. With this, you'd probably have to upgrade your ServerPilot plan to allow multiple users, which they can use to login with via SFTP, for security reasons. I'm sure there is a way to use the free plan and lock them into their own folder, but it probably requires a bit of advanced Linux Terminal knowledge.
2) Create several instances ahead of time at 512 MB - 1 GB or more and charge based on need or demand. You would obviously be paying for every instance you use, so DreamHost would be charging you for empty instances sitting there. However, this would give people their own cloud server. Then just do the same as above, using ServerPilot API.
To know how to assign your API to the instance, just create a text file or a database of the "next available" instance's IP address.
Keep in mind, this is if you wanted to automate it. It'd be much easier if you just took on clients of your own and did it manually for them and just used a service to charge them a monthly fee.
But if you were to automate it, you could certainly build your own control panel and if you kept it very basic.. it could definitely be something fairly straightforward and simple.
If this is too much trouble or work for you, than you would likely have to go with a reseller program with a different host.