The System.schedule method uses your user time zone. So, ideally, you should set your time zone to CST first, or you'll have to calculate the difference. Once you do that, you run the method as:
System.schedule(jobName, '0 30 0 ? ? *', scheduleInstance);
0 Hours (12 AM in 24 hour form)
? Every Day
? Every Month
* Any day of ...
There are many possible alternatives, depending on your circumstances.
If your API has a synchronous callout that will wait until the order is complete, you can set the timeout to 120 seconds on the callout, thus eliminating the need to do any theatrics.
You can use an apex:actionPoller to call the server every 30 seconds.
There are many, many ways to automate it. You can subscribe to an app like GearSet to schedule automations, you can set up a CI/CD (Continuous Integration/Continuous Delivery) system to run tests on a schedule, you can use the basic core features of Windows or Linux systems to run a Windows Task or Cronjob, deploy a container to Heroku or AWS, etc, or you ...