Does Druid have any kind of API spec that clients can be implemented against?

No, but on the query side the SQL API only has one endpoint and a relatively straightforward request/response format. Here’s a bit of context.