It seems the solution was to wait for like 24 hours for the option to show because I did not see it at first until the next day. The previous API i was using was fromt he store level
i located it on the menu Account > API Keys > Generate Key and give it the appropriate authorisation level you want to give it
Now the code works fine, and the array-to-string conversion was coming from the way I was printing the result from the request; I was supposed to call it like this:
$result = new Invoice(..., ...);
$result->getData(): // fix here