Can I directly initiate HTTP requests through DAML?

Not at the moment, no.

The Daml language is currently focused on interacting with the ledger, either from within a participant (contract choices) or from an external “reactive” mechanism (triggers), but in either case the only effects the language can produce is to either read from or write to the ledger.

If you need to bridge the outside world to your ledger, you’ll have to write code in a general purpose language and use either the gRPC API or the HTTP API.

You can use any language with generic gRPC bindings, or any language that can make HTTP calls (which is pretty much all of them). However, if you interact with values on the ledger, your code will need to know about the various record types defined and used by your contracts. To make this a bit easier on you, we provide language bindings and codegen for Java targeting the gRPC API as well as JavaScript bindings and codegen targeting the HTTP API (TypeScript compatible).