Hi! Thanks for your question.
Our policies regarding the use of multiple API keys are intended to prevent the abuse of Twitter’s platform and services to circumvent rate limits. You can learn more about these rules at https://t.co/multikey and https://t.co/restricteduses.
In the case of on-prem/multi-instance software, we recognize that technical constraints (such as callback URLs) may inform the specific implementation you develop. However, the intent behind our policies remains the same: While your specific use case may require the use of multiple applications, you should take steps to ensure that they are centrally managed, and, in the case of our Premium/Enterprise APIs, are centrally billed. Whether a solution is on-prem or hosted, the use of multiple applications (including “whitelabeled” versions of a product) to attempt to circumvent rate limits or avoid the need to obtain Premium or Enterprise access, is prohibited.
The best approach in these cases is to use a single Developer account to register applications on behalf of your end users. For example, if Widgets Inc develops a product used by customers A and B, Widgets would need to register for a developer account and then register applications for each of customers A and B (under the central Widgets developer account). If you’re an Enterprise customer, your Enterprise account manager can work with you on implementing this correctly for products like the Account Activity API.
To be clear: Registering applications per-customer is only appropriate in instances where customers need access to products like the Account Activity API which provide authenticated, per-user information. It would not be permissible to register applications in order to, for example, provide search or analytics services (which should all be managed centrally using a single application).