Authentication
Partner requests are authenticated with an API key: a client id that identifies your account, and a secret that proves it's you. You manage both through the reseller panel.
Getting a key
Your client id is assigned when your reseller account is created — it does not change when keys are issued or revoked. To get a secret, open the reseller panel, go to API keys, and create one. The dialog shows your client id alongside the new secret.
rsc_. Your
account's stable machine identity — exists from account
creation, independent of key history. Safe to log.rss_. We store
only a hash — if you lose it, revoke the key and issue a new
one.Sending credentials
Two forms are accepted; they are equivalent, so use whichever your HTTP client makes easier. Dedicated headers are checked first:
X-Client-Id: rsc_AbCdEfGhIjKlMnOpQrStUv
X-Client-Secret: rss_1a2b3c4d5e6f7a8b9c0d1e2f_XyZ...Or HTTP Basic, with the client id as the username and the secret as the password:
Authorization: Basic base64(clientId + ":" + secret)When authentication fails
Any rejected credential returns 401 with an empty body — no JSON, nothing to parse. The response is deliberately identical whether the client id is unknown, the secret is wrong, the key was revoked, or your account is suspended, so nobody can probe for valid ids.
Rotating a secret
Several keys can be active at once under the same client id, so you can roll a secret without downtime. Revocation takes effect on the very next request.
// 1. Create the new key, old one keeps working
POST /v1/billing/resellers/me/api-keys
// 2. Deploy the new secret to your integration
// 3. Confirm nothing still uses the old key, then revoke it
DELETE /v1/billing/resellers/me/api-keys/{apiKeyId}The panel shows a last used timestamp per key — check it before revoking, to be sure nothing is still authenticating with the old secret. You can hold up to five active keys at a time; at the cap, creating another fails rather than silently displacing one.
Scope of a key
A key carries exactly the rights your reseller account already has — no more, and there are no per-key permissions to configure. It can check your balance, issue licenses and generate promo codes. It cannot manage other keys, change your account, or see anything belonging to another partner.
Which account is being charged comes from the credentials themselves, never from the request body, so there is nothing you can send that would spend someone else's quota.
