# 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.

Published 2026-08-25 · eroq.ai — canonical: https://eroq.ai/blog/introducing-eroq


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](/blog/why-roleplay-needs-its-own-tuning).

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](/legal/aup).

## 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](/docs/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.
