Programmatically dial and connect calls?

Our current VOIP provider (that we’re moving away from) has an API we pass data to (name, phone number, etc) which calls a number where an agent answers and an attempt is made to connect the agent to a potential customer.

Is there similar functionality in FreePBX? Maybe with a module?