A software vendor operates many businesses on one accessAll articles

A software vendor operates many businesses on one access

Anyone offering industry software integrates the API once and provides it to many businesses. This case shows how to do that without a shared key and without a shared quota.

Published: 2026-09-12Reading time: 4 mintapinomahub API & workflows
API & processesAPIVINERP & inventoryMarketplaces

A software vendor integrates the API into its ERP and enables it for forty businesses. With a shared key two problems appear at once: one business starting a bulk import slows everyone else down, and at month end nobody can say who caused which consumption.

A software vendor operates many businesses on one accessThe vendor’s master client — One contract, many businesses: separate keys, separate limits, separate usage. 1. Enable a partner (POST /client/partner-workspaces): A workspace with its key and a selected set of entitlements 2. Create a sub-user (POST /client/users): One dedicated access per business, with an initial key 3. Set the limits (PUT /client/users/{clientId}/rate-limits): A single business cannot burn through everyone else’s quota 4. Read the usage (GET /client/users/{clientId}/usage): Consumption and balance per business, the basis for on-charging 5. Sponsor the costs (PUT /client/sponsorship-grants/{grantReference}): The vendor explicitly grants a given business a sponsorship Every branch is its own decision. Sponsoring costs must be declared — it never happens silently.The vendor’s masterclientOne contract, many businesses:separate keys, separatelimits, separate usage.A software vendor operates many businesses on one accessEnable a partnerPOST /client/partner-workspacesA workspace with its key and a selected set of entitlementsCreate a sub-userPOST /client/usersOne dedicated access per business, with an initial keySet the limitsPUT /client/users/{clientId}/rate-limitsA single business cannot burn through everyone else’s quotaRead the usageGET /client/users/{clientId}/usageConsumption and balance per business, the basis foron-chargingSponsor the costsPUT /client/sponsorship-grants/{grantReference}The vendor explicitly grants a given business a sponsorshipEvery branch is its own decision. Sponsoring costs must be declared — it never happens silently.
Five independent branches of the same administration. Which you need depends on your business model.

The Hub’s administrative calls solve this by responsibility: the master client creates accesses, sets limits per access, reads usage per access and can explicitly sponsor costs. The five branches are independent — you do not need all of them.

SurfaceRoles
HubSoftware vendor, Platform and marketplace

What this case requires

  • A master client. The administrative calls require that your access may hold sub-users.
  • A mapping in your own system. The returned clientId has to point to the business on your side, otherwise the usage analysis is worthless.
  • A decision on the billing model. Does the business pay itself, or do you step in? Under a sponsorship the business’s own plan and balance pay first; only when neither carries the request does the sponsor step in — unless you release the choice with partnerTermsAllowed and the business opts for your terms.
  • Separate storage of the keys. One key per business only helps if it does not end up in a shared configuration.

The sequence

The table names the responsible call per stage and what exists afterwards. The reasoning for why a stage cannot be skipped follows below it.

The call chain of this use case
StageCallWhat exists afterwards
Enable a partnerPOST /client/partner-workspacesA workspace with its key and a selected set of entitlements
Create a sub-userPOST /client/usersOne dedicated access per business, with an initial key
Set the limitsPUT /client/users/{clientId}/rate-limitsA single business cannot burn through everyone else’s quota
Read the usageGET /client/users/{clientId}/usageConsumption and balance per business, the basis for on-charging
Sponsor the costsPUT /client/sponsorship-grants/{grantReference}The vendor explicitly grants a given business a sponsorship

Why each stage is needed

  1. Enable a partner. POST /client/partner-workspaces creates a workspace with its key and a selected set of entitlements. That is the route when a partner is to work independently rather than merely be a sub-account.
  2. Create a sub-user. POST /client/users creates one access per business with an initial key. Further keys for the same access are created by POST /client/users/{clientId}/keys; the contract does not define a call for revoking an individual key.
  3. Set the limits. PUT /client/users/{clientId}/rate-limits replaces an access’s limits. This stage is the actual reason for separate accesses: it stops a single bulk run from consuming everyone’s quota.
  4. Read the usage. GET /client/users/{clientId}/usage returns consumption and balance per business. That is the basis of any on-charging — and the only reliable way to explain consumption to a customer.
  5. Sponsor the costs. PUT /client/sponsorship-grants/{grantReference} grants a sponsorship actively. It never happens silently: whoever grants it does so with a call, and the recipient sees it.
Create an access for one business
curl -X POST \
  -H 'X-Api-Key: <MASTER_API_KEY>' \
  -H 'Content-Type: application/json' \
  -d '{"name":"Autoverwertung Beispiel GmbH","applicationLabel":"erp-connector","rateLimits":[{"endpointKey":"vin.vehicle","windowSeconds":60,"maxRequests":120,"isActive":true}]}' \
  'https://api.tapinomahub.com/client/users'

What you end up with

What remains is an integration built once and accountable per business: its own key, its own limit, readable consumption. The business starting the bulk import no longer slows anyone down.

Where to find this in the documentation

The binding field lists, error codes and sample responses live in this surface’s OpenAPI contract at docs.tapinomahub.com (tapinoma-hub). All use cases arranged by surface and role: overview of the use cases.

Frequently asked

When do I use a partner workspace instead of a sub-user?

The sub-user is an access under your administration. The partner workspace is meant for partners who work independently and are to carry their own entitlements.

Can I swap a key without locking the business out?

An additional key can be created for an existing access via POST /client/users/{clientId}/keys. The contract does not define a call that revokes an individual key.

Does the business see that I am carrying its costs?

Yes. Received sponsorships are retrievable by the recipient via GET /client/sponsorship-grants/received; if the sponsor has released the choice with partnerTermsAllowed, the recipient chooses the terms. A hidden sponsorship is not provided for.