Get API key

Uncensored VideoSora 2 API: Using Uncensored Text for Video Pipelines

Roleplay With AI: Free Trial Setup and Real Costs

If you want roleplay with ai free of per-message paywalls, the honest route is a small trial balance and a pay-per-token API. This article shows how far the trial goes, how to connect a chat front end, and what a turn really costs.

Updated

Stage with glowing speech bubbles fed by a stream of data, representing AI roleplay through an API

Key points

  • The $0.50 trial credit is enough for several hundred short roleplay turns, valid 7 days, no payment needed.
  • Any front end that accepts an OpenAI-compatible endpoint works: set the base URL, key and model uncensored.
  • Cost is driven by chat history length, not by reply length. Trim or summarise old turns.
  • Fiction and roleplay for lawful adults only. Nothing involving minors, ever.

What free means here

There is no unlimited free chat on this service, and it is better to say so up front. What you get is a trial balance: after you sign up with Google, or with an email and password, you can claim $0.50 of trial credit with one click on the API key page. It is one per person, it is valid for 7 days, and it needs no payment. The trial key runs with 2 concurrent requests and 60 requests per minute, which is plenty for one person chatting.

That sounds small, but tokens are cheap. Input costs $0.15 per 1M tokens and output costs $0.50 per 1M. A typical roleplay turn with an 8,000-token prompt and a 300-token reply costs $0.00135, so $0.50 covers roughly 370 turns. For many people that is a full evening or several short stories, enough to decide whether the setup suits them before any money is involved.

When the trial runs out, you top up from $20 in any whole amount up to $500. Credit never expires, failed or refused requests are not charged, and there is no subscription to cancel. This site takes crypto only: USDT on TRC20 or USDC on Base.

Pick a front end

The API only speaks text over HTTP. You still need something to hold your characters, your chat history and your prompt template. Three common choices:

  • SillyTavern. A local web app built for character chats, with lorebooks, personas and presets. It lets you add an OpenAI-compatible endpoint, which is exactly what this API is.
  • Another chat client that exposes fields for a custom OpenAI-compatible URL. Look for settings called custom endpoint, proxy or OpenAI-compatible.
  • Your own script. Fifty lines of Python give you full control over memory, prompts and cost. It is also the easiest way to see what you are actually sending.

If you are building an app and not just chatting, the same calls work from any OpenAI SDK. The quickstart in the docs lists the endpoints, headers and limits in one place.

Connect SillyTavern in five steps

  1. Create an account, open the API key page, claim the trial credit and copy your key.
  2. In SillyTavern, open the plug icon (API Connections) and set the API type to Chat Completion.
  3. Choose the source named Custom (OpenAI-compatible).
  4. Paste https://api.uncensoredvideo.cc/v1 into the custom endpoint field, your key into the key field, and type uncensored as the model ID.
  5. Press Connect. A green status means the request to GET /v1/models or a test message succeeded.

Menu labels shift between SillyTavern versions, so match the idea and not the exact wording. Before you blame the app, test the key from a terminal:

curl https://api.uncensoredvideo.cc/v1/chat/completions \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"uncensored","messages":[{"role":"user","content":"Reply with the word ready."}]}'

If curl works and the app does not, the problem is in the app's fields: a missing /v1, a stray space in the key, or the wrong model name.

Or write a small chat loop

A script is a good way to learn what roleplay costs, because you can print the token usage on every turn. This one keeps a persona prompt, trims history to the last 20 messages and streams the reply.

import os
from openai import OpenAI

client = OpenAI(
    base_url="https://api.uncensoredvideo.cc/v1",
    api_key=os.environ["API_KEY"],
)

system = (
    "You are Mara, a dry-witted smuggler pilot in a space-opera story. "
    "Stay in character, write in third person, keep replies under 150 words."
)
history = []

while True:
    user = input("> ")
    history.append({"role": "user", "content": user})
    messages = [{"role": "system", "content": system}] + history[-20:]
    stream = client.chat.completions.create(
        model="uncensored",
        messages=messages,
        temperature=0.9,
        top_p=0.95,
        max_tokens=300,
        stream=True,
        stream_options={"include_usage": True},
    )
    reply = ""
    for chunk in stream:
        if chunk.choices and chunk.choices[0].delta.content:
            piece = chunk.choices[0].delta.content
            reply += piece
            print(piece, end="", flush=True)
        if chunk.usage:
            print("\n[tokens in/out: %d/%d]" % (chunk.usage.prompt_tokens, chunk.usage.completion_tokens))
    history.append({"role": "assistant", "content": reply})

Watch the usage line. After a few dozen turns you will see the input count climb while the output stays flat. That is the number to manage.

Write a character prompt that holds up

Most roleplay problems start in the first prompt, not in the model. A good character prompt is short and specific. Name the character, give a voice in one or two sentences, describe the setting, and say how long replies should be. Then stop. Every extra rule is a token you pay for on every turn, and a long list of dos and don'ts tends to be followed less well than a clear example.

