# Fast mode

> A quick, sourced answer in a fraction of the time — same guardrails.


Fast mode trades depth for speed. Instead of the full study agent — which explores
sources, builds chains, and can take minutes — a fast turn performs **one bounded
source search** and returns a **concise answer with a verified quote**, in the
language you asked in.

What stays exactly the same: every answer is grounded in real, retrievable sources
(never fabricated citations), the Chabad chossid frame applies, and practical
halachic questions get learning-context answers with a "ask your rav" boundary —
fast never means loose.

## Selecting fast mode

Three equivalent ways — use whichever your client makes easy:

<CodeGroup>

```bash curl
curl https://api.rav.chat/v1/chat/completions \
  -H "Authorization: Bearer $RAVCHAT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "ravchat",
    "mode": "fast",
    "messages": [{"role": "user", "content": "Where does the Alter Rebbe define bittul?"}]
  }'
```

```python Python (OpenAI SDK)
# Top-level custom fields go through extra_body;
# or use the metadata form below — no extra_body needed.
completion = client.chat.completions.create(
    model="ravchat",
    messages=[{"role": "user", "content": "Where does the Alter Rebbe define bittul?"}],
    extra_body={"mode": "fast"},
)

# metadata form (passes through every OpenAI SDK):
completion = client.chat.completions.create(
    model="ravchat",
    messages=[{"role": "user", "content": "Where does the Alter Rebbe define bittul?"}],
    metadata={"ravchat": {"mode": "fast"}},
)
```

```javascript JavaScript (OpenAI SDK)
const completion = await client.chat.completions.create({
  model: "ravchat",
  messages: [{ role: "user", content: "Where does the Alter Rebbe define bittul?" }],
  // @ts-expect-error RavChat extension field
  mode: "fast",
});
```

</CodeGroup>

`fast: true` is accepted as an alias for `mode: "fast"`; if both are present,
`mode` wins.

## What a fast answer looks like

- **Shape**: the answer first (a few sentences), then the source — quoted verbatim
  in the original with a translation and its canonical reference — then at most a
  one-line takeaway.
- **One retrieval pass**: fast mode searches the Chabad corpus (Igros Kodesh,
  Likkutei Sichos, Toras Menachem, Shulchan Aruch HaRav, and more) or resolves a
  specific reference (a pasuk, a Tanya chapter) directly. It does not run
  multi-round research.
- **Honest limits**: if one pass can't verify a source for your question, the
  answer says so plainly and suggests a standard-mode turn — it will not pad or
  invent.
- **Depth on demand**: for full shakla v'tarya, cross-references, and source
  chains, use standard mode (omit `mode` or set `"standard"`).

## Billing and limits

Fast turns bill actual usage like any other turn — `usage.cost` on the response
(and the `x-ravchat-credits` header) reports the exact charge, which is typically
a small fraction of a standard research turn. Rate limits and concurrency follow
your plan, same as standard mode.

<Note>
Fast turns are best used stateless: send your full conversation in `messages`.
Session affinity (`metadata.ravchat.session_id`) works, but mixing fast and
standard turns in one long-lived session keeps no shared server-side transcript
between the modes.
</Note>
