We have a Rest API written in C# and I need to investigate a good approach to automate the tests. There are 2 ways to automate API tests:

GUI tool (e.g. SoapUI)

Programmatic approach, using some test framework

What are the Cons and Pros for each approach ? For Programmatic approach, is it important for the tests to be written in the same language as the code, or it could be written in a scripting language, e.g. Python ?

In a similar case, we went with writing our own very light weight framework.
Reasons are:

We were not using many of the features of Soap UI, so just to make Restful calls, Soap UI is an overkill

The paid version was costly for our need; extending the free version needed Groovy skills - Groovy was not a language our team was familiar with

Soap UI projects did not integrate well with GitHub. The XML nature of the project file always created merge conflicts and we couldn't tell what has changed

We ended up writing a very light weight framework in NodeJS and kept the data in JSON files. If your teams are heavily invested in the SmartBear suite, it makes sense to go with Soap UI / a tool from the suite.