Compare two ways to describe the same pilot. The first says she is brave, funny, loyal and clever. That tells the model nothing it can act on. The second says she answers questions with a joke first and the truth second, never explains her past unless asked twice, and swears mildly when a ship part breaks. The second gives the model habits to repeat, and habits are what readers experience as personality.

Add one short example exchange of three or four lines. Models copy rhythm very well, so an example fixes length, tense and point of view without a separate rule. If you write in second person, show it. If you want narration in italics, show that too. Put the example in the system prompt or as the first messages of the history.

Finally, decide who controls the other characters. If you want the model to play a whole cast, say so. If you want it to play only one role, say that it must never write your character's words or actions. A stop sequence on your character's name backs this up at the API level.

What a roleplay turn costs

Each request resends the system prompt, the character description and the history, so input tokens grow as the chat gets longer. Here is the arithmetic for a 300-token reply, which costs 300 x $0.50 / 1,000,000 = $0.00015 on its own:

Prompt sizeInput costCost per turnPer 100 turnsTurns on $0.50
4,000 tokens$0.0006$0.00075$0.075about 666
8,000 tokens$0.0012$0.00135$0.135about 370
20,000 tokens$0.0030$0.00315$0.315about 158
50,000 tokens$0.0075$0.00765$0.765about 65

The reading is simple. A tight 8,000-token prompt is about 5.7 times cheaper than a 50,000-token one for the same number of turns. At the 8,000-token level, a $20 top-up pays for about 14,800 turns. Larger top-ups add a bonus: +5% from $50, +10% from $100 and +15% from $200, so $100 gives $110 of credit. See the pricing page for the full table.

Keep long stories cheap and coherent

The context window is 100,000 tokens, prompt plus reply, so you can load a lot. You rarely should. Long prompts cost more and give the model more text to lose track of. A few habits help:

  • Summarise, then drop. Every 20 turns, ask the model for a 150-word summary of the story so far, keep it in the system prompt, and delete the old messages.
  • Keep the character sheet short. A page of rules the model ignores is a page you pay for on every turn.
  • Cap the reply. max_tokens is optional, but a limit stops runaway replies and keeps pacing tight.
  • Tune sampling. Temperature around 0.8 to 1.0 suits fiction. If the model repeats phrases, raise the frequency or presence penalty a little. They are passed through.
  • Use stop sequences so the model does not write your lines for you, for example a stop on your character's name followed by a colon.

Fixed seeds are passed through as well, which helps when you want to replay a scene and compare two prompt versions.

Common problems and quick fixes

These are the issues people hit most often in long chats, with the setting that usually helps.

  • The model speaks for you. Add a line to the system prompt, plus a stop sequence on your character's name.
  • Replies grow longer every turn. The model copies the length of earlier replies. Lower max_tokens, edit one long reply down by hand, and the pattern resets.
  • Repeated phrases. Raise temperature slightly, add a small presence or frequency penalty, and vary your own messages. The model mirrors what it sees.
  • Forgotten details. Put facts that must survive, such as names, injuries and promises, in a short pinned note near the top of the prompt, and refresh it when the story changes.
  • Flat tone. Give a stronger voice example. Tone comes from examples much more than from adjectives.

When something odd happens, print the full message list your script sends. Nine times out of ten the cause is visible in the prompt itself: a leftover instruction, a duplicated summary, or history that was not trimmed.

Limits and errors you may hit

A full key allows 8 concurrent requests and 300 requests per minute, the trial key 2 and 60. If you go over, the API returns HTTP 429. The error code rate_limited means too many requests per minute, and concurrency means too many at once. A 429 with a Retry-After: 5 header signals temporary overload, so wait five seconds and retry.

One detail catches people: a streamed request holds its concurrency slot until the stream finishes. If you click regenerate three times fast on a trial key, the third attempt can fail with concurrency. Wait for the stream to end or let the client retry after a short pause. Every response also carries X-Balance-USD, so your script can print the remaining balance after each turn.

A rule that does not change: the model is tuned to answer without content refusals for lawful adult use, and it will not write sexual content involving minors. Keep your stories on the right side of that line. Prompts are not used for training.

Questions and answers

Is there a permanently free tier?

No. The free part is the $0.50 trial credit you can claim once per person after sign-up. After that you pay per token from prepaid credit, starting with a $20 top-up.

Which apps can I use for roleplay?

Any app or script that lets you set an OpenAI-compatible base URL, an API key and a model name. SillyTavern is the common choice, and a short Python loop works too.

Will the model refuse in-character scenes?

The model is tuned to answer without content refusals for lawful adult use. It will still not produce sexual content involving minors, and that limit cannot be changed.

How do I keep a long story from getting expensive?

Keep the prompt short. Summarise old turns, cap how much history you send, and set a sensible reply length. Input tokens are the larger part of the bill in long chats.

Your key is one form away

Create an account, copy the key, change the base URL. That is the whole setup.

Get API key