blog · Aug 25, 2026 · 2 min

Introducing eroq — expressive AI in one credit-metered API

The models we run in production for millions of roleplay conversations are now an API. Chat, image, video and voice, flat credit pricing, docs generated from the spec.


For two years we have been building consumer character products: chat that stays in persona for hundreds of messages, galleries rendered overnight, voice lines that ship with the reply. The models, the sampling, the retry logic, the pricing meter — all of it exists because our own products beat on it daily.

Today that stack becomes an API. eroq exposes six models behind one key:

  • RP+ (eroq-rp-plus) — our flagship roleplay model. 3 credits per completion.
  • RP mini (eroq-rp-mini) — the high-volume tier. 1 credit per completion.
  • Image One (eroq-image-one) — 1024×1024 text-to-image. 10 credits.
  • Motion One (eroq-motion-one) — 5–10s video clips. From 100 credits.
  • Voice One (eroq-voice-one) — studio-grade TTS. 3 credits per 100 characters.
  • Scribe One (eroq-scribe-one) — transcription. 5 credits.

Why credits

Per-token pricing is precise and hostile. Nobody planning a product knows what "$2.40 per million output tokens" means for their unit economics until they have shipped, measured, and been surprised.

So we price the way we wished someone had priced for us: every call has a flat cost in credits. A completion is 1 or 3 credits whether the scene ran long or short. An image is 10, always. You can compute your margin on a napkin before writing a line of code — and a failed generation refunds itself, because paying for nothing is absurd.

Credits are prepaid, start at $10 for 1,000, and never expire.

Why "expressive"

General-purpose assistants are tuned to be helpful, brief, and careful. Character products need the opposite: models that commit to a persona, write with texture, and do not break the fourth wall to apologize. RP+ is tuned for exactly that — the tuning is its own story.

The same philosophy runs through the visual and audio models: they are chosen and configured for creative range. Fiction for adult audiences renders instead of hitting a refusal wall, inside the hard limits of our acceptable use policy.

The parts we sweated

The shape is boring on purpose. Requests follow the OpenAI convention where one exists. Most client code ports by changing the base URL, the key, and the model id.

Docs cannot drift. Reference pages, openapi.json and llms.txt are generated from the same spec object the endpoints charge from. If the docs say 3 credits, the meter says 3 credits, because they are the same line of code.

Streaming is first-class. stream: true gives you standard SSE chunks, and a final usage event carries the meter before [DONE].

Nothing is retained. Generated media returns inline in the response and is not stored on our side. Your outputs are yours; keep what you want to keep.

Start now

Sign up, mint a key, and the quickstart has you at a first completion in one curl. New accounts carry 50 free credits — enough to try every model before a card ever enters the picture.

We built this because we needed it. If you are building a character product, you probably do too.

Build with the models behind this post — get an API key (50 free credits).