---
title: "AI API reseller: how to resell model access on one key"
canonical: https://uplinkswitch.ai/blog/ai-api-reseller
generated: 2026-10-25T12:17:16.132Z
source: https://uplinkswitch.ai/blog/ai-api-reseller
base_url: https://api.uplinkswitch.com/v1
---

[Console](https://uplinkswitch.ai/console)

# AI API reseller: how to resell model access on one key, and how to check one

What an AI API reseller is, what OpenAI's and Anthropic's terms allow, three ways to resell on one prepaid key, the margin on one customer's month at live prices, and the five checks a buyer should run.

October 20, 2026·UplinkSwitch·[All posts](https://uplinkswitch.ai/blog)

An AI API reseller buys model access from a developer or a gateway and sells it on: as keys for its own customers, as prepaid credit, or as a product built on top. The question that decides whether the business stands up is not the price. It is whose terms the access sits under, and whether the customer can verify what they were sold.

This post covers both sides of the search. If you want to resell: what the developers' terms allow, three ways to do it on one prepaid account, the setup for a key per customer, and the margin worked on a real month from live prices. If you are buying from a reseller: the five things to check before the first top-up.

## What an AI API reseller is

The reseller sits between the model developer and the people who send requests. It holds the supplier relationship and the prepaid balance, issues keys or credit to its own customers, and bills them in whatever shape they need: a monthly plan, a per-message price, local currency, an invoice their accountant accepts.

Four kinds of operator do this today. Agencies that run chatbots or automations for clients and bill for the tokens. Communities, often on Discord, that sell members access to models for roleplay frontends such as SillyTavern or Janitor AI. Products that wrap a model in a workflow and sell seats. And regional operators who add local billing, invoices and support for a market the developer does not serve directly.

What they all need from a supplier is the same list: a key per customer with a hard spend cap, a model allowlist, usage per key they can export and bill from, a price under the developer's list so there is a margin, and proof of the model that answered so a customer complaint can be settled with a record instead of an argument.

## What the developers’ terms say about reselling

Both pages were read on 2026-10-19. The wording matters, so it is quoted.

-   **OpenAI.** The [OpenAI Services Agreement](https://openai.com/policies/services-agreement/) (updated December 1, 2025, effective January 1, 2026) says in section 3.1 that the customer “may not resell or lease access to its Account or any End User Account”, and in 3.3(g) that the customer will not “buy, sell, or transfer API keys from, to, or with a third party”. Section 2.2 grants the right to integrate the API into the customer's own applications and make those available to end users.
-   **Anthropic.** The [Commercial Terms of Service](https://www.anthropic.com/legal/commercial-terms) (effective June 17, 2025) say in D.4 that the customer may not “resell the Services except as expressly approved by Anthropic”. A.1 permits using the Services “to power products and services Customer makes available to its own customers and end users”.

The line is the same at both. A product you built, running on a key you hold, sold to your users: allowed. Their key, or access to their account, handed to someone else for money: not allowed without a reseller agreement. Every warning page about cheap resellers is about operators on the wrong side of that line, because when the developer closes the account, every customer downstream goes dark with it.

An UplinkSwitch key sits under [UplinkSwitch's own terms](https://uplinkswitch.ai/terms), with Uplink Switch LLC as the counterparty. Those terms make the account holder responsible for every request made with its keys, and they leave how the keys are used to the account holder. A key per customer, each with its own limits, is the setup the console is built for, and nothing in the terms is written against it.

## Three ways to resell on one prepaid account

|  | Who holds the account | Who is billed | What you earn |
| --- | --- | --- | --- |
| Keys you issue | You. One key per customer, each with its own limits. | You, per token, from your prepaid balance. | The difference between your price and what you charge. |
| Credit codes | Your customer, once they redeem the code. | Your customer, from the credit on the code. | What you charge for the code over its face value. |
| Referral link | Your customer, from their first sign-in. | Your customer, directly. | 10% of their top-ups for 12 months, as balance. |

Credit codes are gift-card packs: 1 to 50 cards of $10 to $500 in one checkout, redeemed once each at /gift. The referral share and the $5 welcome credit are on the referral program page.

Keys you issue is the reseller model proper, and the rest of this post is about it. Credit codes suit a shop that wants no exposure to a customer's usage: the customer redeems the code into their own account and the balance is theirs. The [referral program](https://uplinkswitch.ai/referrals) suits a community or a tool maintainer who would rather point people at the console than run billing at all.

## Set up a key per customer

1.  Sign in to the [console](https://uplinkswitch.ai/console) and top up. Credit is prepaid from $10 with no subscription, and each top-up locks the prices you pay for 30 days.
2.  Create a key named for the customer. The full key is shown once; that is the one thing you pass on. It can be paused, renamed or revoked later, and a revoked key stops within 60 seconds.
3.  Set a monthly spend limit on it. Settled charges plus open holds for that key in the current UTC month may not pass the limit, and a request over it is refused with `402 monthly_limit_reached`. The counter restarts on the first of the month, so the limit is the customer's plan.
4.  Set the model allowlist to what their plan includes. A request for another model returns `403 scope_denied`. An allowlist may name an alias instead of a model.
5.  Set an expiry if the plan is prepaid for a term, and a requests-per-minute or tokens-per-minute limit if you sell tiers of throughput. A limit hit returns a 429 with retry-after.
6.  Pin an alias for your product, for example `prod-chat`, to the model you serve today. Customers put the alias in their config; when you move everyone to a newer model you change the pin once, with no customer touching anything.

The customer gets two values and no other setup. Every model answers the OpenAI format, so any tool with a base URL field works; the Claude models also answer Anthropic's format and the Gemini models Google's.

shell

```
# What one customer receives: the base URL and the key you made for them
export OPENAI_BASE_URL="https://api.uplinkswitch.com/v1"
export OPENAI_API_KEY="sk-uplink-live-..."
```

Their first check lists the models their key may call, which is also how you confirm the allowlist took:

shell

```
curl https://api.uplinkswitch.com/v1/models -H "Authorization: Bearer $OPENAI_API_KEY"
```

Two more settings matter once you have more than a few customers. A key with a monthly limit can name a cheaper model from the same developer to answer with as it nears the limit, instead of being refused; the response says which model answered. And an org can have more than one sign-in: an owner, billing members who can top up, and members who manage keys and read usage but cannot touch billing.

## The margin, worked on one customer’s month

One customer sending 1,000 chat turns a day of 2,000 input and 500 output tokens, for 30 days: 30,000 requests. What that month costs at the developer's list price and here, and the room between the two, which is the most a reseller can charge at list before the customer would do better buying direct.

| Model | List in / out | Here in / out | Month at list | Month here | Room |
| --- | --- | --- | --- | --- | --- |
| [Claude Sonnet 5.5](https://uplinkswitch.ai/models/claude-sonnet-5-5) | $2.00 / $10.00 | $1.20 / $3.00 | $270.00 | $117.00 | $153.00 |
| [GPT-6.1 Sol](https://uplinkswitch.ai/models/gpt-6.1-sol) | $2.00 / $10.00 | $0.60 / $3.00 | $270.00 | $81.00 | $189.00 |
| [Kimi K3](https://uplinkswitch.ai/models/kimi-k3) | $3.00 / $15.00 | $0.90 / $4.50 | $405.00 | $121.50 | $283.50 |
| [DeepSeek V4 Pro 0813](https://uplinkswitch.ai/models/deepseek-v4-pro-0813) | $1.32 / $3.96 | $0.792 / $1.188 | $138.60 | $65.34 | $73.26 |
| [GLM 5.3](https://uplinkswitch.ai/models/glm-5.3) | $1.092 / $3.432 | $0.3276 / $1.0296 | $117.00 | $35.10 | $81.90 |

USD per million tokens, then USD for the month. Here is from the live catalog; list is the price on the developer's pricing page, with the read date on each model page. Cached input is not counted, and it bills at each model's cached rate when it applies.

On Sonnet 5.5 the month is $270.00 at list and $117.00 here, so a reseller charging list keeps $153.00 of it, and one charging 20% under list still keeps $99.00. Input is 40% under list and output 70% under.

Three things move the number in your favour over time. Each top-up locks the rates you pay for 30 days, and billing takes the lower of the locked and the live rate, so inside the window a price can only go down. Once all customers together pass a volume tier on a model in a month, its price drops for everyone, and the catalog shows the tiers and the current discount. And an org-specific price is available on request through the [contact page](https://uplinkswitch.ai/contact) once your volume justifies it.

## What your customers can verify

A reseller's hardest conversation is the customer who thinks they were served a smaller model than they paid for. Here that conversation has records.

-   **A receipt per answer.** Every non-streamed response carries an `x-uplink-receipt` header: a signed statement of which model answered, what was billed, and SHA-256 hashes of the request and the response. Any request's receipt is also at `GET /v1/requests/{id}/receipt`, and [/statements/verify](https://uplinkswitch.ai/statements/verify) checks one in the browser against the public key, with no account and nothing uploaded. Your customer can verify it themselves.
-   **A daily model check.** Every model gets the same fixed test prompt once a UTC day. The verdicts are public on the [real-model check](https://uplinkswitch.ai/proof) and as JSON, and the test prompt is published.
-   **A signed statement per month, with totals per key.** Each month has a statement: a JSON file signed with Ed25519 and a CSV with one row per request, with the CSV's hash inside the signed payload. The JSON carries totals by model and by key, so one file gives you every customer's month to invoice from, and a customer who asks can be shown their rows.
-   **A request id on everything.** Every response, errors included, carries `x-uplink-request-id`. `GET /v1/requests/{id}` returns that request's input, cached and output tokens and its charge, within about a minute of the request.

shell

```
# The signed receipt for one request, by the id on its response
curl https://api.uplinkswitch.com/v1/requests/<x-uplink-request-id>/receipt \
  -H "Authorization: Bearer $OPENAI_API_KEY"

# Last month's signed statement, with totals per key
curl https://api.uplinkswitch.com/v1/statements/2026-10 -H "Authorization: Bearer $OPENAI_API_KEY"
```

The console's usage page filters the same rows by key, model and outcome and exports them as CSV, which is the quicker path when one customer disputes one day.

## Billing rules to plan around

-   **One balance, every key.** All keys on the account draw on the same prepaid balance. When it runs out, every key returns `402 insufficient_balance` until a top-up. Turn on auto top-up with a saved card and a threshold, or at least the low-balance email, which goes out when the balance falls under about a day of recent spend.
-   **New-account limits.** A new account has a request-rate ceiling for its first 24 hours and a spend cap until its first payment settles. Plan the first customer's go-live after that, not on sign-up day.
-   **What is not billed.** A request that fails before the model, or that the model does not answer, is not charged. An answer the model refuses is not billed, judged by each format's own refusal signal, and a media generation that fails is refunded in full. Those rules are yours to pass on to customers as they are.
-   **What is final.** Top-ups are not refundable, so size them to the month. A payment refunded or disputed with the card issuer is reversed in the ledger and keys may be paused until the balance is positive. Gift-card packs do not show as balance and open no price lock.
-   **Media on the same key.** Image, video and speech models bill per image, per second or per generation, with the price fixed when the request is accepted. Finished files are served for 30 days; a customer who wants to keep one downloads it.

## How to check an AI API reseller before you buy

The buyer's side of the same query. Five questions, each with the answer you should be able to find on the reseller's own pages, and where the answer is here.

1.  **Whose terms is my contract under?** If the reseller is passing on a developer's key against that developer's terms, your access ends when theirs does. Look for a legal entity and a terms page that names it. Here: [Uplink Switch LLC](https://uplinkswitch.ai/terms), a Wyoming limited liability company.
2.  **Can I verify the model that answered?** Ask for a per-request record you can check without trusting the reseller's word. Here: the signed receipt on every non-streamed answer, the verifier, and the public daily check with its method published.
3.  **Are prices shown next to list, with a date?** A discount only means something against a stated list price. Here every model page shows the developer's list rate with the date it was read, and the [price index](https://uplinkswitch.ai/pricing-index) has every model's percent under list as JSON and CSV.
4.  **What is billed when the model fails or refuses?** Most APIs bill a refusal like any other answer. Here a failed request is not charged, a refusal is refunded, and a failed media generation is refunded in full.
5.  **What happens to my balance on a refund or dispute?** Read the payment section of the terms before the first top-up. Here: top-ups are not refundable, a disputed payment is reversed in the ledger, and keys may be paused until the balance is positive.

## Questions

### 

The one your customers ask for, bought where the terms let you hand it on. On one UplinkSwitch key that is every model on the list: the Claude, GPT and Gemini models answer their own SDK formats, and all of them answer the OpenAI format, so one customer config covers whichever model they pick. See [the model list](https://uplinkswitch.ai/models).

### 

Not OpenAI's keys or account access. The OpenAI Services Agreement (read 2026-10-19) forbids reselling or leasing access to the account and forbids buying, selling or transferring API keys with a third party. Building a product on your own key and selling that product is allowed. Reselling model access as such needs a supplier whose terms are written for it.

### 

If the API is your own product, put a key system, usage metering and a price in front of it; marketplaces do this for a share of revenue. If what you sell is access to models, the three routes above cover it: keys you issue under your account, prepaid credit codes, or a referral link that pays you 10% of top-ups for 12 months. See [the referral program](https://uplinkswitch.ai/referrals).

### 

Per million tokens, with a different rate for input, cached input and output. The table above prices one customer's month on five models at the developer's list and here. The full list, with the percent under list for every model, is on the price index. See [the LLM API price index](https://uplinkswitch.ai/pricing-index).

### 

Not one that stays free. Tokens cost the reseller money on every request, so a free tier is either rate-limited to a small model or is a loss the reseller recovers elsewhere. Here there is no free tier at the moment: credit is prepaid from $10, and a request that fails or that the model refuses is not billed.

### 

Several ranking pages list a dozen or more. Whatever list you read, check each one the same way: whose terms your contract sits under, whether you can verify the model that answered, whether prices are shown next to list with a date, and what happens to your balance on a refund or dispute.

### 

No code is needed to buy. The code people search for is a referral code: when someone signs up through a link carrying one, the account that owns the code earns 10% of that account's top-ups for 12 months, and the new account gets $5 on a first top-up of $20 or more.

Get a key in the [console](https://uplinkswitch.ai/console): prepaid from $10, no subscription, 257 models on the list, and each top-up locks its prices for 30 days.

[UplinkSwitch](https://uplinkswitch.ai/about)[Follow](https://x.com/uplinkswitch)

---

## Get the newsletter
