Claude API Reseller Platform Setup: A Practical Guide
What "reselling" Claude API access actually means
If you searched for this, you're probably trying to build a product on top of Claude and let your own customers consume it — through API keys, seats, or usage-based billing — without each of them needing their own Anthropic account. That's a legitimate and common architecture, but "reselling" is the wrong mental model for most builders. You're not reselling raw access to Anthropic's API; you're building a metered, billed, access-controlled layer in front of it, and your customers interact with your layer, not Anthropic's console.
That distinction matters because Anthropic's terms restrict pure pass-through resale of raw API keys. What you can build — and what most successful "Claude reseller" setups actually are — is a product: your own API keys, your own usage limits, your own billing, with Claude doing the inference underneath. The rest of this guide covers how to set that up technically, step by step.
The components of a working setup
Whether you build this yourself or use an existing layer, every Claude-backed platform needs the same five pieces:
- API key issuance — each customer or app gets its own key, scoped to your platform, not Anthropic's raw key.
- Request proxying — your backend forwards requests to Claude, injects your Anthropic credentials, and returns the response.
- Usage metering — token counts per key, per customer, per billing period.
- Rate limiting and quotas — per-plan limits so one customer can't exhaust your Anthropic quota.
- Billing — mapping usage to invoices, seats, or subscription tiers.
Building all five from scratch is a multi-week project even for an experienced backend team, mostly because of the streaming and tool-use edge cases, not the happy path.
Option 1: Build it yourself
A minimal self-built proxy looks like this:
// Pseudocode: your platform's proxy endpoint
app.post('/your-api/v1/messages', async (req, res) => {
const customerKey = req.headers.authorization;
const customer = await lookupKey(customerKey);
if (!customer || customer.quotaExceeded) {
return res.status(429).json({ error: 'quota_exceeded' });
}
const response = await fetch('https://api.anthropic.com/v1/messages', {
method: 'POST',
headers: {
'x-api-key': process.env.ANTHROPIC_KEY,
'anthropic-version': '2023-06-01',
'content-type': 'application/json',
},
body: JSON.stringify(req.body),
});
await recordUsage(customer.id, response.headers);
response.body.pipe(res); // careful with streaming here
});
This works for a prototype, but you'll quickly need: per-customer key hashing and revocation, streaming support (SSE passthrough), tool-use message handling, retry logic, cost tracking per model, and a dashboard your customers can actually read. That's the part that takes real engineering time, and it's exactly the layer most teams underestimate.
Option 2: Use an existing API layer and build your product on top
If your goal is to ship a product fast rather than own the infrastructure plumbing, you can skip building the proxy, metering, and billing layer yourself and start from an API that already has it.
SubToAPI turns Claude access into a standard HTTPS API with its own application keys (sub_live_...), streaming, tool use, and usage metadata built in. In a reseller-style setup, you use SubToAPI as your inference layer and build your customer-facing product — accounts, seats, your own billing — on top of it. You're not managing raw Anthropic credentials or writing a proxy; you call one endpoint and get usage data back per request.
curl https://api.subtoapi.app/v1/messages \
-H "Authorization: Bearer $SUBTOAPI_KEY" \
-H "content-type: application/json" \
-d '{
"model": "claude-sonnet-4",
"max_tokens": 1024,
"messages": [
{ "role": "user", "content": "Summarize this support ticket in 2 sentences." }
]
}'
Each response includes usage metadata you can log against your own customer IDs, which is the core of any billing layer. For a working example end to end, see the quickstart and the messages endpoint docs.
Designing the customer-facing layer
Once you have a reliable backend (self-built or via SubToAPI), the reseller-style product itself needs:
- Tiered plans mapped to request volume or token budgets, not raw Anthropic pricing — your margin lives in this translation.
- Team seats if you're selling to companies rather than individual developers.
- A dashboard showing usage per key so customers trust your metering.
- Streaming support for chat-style UIs — see streaming docs if you're routing through SubToAPI.
- Tool use if your customers need Claude to call functions or retrieve data — covered in the tools docs.
If you're evaluating cost structure for your plans, SubToAPI's own tiers (Solo at €9, Team at €19/seat, Scale at €49/seat) are a useful reference point for how to price a seat-based layer on top of API usage — see pricing.
A realistic rollout sequence
- Decide whether you're building a vertical product (e.g., a legal-document assistant) or a horizontal API reseller (general-purpose Claude access with your own branding). The former is easier to defend commercially.
- Pick your inference layer — self-built proxy or an existing API like SubToAPI. Start a free trial if you want to prototype without setting up Anthropic billing first.
- Build key issuance and quota enforcement before you build the dashboard. Customers notice billing bugs immediately; they tolerate a plain UI.
- Add streaming once the non-streaming path is stable and metered correctly — streaming usage accounting is where most teams introduce billing bugs.
- Launch with one pricing tier, not three. Add tiers once you have real usage data to size them against.
questions
Can I legally resell raw Anthropic API keys to my customers? No — reselling raw, unmodified API access typically violates standard API terms of service. The compliant pattern is to build your own metered, branded layer in front of Claude and let customers use your keys, not Anthropic's.
What's the fastest way to set up a Claude-backed API without building a proxy myself? Use an existing API layer that already handles key issuance, streaming, tool use, and usage metadata, such as SubToAPI, and build your billing and UI on top of it rather than the proxy infrastructure.
How should I price a reseller-style plan if I don't own the underlying API costs directly? Base pricing on request volume or seat count rather than trying to pass through raw token costs — it's simpler for customers to understand and gives you margin to absorb usage variance across customers.