How do I register domain names programmatically?
Despite the unfortunate name, NameCheap.com have been really good. I've moved all my domains to them and I've found them to be the best registrar I've come used.
They also have an API (developer.namecheap.com), which is free to use - although you have to either have $200 or greater in your account, have spent $200 in the last two years, or have 20 domains in your account.
I've only just started with the API, but it seems pretty good so far.
www.opensrs.com charge a one-off $95 setup fee (which converts into $95 credit on the account). That's not quite what you asked for, but it is pretty low. You get access to a well documented, functional API. However you need to pay for domains by making a credit to your account, then buying the domain from there. I don't think there are any limits on how small this initial deposit can be.