I have seen this error when API has been enabled for all the Orgs in question. All I need is a read-only data dump, for which I figured the ("Read your data via the web") Permissions is the one that needs to be granted during OAuth. When this permission was omitted in the App spec, SalesForce API threw a "API_DISABLED_FOR_ORG" error. After changing the spec and asking for the Web part to be granted, this error goes away for some orgs.
Other orgs still throw the same error. Which leads me to believe this error is misleading, either the first situation was a different error or the Org has actually disabled API access, (which I don't need, just need read-only data access). Yet, when asked, during OAuth, the User actually agreed to supplying the data. I have this as scope: "id api web refresh_token", for an authenticated OAuth user.
What gives? What am I missing here? Can't seem to get a consistent process flow, data and in this case a proper error message from SalesForce.