Request parameters
The Grove API is a zero-injection passthrough: your request body is forwarded to the model exactly as you send it. We do not rewrite your messages, inject a system prompt, or run a classifier over your content. Only a handful of transport-controlled fields are touched, and every change is listed here.
If a parameter isn't in the tables below, it passes straight through to the model unchanged.
Passed through untouched
These are forwarded verbatim. Support for any individual field is model-dependent — an unsupported value is handled by the model, not by us.
| Field | Notes |
|---|---|
messages |
Forwarded exactly, including system / developer roles and multi-part content. |
temperature, top_p |
Sampling controls. |
frequency_penalty, presence_penalty |
Repetition controls. |
stop |
Stop sequences. |
seed |
Best-effort determinism, where the model supports it. |
n |
Number of choices. |
logprobs, top_logprobs |
Token log-probabilities in the response. |
reasoning_effort |
Depth control on reasoning models — see Reasoning models. |
tools, tool_choice |
Function calling — see Structured output. |
response_format |
JSON mode / schema — see Structured output. |
stream |
Enables SSE — see Streaming. |
Managed by the proxy
A few fields are set or adjusted for transport and safety. This is the complete list — nothing else is altered.
| Field | What happens | Why |
|---|---|---|
model |
Resolved to the target model behind your public id. Your public id is echoed back in the response. | Public ids are stable and never expose an internal slug. |
service_tier |
Stripped, then re-applied as priority only for a turbo request on a turbo-capable model. On models without a turbo variant it's ignored (standard rate). |
Priority routing is opt-in per request — see Turbo. |
stream_options.include_usage |
Force-set to true whenever stream: true, so the final chunk always carries a usage summary. |
You always get token counts back; billing is accurate regardless. |
max_tokens / max_completion_tokens |
Clamped to 32,768 if you request more. Lower values are honored as sent. | A hard output-token ceiling. The request still succeeds. |
There is no separate content-safety layer on this API. What you send is what the model receives. You are responsible for your inputs under the Terms of Use.
What comes back
usagecarries the standard OpenAI keys only:prompt_tokens,completion_tokens,total_tokens, and (when present)prompt_tokens_details/completion_tokens_details. Cached-input counts appear underprompt_tokens_details.cached_tokens— see Prompt caching.- Cost is not returned in the response body. Track spend and per-model cost on your Usage page; the response stays a clean OpenAI object.
x-request-id(areq_pgs_...value) is on every response — successes and streams included, not just errors. Quote it if you contact support. See Errors & retries.