brime

How research works

What you can expect from one /v1/research call — quality, latency, citations, streaming.

POST /v1/research is built to feel like one call but deliver the quality of a hand-curated brief. You send a question, you get back a synthesised answer with citations — typically in 30 to 90 seconds.

Under the hood, Brime runs an iterative agent that plans the right sub-queries, gathers fresh evidence from across the open web, and writes a tight answer with every claim sourced. You never need to choose models, tune knobs, or wire up a multi-step pipeline yourself.

What you get back

Every research response carries the same shape:

  • answer — a synthesised, sourced answer to your question.
  • sources — the ranked evidence the answer is built on, with title, URL, snippet, score, and published_date where available.
  • steps — a compact trace of which sub-queries fired in each round, useful for debugging and observability.
  • request_id / credits_used / latency_ms — the metadata your pipeline needs for tracing, billing, and SLOs.

Quality guarantees

  • Multi-round refinement. When the first pass doesn't have enough signal to answer confidently, Brime keeps researching until it does — up to a tuned round budget. You don't pay extra for the extra rounds.
  • Citations on every claim. Every sentence in the answer ties back to one or more sources. Hallucination is minimised by design: the synthesiser only sees evidence we actually retrieved.
  • Freshness aware. Recency is part of the planner's signal. Ask about something that happened today and the agent favours today's sources over older ones, automatically.
  • Citation-clean answers. No mid-paragraph footnote markers cluttering the prose — references live in the sources array, keyed by index.

Latency you can plan around

Typical wall-clock: 30–90 seconds end-to-end. Two factors move the needle:

  • Repeating the same (or near-same) question hits a warm cache — identical follow-up calls complete in well under a second.
  • Open-ended questions with vague scope take longer than tight, well- scoped questions. "Compare X vs Y for use case Z" is faster than "what should I know about X".

If you need to surface progress to a human, streaming is built in.

Streaming, when you need it

Add Accept: text/event-stream (or stream: true in the body, or use the SDK's research_stream method) and Brime emits a live event for every step. You can render a "Researching: …" status, paint sources as they're discovered, and reveal the answer the moment it's ready.

The event vocabulary is small and stable:

EventWhenSurface as
intentThe agent has parsed your questionResearching: <query>
tool_callA round of search startsLive status
tool_resultThat round returned evidenceResult-count badges
sourcesThe cumulative source list updatesProgressive bibliography
finalThe synthesis is readyPaint the answer
doneStream ends cleanlyClose your reader

If the connection drops, reconnect with the standard SSE Last-Event-ID: <n> header — Brime replays anything you missed, then continues live. Drop-tolerant by default.

For the full event schema (including error and timeout shapes), see Status & streaming.

Costs and limits

  • Flat 5 credits per call, regardless of how many rounds the agent decides to run. No per-round surprises.
  • Polling status or streaming events is free — no double-billing for the long-running view.
  • The single bound on call duration is a 10-minute soft alarm. Practically, every successful call finishes well within that.
  • Errors are never billed. A 401 / 429 / 5xx response carries credits_used: 0.

When research is the right tool

You wantUseWhy
URLs to feed elsewherePOST /v1/search (0.5 cr)Cheaper, faster, single-tier SERP.
Full page text from URLs you already havePOST /v1/extract (1 cr/URL)Direct fetch + clean.
A complete, sourced answer to a questionPOST /v1/research (5 cr)Multi-round agent, citations included.

If you find yourself orchestrating search → extract → LLM-synthesis by hand, that's the loop research replaces.

See also