The two prices and why input dominates
The rates are $0.15 per 1M input tokens and $0.50 per 1M output tokens. In per-token terms that is $0.00000015 per input token and $0.0000005 per output token. Output tokens cost a little over three times as much, but a chatbot sends far more input than it receives.
The reason is that a chat API is stateless. Each request must include the persona and the conversation so far. Turn 30 does not cost the same as turn 1, because it carries 29 earlier exchanges along. That is why any estimate of nsfw chatbot api pricing based on the length of one reply comes out too low.
Failed or refused requests are not charged. Credit is prepaid and never expires, so there is no monthly minimum to cover.
Assumptions for the examples
Real numbers depend on your characters, so here are explicit assumptions you can replace with your own.
- Persona and notes: 800 tokens, sent on every turn.
- User message: 60 tokens on average.
- Model reply: 200 tokens on average.
- Each completed turn adds 60 + 200 = 260 tokens of history.
Token counts for your own traffic are in the usage field of every response. Replace the guesses above with a week of real data before you set prices.
One conversation of 40 turns
At turn k, the input is the persona (800), the new user message (60) and the 260 tokens of history from each earlier turn. That is 860 + 260 × (k − 1) tokens.
| Turn | Input tokens | Output tokens |
|---|---|---|
| 1 | 860 | 200 |
| 10 | 3,200 | 200 |
| 20 | 5,800 | 200 |
| 40 | 11,000 | 200 |
Add the input over all 40 turns: 40 × 860 = 34,400, plus 260 × (0 + 1 + … + 39) = 260 × 780 = 202,800. Total input is 237,200 tokens. Total output is 40 × 200 = 8,000 tokens.
- Input: 237,200 × $0.15 / 1,000,000 = $0.03558
- Output: 8,000 × $0.50 / 1,000,000 = $0.00400
- Total: $0.03958, about $0.040 per conversation, or about $0.001 per turn
A $20 top-up covers about 505 conversations of this shape ($20 / $0.03958).
Long histories: why a cap matters
The input term grows with the square of the number of turns, because every new turn resends everything before it. Take a 200-turn story with no trimming:
- Input: 200 × 860 = 172,000, plus 260 × (0 + 1 + … + 199) = 260 × 19,900 = 5,174,000. Total 5,346,000 tokens.
- Input cost: 5,346,000 × $0.15 / 1,000,000 = $0.8019
- Output: 200 × 200 = 40,000 tokens = $0.0200
- Total: about $0.82
The last turn in that story sends 800 + 60 + 260 × 199 = 52,600 input tokens. That fits the 100,000-token window, but you are paying for it every turn. Now cap the history so no request sends more than about 6,000 tokens of past turns:
- Each turn sends at most 800 + 6,000 + 60 = 6,860 input tokens, so 200 turns is at most 1,372,000 tokens.
- Input cost: 1,372,000 × $0.15 / 1,000,000 = $0.2058
- Output cost: $0.0200
- Total: about $0.23, roughly 72% less than the uncapped story
The cost of a cap is memory. Pair it with a rolling summary so important facts are kept. The article on NSFW LLM integration covers how requests are built, and the docs list the parameters.
Cost per active user
Convert conversations into users. Suppose a typical active user chats 20 days a month and finishes one 40-turn conversation per day. That is 20 conversations at $0.03958, or $0.79 per user per month in model cost. A heavier user with three such conversations a day on 20 days costs about $2.37.
| Profile | Conversations per month | Model cost per month |
|---|---|---|
| Light, 5 conversations | 5 | $0.20 |
| Typical, 1 a day for 20 days | 20 | $0.79 |
| Heavy, 3 a day for 20 days | 60 | $2.37 |
Those figures cover the model only. Hosting, payment fees and support are separate lines in your own budget.
To price your own product, multiply the per-user figure by your user count and add a margin for retries, long-tail heavy users and the cost of the summary calls you may run. For a pilot of 100 typical users, 100 × $0.79 = $79 a month. Watch the top end, not the average: a few users who chat all day can cost more than a hundred light ones.
Comparing with subscription apps
Subscription chatbot apps sell a flat monthly price. That is a different product: you get an interface, characters and often images, and you do not write any code. If you are a user, an app can be simpler. If you are building a product, an API turns the question into margin per user.
To compare, take any app's monthly price from its site (check their current pricing) and divide by $0.79. If a subscription costs $10 a month, a typical user in the example above uses about 8% of that in model cost, leaving the rest for your servers, payments and profit. A very heavy flat-rate user is where per-token pricing is safer for you: you only pay for what is used.
Heavy chatters are the other case. A user sending 100 turns a day at the 6,860-token cap costs roughly 100 × 30 × (6,860 × $0.00000015 + 200 × $0.0000005) = 3,000 × $0.001129 = $3.39 per month.
Ways to lower the bill
Once you know where the tokens go, three changes have the largest effect, in this order.
- Cap the history. Shown above: about 72% off a 200-turn story.
- Shorten the persona. Cutting it from 800 to 400 tokens saves 400 × 40 = 16,000 input tokens in a 40-turn chat, which is 16,000 × $0.15 / 1,000,000 = $0.0024 per conversation. Small per chat, but across 10,000 conversations a month it is $24.
- Shorten the replies. Asking for about 150 tokens instead of 200 saves 50 × 40 = 2,000 output tokens, or $0.001 per conversation. It also slows history growth, since each turn adds fewer tokens to the log.
Do not cut quality to save a few thousandths of a cent. A reply that is too short makes users send more messages, and each message resends the whole prompt. Measure cost per satisfied session, not cost per request.
Last, set a max_tokens ceiling as a safety net. It is optional, but an unbounded reply from a rambling character can run to thousands of tokens. At $0.50 per 1M output tokens that is still cheap, though it adds up when a bug repeats it.
Paying and planning your credit
Top up any whole amount from $20 to $500, with a bonus of +5% from $50, +10% from $100 and +15% from $200. A $100 top-up gives $110 of credit. Payment is in crypto only: USDT on TRC20 or USDC on Base.
Watch your balance with the X-Balance-USD header on each response, or call GET /v1/balance. See the pricing page for the current table, and get an API key to try it. New users can claim $0.50 of trial credit with one click, valid for 7 days, no card needed: that is enough for about 12 conversations of the 40-turn shape above.
Sizing the first top-up is simple arithmetic. For the 100-user pilot above, a $100 top-up becomes $110 with the +10% bonus, which covers about 1.4 months ($110 ÷ $79). A $50 top-up becomes $52.50. Keep a reserve, because a viral week costs more than a quiet one, and set an alert on X-Balance-USD so you can top up before credit runs out.
